Search

네이버 부스트캠프 웹・모바일 10기 멤버십 10주차 회고

생성일
2025/11/02
URL
네부캠 10기 학습 스프린트 마지막 주차인 10주차에 접어들었습니다. (라임 맞추기)
그룹 프로젝트 전 마지막 미션이였기 때문에 그 어느 때보다 몰입해서 부족한 부분을 채우기 위해 노력했습니다.
지난 10주를 요약하면 ‘질풍노도’의 시기를 보냈다로 요약할 수 있겠네요.
하루를 알차게 보내 뿌듯했었던 날도 있었고, 학습과 구현이 만족스럽지 않아서 방황하던 시기도 있었습니다.
하지만, 매주 만나는 새로운 동료들 덕분에 좋은 자극을 받으면서 포기하지 않고 꾸준히 나아갈 수 있었습니다.
이제 학습 스프린트는 끝이 났고 그룹 스프린트로 넘어가게 되었습니다.
지난 10주를 돌아보며, 나는 팀원으로서 어떤 기여를 할 수 있을지 고민하며 한 주를 마무리했습니다.

 무엇을 배웠나!

액세스 토큰을 어디에 저장하는게 좋을까?

OAuth 로그인 기능을 구현하면서, 토큰을 어디에 저장하고 어떻게 관리할지에 대해 고민했습니다. 액세스 토큰은 사용자 인증이 필요한 모든 요청에 사용되므로, 보안과 사용자 경험을 고려할 때 어떤 선택이 적절한지를 고민하게 되었습니다.
처음에는 액세스 토큰을 httpOnly와 secure 옵션이 적용된 쿠키에 저장하는 방법을 고려했지만, 이 경우 Bearer 방식으로 요청에 사용하기 어렵다는 단점이 있었습니다. 다음으로 로컬 스토리지에 저장하는 방법을 검토했지만, XSS 공격으로 토큰이 탈취될 위험이 있어 선택지에서 배제했습니다. 마지막으로 인메모리(private 변수) 방식도 검토했지만, 새로고침 시 로그인 상태가 유지되지 않아 매번 서버와 통신해야 하는 성능 문제가 있었습니다.
동료분들과 리뷰어님의 의견을 종합했을 때, 현실적으로 클라이언트에서 사용할 수 있는 저장 공간(인메모리, 스토리지, 쿠키 등)에는 각각 장단점이 있고, 액세스 토큰의 만료 시간을 짧게 설정하면 보안 리스크를 어느 정도 완화할 수 있다는 결론에 도달했습니다.
따라서 최종적으로는 액세스 토큰은 만료 시간을 짧게 설정하고 액세스 토큰과 리프레시 토큰 모두 httpOnly 쿠키에 저장하기로 결정했습니다. 이에 대한 제 생각은 다음과 같습니다.
1.
브라우저와 서버(같은 도메인) 간 토큰 교환이 목적이기 때문에 Bearer 대신 쿠키를 사용할 수 있다고 생각했습니다.
2.
클라이언트가 서버에 요청할 때 쿠키가 자동으로 포함되므로, 추가적인 토큰 관리 로직이 필요하지 않습니다.
3.
httpOnly 쿠키를 사용하면 클라이언트 자바스크립트에서 접근할 수 없기 때문에 XSS 공격으로부터 토큰을 안전하게 보호할 수 있습니다.

리프레시 토큰을 어디에 저장하면 좋을까?

또한, 리프레시 토큰 관리 전략도 함께 고민했습니다. 리프레시 토큰이 외부로 유출될 경우 서버 입장에서 차단할 방법이 없다고 판단했기 때문에, 서버에서 stateless의 장점을 일부 포기하더라도 리프레시 토큰의 유효성을 검증할 수 있는 구조를 설계했습니다.
처음에는 RDBMS에 리프레시 토큰을 저장하는 방안을 고려했지만, 동료분께서 RDBMS는 디스크 기반으로 동작하기 때문에 부하가 발생할 수 있다는 점을 피드백 해주셨습니다. 대신, 인메모리 방식의 Redis를 사용하면 부하를 줄일 수 있고, TTL(Time To Live)을 통해 토큰 만료를 자동으로 처리할 수 있다는 장점이 있음을 소개 해주셨습니다.
반면, 리뷰어님께서는 규모가 크지 않은 프로젝트에서는 JWT를 아예 사용하지 않거나, 리프레시 토큰을 저장하지 않고 활용하지 않는 방법도 추천하셨습니다. 리프레시 토큰만을 위해 Redis를 도입하는 것이 오버엔지니어링이 되는지, 실제로 부하 개선에 효과가 있는지 고려해볼 필요가 있다는 의견이었습니다.
이번 경험을 통해 동료들과 기술적인 의견을 나누는 과정 자체가 큰 학습이 된다는 점을 깨달았습니다. 다양한 시각과 경험을 공유하며 지식의 빈틈을 채우고, 보다 합리적인 결정을 내릴 수 있었습니다. 이후로 저 역시 다른 동료들이 비슷한 고민을 할 때, 조금이라도 고민을 덜어드리기 위해 제 경험을 적극적으로 공유해보려고 노력하고 있습니다.

 무엇이 아쉬웠나!

동료분에게 좋은 피드백을 드리지 못한 점

이번 한 주를 되돌아봤을 때 가장 아쉬웠던 점은 동료들에게 좋은 피드백을 드리지 못했다는 점이었습니다. 같은 스터디 그룹을 했던 동료들은 3주차 미션을 고민하고 있는 반면에, 저는 2주차 미션을 고민하고 있었기 때문에 피드백을 드리기가 쉽지 않았습니다. 괜히 내가 모르는 내용에 대해서 잘못된 피드백을 드릴까봐 침묵을 택하기도 했습니다.
복기를 해보자면 전공 시간에 배웠던 CS 개념들에 대한 지식이 부족해서 동료가 나눈 고민을 머릿속에서 충분히 그려보지 못햇던 것이 아쉬웠습니다. 예를 들어, DB 트랜잭션이나 동시성 문제에 대한 이야기를 들었을 때, 관련 개념이나 흐름이 완전히 머릿속에 잡혀 있지 않으면 구체적으로 피드백을 드리기가 어려웠습니다.
이번 경험을 통해 깨달은 점은 딥다이브를 하는 경험도 중요하지만 넓고 얕게 아는 경험도 함께 쌓아야 피드백을 주는 데 큰 도움이 된다는 것입니다. 즉, 한 가지 주제나 기술에만 깊게 몰입하기보다는 다양한 개념과 기술의 흐름을 가볍게라도 이해하고 있어야 동료의 고민을 빠르게 이해하고 공감하면서 의미 있는 의견을 나눌 수 있다는 것을 느꼈습니다.

 지난 10주 동안 무엇에 집중했나!

1. 나의 강점과 약점 파악하기

저는 10주간 동료들의 피드백들을 모아서 공통적으로 언급된 키워드를 정리해 내 강점과 약점이 무엇인지 객관적으로 파악하고자 했습니다.
그 결과 저의 강점은 편안한 분위기 주도, 문서화, 경청이었고, 약점은 다양한 시도 부족, 딥다이브 부족, 문제 해결 과정의 구체화 부족으로 나타났습니다. 이를 종합하면, 저의 강점은 ‘함께 자라기’, 약점은 ‘전문성 기르기’로 정리할 수 있었습니다.
저는 강점을 유지하면서도 약점을 보완하기 위해, 멤버십 후반부에는 익숙하지 않은 방식으로 문제를 해결해보거나, 하나의 주제를 깊게 탐구하는 경험을 시도했습니다. 또한 PR 문서 작성 시 학습 내용과 구현 결과뿐만 아니라, 문제를 어떻게 정의하고 어떤 과정으로 구현했는지를 자세히 기록하려고 노력했습니다.
그 과정이 순탄하지는 않았지만 강점을 활용하면서도 부족한 부분을 점진적으로 보완하는 학습 습관을 기를 수 있었습니다.

2. 결과보다 과정에 집중하기

멤버십 중반부에 학습 번아웃을 겪은 적이 있었습니다. 내가 받아들일 수 있는 학습 용량은 제한돼있는데, 주변에서는 정보가 쏟아져 들어오니 점점 과부하가 오기 시작했습니다. 그러다보니 기존에 계획했던 학습 목표를 달성하는 데만 집중하게 되었고, ‘왜 이걸 배우는지’, ‘어떻게 성장하고 있는지’를 돌아볼 여유가 없었습니다.
이후에는 목표를 채우는 것보다 매일의 학습 과정을 기록하고 돌아보는 것에 집중했습니다. 오늘 이해한 개념 하나, 해결한 에러 하나라도 기록하며 과정 자체에 집중하기 시작했습니다. 그때부터는 “구현을 해야한다”는 부담감 대신 “조금씩 나아가고 있다”는 확신이 생겨서 꾸준히 학습을 이어갈 수 있는 원동력이 되었습니다.

3. 항상 Why 생각하기

부스트캠프에 입과하기 이전에는 부끄럽지만 당장 관심있는 것, 재미있는 것 위주로 학습을 진행했습니다. 하지만 부스트캠프에서 여러 미션들을 해결하면서 내가 흥미 있는 기술만 공부하는 것에는 한계가 있다는 점을 깨닫고 점차 넓고 얕게 다양한 기술을 접하며 시야를 넓히는 학습을 시도하게 되었습니다.
이 과정에서 단순히 “어떻게 구현할까?”보다 “왜 이렇게 구현해야 할까?”를 스스로 묻는 습관이 생겼습니다. 덕분에 동료들과 이야기를 나눌 때도 “어떻게 구현했는지”를 설명하는게 아니라 어떤 근거로 그 방식을 선택했는지를 중심으로 대화할 수 있게 됐습니다.

4. 기분이 태도가 되지 않도록 하기

저는 하루에 사용할 수 있는 에너지가 남들보다 적은 사람이기 때문에, 컨디션이 좋지 않으면 집중력이 떨어지는 느낌을 받습니다. 그래서, 항상 동료들과 함께하는 시간만큼은 기분이 태도가 되지 않도록 노력했습니다.
피곤하거나 구현이 잘 되지 않는 순간에도 밝은 표정을 유지하고, 먼저 말을 걸며 분위기를 환기시키려 했습니다. 이런 태도 덕분에 스터디 그룹 내에서 자연스럽게 분위기 메이커 역할을 맡게 되었고, 동료들이 편하게 의견을 나눌 수 있는 환경을 만들 수 있었습니다.

 다음 주 목표는!

다음주 부터는 대망의 그룹 프로젝트가 시작되네요!!
지금까지는 미션을 해결하기 위해서 개인의 학습과 고민에 집중했다면,
이제부터는 팀원들과의 협업과 소통이 주된 챌린지가 될 것 같습니다. (물론 학습도 병행하면서.. )
다른 동료분들께서 제 강점으로 편안한 분위기를 잘 이끌어낸다고 많이들 말씀해 주셔서, 팀원들이 부담 없이 의견을 공유하고 고민을 나눌 수 있는 환경을 만들어 보고 싶습니다~~
(다만.. 다음 주에는 동원 예비군 일정이 있어서 그것부터 잘 마무리를 해보려고 합니다.)
동균님 장혁님 보고 계시죠..?