✅ 선택미션: 방탈출 인증 인가
인증/인가를 처음으로 구현해봤다.
사실 처음엔 꽤 의욕이 있었다. 인증/인가 자체가 웹 개발에서 중요한 개념인 만큼, 이번엔 단순히 기능만 구현하지 말고 사전 학습도 충분히 하면서 개념부터 차근차근 쌓아가보자고 생각했다.
하지만 막상 미션이 시작되자 생각보다 훨씬 정신이 없었다.
게다가 이번 미션은 매일 하나씩 PR을 제출해야 했다.
문제를 오래 붙잡고 천천히 이해하기보단, 제한된 시간 안에 계속 구현하고 제출해야 하는 흐름이었다. 그러다 보니 중간부터는 “내가 지금 제대로 이해하면서 하고 있는 게 맞나?” 싶은 순간들이 계속 생겼다.
첫째 날에는 인터셉터와 ArgumentResolver를 활용해서 로그인 기능을 구현했다.
그런데 단순히 인증 기능만 추가하면 끝나는 게 아니었다. 기존 방탈출 코드에 Member 테이블이 추가되면서 Reservation 테이블 구조도 함께 변경됐고, 그 영향이 서비스 로직 전체로 퍼졌다.
하다 보니 어느 순간부터는 인증을 구현하는 건지, 데이터베이스 마이그레이션을 하고 있는 건지 헷갈릴 정도였다.
기존 구조를 수정하는 데 생각보다 훨씬 많은 시간이 들어갔고, 결국 첫째 날 안에는 미션을 끝내지 못했다.
그날은 진짜 멘탈이 꽤 많이 나간 상태로 집에 갔던 것 같다.
둘째 날에는 전날 못 끝낸 내용을 제출하고 바로 다음 미션을 진행했다.
이번에는 모바일 환경이 추가됐을 때 인증을 어떻게 가져갈지 고민하는 미션이었다.
나는 고민 끝에 웹 환경에서는 기존처럼 세션 기반 인증을 유지하고, 모바일 환경에서는 토큰 기반 인증을 사용하는 방향으로 구현했다.
물론 인증 방식이 두 개가 되면 복잡도는 올라간다.
그래도 각 환경에 맞는 장점을 살릴 수 있는 구조라고 생각했고, 구현하면서도 나름 납득이 갔다. 첫째 날에 비하면 훨씬 순조롭게 진행됐고, 제출도 무난하게 마칠 수 있었다.
그리고 대망의 셋째 날.
이번에는 인가 기능이 추가됐는데, 여기에 가게(Store) 도메인까지 새롭게 들어오면서 또 한 번 구조 변경이 필요해졌다.
이미 이전부터 테이블 구조 수정과 도메인 변경으로 머리가 복잡한 상태였는데, 여기서 또 마이그레이션 작업이 겹치니까 진짜 멘탈이 제대로 터졌다.
결국 마지막엔 그냥 codex로 딸깍해버렸다…
돌이켜보면 이번 미션은 인증/인가에 대해 깊게 고민해볼 수 있었던 좋은 기회였다고 생각한다.
세션과 토큰 기반 인증의 차이도 직접 고민해봤고, 인증 정보를 어떻게 관리할지에 대해서도 이전보다 훨씬 많이 생각하게 됐다.
다만 아쉬웠던 건, 정작 인증/인가 자체에 집중하기엔 미션 외적으로 구현해야 할 것들이 너무 많았다는 점이다.
특히 새로운 도메인이 추가되면서 기존 구조를 계속 수정해야 했는데, 이 과정이 생각보다 훨씬 힘들었다.
가뜩이나 미션 자체도 해야 할 양이 많았는데 구조 변경까지 계속 겹치다 보니, 점점 “기능 구현”보다는 “기존 코드 수습”에 가까워지는 느낌도 들었다.
그래도 이번 경험 덕분에 단순히 인증 기능만 구현하는 게 아니라, 기존 시스템 위에 새로운 요구사항이 추가될 때 구조가 얼마나 쉽게 흔들릴 수 있는지도 많이 느낄 수 있었던 것 같다.
✅ 테코톡 주제 정하기 전쟁
정신 차려보니 테코톡이 3주 앞으로 다가와 있었다.
사실 원래 정했던 주제는 있었다.
웹 계층 테스트를 하는 3가지 방식, 그러니까 Postman vs MockMvc vs RestAssured를 비교하는 내용이었다. 처음엔 괜찮은 주제라고 생각했다. 실제로 미션하면서도 자주 접했던 내용이었고, 나름 정리할 거리도 많아 보였다.
근데 막상 내용을 정리하기 시작하니까 뭔가 계속 아쉬웠다.
발표 흐름이 너무 교과서적으로 흘러갔다.
“이건 이런 특징이 있고”, “이럴 때 사용하고”, “장단점은 이렇고” 같은 식으로 정리는 되는데, 정작 내가 직접 부딪히고 고민했던 경험은 잘 안 담기는 느낌이었다.
그러다 문득 예전에 선수타 때 오셨던 선배님의 말이 떠올랐다.
테코톡에서는 책이나 강의에서 쉽게 볼 수 있는 개념 정리보다는, 직접 경험하고 고민했던 내용을 이야기하는 게 훨씬 좋다는 말이었다.
그 말을 떠올리고 나니까 지금 주제로는 뭔가 부족하다는 생각이 들었다.
그래서 결국 주제를 다시 고민하기 시작했다.
처음으로 떠올린 후보는 소프트 딜리트였다.
이번 방탈출 미션에서 예약 테이블에 소프트 딜리트를 적용했었는데, 문제는 해당 테이블에 유니크 제약 조건이 걸려있었다는 점이었다.
단순히 deleted 컬럼 하나 추가한다고 끝나는 문제가 아니라, 실제로는 생각보다 고민할 부분이 많았다.
나름 삽질도 많이 했고, 이것저것 시도해보면서 해결했던 경험도 있어서 “이거 발표로 하면 괜찮지 않을까?” 싶었다.
근데 이상하게 마음이 안 갔다.
분명 경험도 있었고 기술적으로도 나쁘지 않은 주제였는데, 뭔가 발표 준비를 하고 싶은 느낌은 아니었다.
그래서 또 고민했던 게
“인터셉터는 왜 보안 계층에 적합하지 않을까?”라는 주제였다.

이건 스프링 인터셉터 공식 문서를 보다가 생긴 궁금증에서 시작된 주제였다.
처음엔 꽤 흥미로워 보였다. 단순히 “인터셉터로 인증 처리하면 안 됩니다”가 아니라, 왜 적합하지 않은지 흐름을 파보면 재밌을 것 같았다.
근데 막상 정리해보니까 생각보다 내용이 너무 짧았다. 진짜 한 5분이면 끝날 수준…
그래서 결국 다시 처음 주제로 돌아왔다.
근데 이번에는 단순히 테스트 방식 비교가 아니라, RestAssured 기반 인수 테스트 자체를 더 깊게 파보면 어떨까 하는 생각이 들었다.
특히 인수 테스트를 하면서 테스트 실행 속도 문제나 성능 개선 관련해서도 꽤 고민했던 기억이 있었다.
단순히 “인수 테스트란 무엇인가”에서 끝나는 게 아니라, 실제로 어떻게 구성했고 어떤 문제를 겪었고 어떻게 개선했는지까지 연결할 수 있을 것 같았다.
무엇보다 인수 테스트 자체가 나한테도 아직 익숙한 영역은 아니다 보니, 이번 기회에 제대로 공부해보면 의미 있겠다는 생각도 들었다.
실제로 내용 정리를 해보니까 10분 정도 분량도 딱 나올 것 같았다. 흐름도 생각보다 자연스럽게 이어졌고, 발표하면서 이야기할 거리도 꽤 많았다.
결국 최종적으로 내 테코톡 주제는 Spring Boot 인수 테스트: 개념부터 성능 최적화까지로 정했다.
진짜 이거 주제 정하는 과정 때문에 스트레스를 엄청 받았는데, 막상 정하고 나니까 오히려 후련했다. 이제 남은 건 내용 조금 더 다듬고, 발표 자료 만들고, 발표 연습 열심히 하는 것 같다. (근데 혹시 주제 반려되는건 아니겠지...? 제발요)
'우테코 8기 > 본과정 회고' 카테고리의 다른 글
| [우테코 8기 - 레벨2] 5주차 회고 (0) | 2026.06.01 |
|---|---|
| [우테코 8기 - 레벨2] 3주차 회고 (0) | 2026.05.18 |
| [우테코 8기 - 레벨2] 2주차 회고 (1) | 2026.05.10 |
| [우테코 8기 - 레벨2] 1주차 회고 (0) | 2026.05.03 |
| [우테코 8기 - 레벨1] 레벨 1 전체 회고 (0) | 2026.04.20 |