LG U+ Why Not SW CAMP 6기 7월 5주차 회고

LG U+ Why Not SW CAMP 6기

목록 보기
14/14
post-thumbnail

7월 5주차 진행 사항

7/28(월) - 프로젝트
7/29(화) - 프로젝트
7/30(수) - 프로젝트
7/31(목) - 프로젝트
8/01(금) - 프로젝트


1️⃣ 이번 주 돌아보기

지난 주 토요일까지 학원에 나가고, 일요일 하루 쉬었더니 이번 주가 매우 길게 느껴졌다.

이번 주는 백엔드 기능 개발을 본격적으로 시작한 주였다. 지난주까지 기획 및 시스템 설계에 집중했다면, 이번 주는 그 설계를 기반으로 실제 API 구현과 기능 단위 개발에 집중했다.

우선 주 초에는 API 명세서를 다듬고, Github 기반 협업 환경과 백엔드 파일 구조를 세팅하면서 개발 시작을 위한 기반 작업을 마무리했다. 이어서 **사용자 로그인 및 회원가입 기능 개발을 시작했으며, 금요일 1교시에 있는 개발진행과정점검 발표까지 기능을 완성하는 것이 목표였다.

목요일에 코드 개발을 마친 뒤, 금요일 1교시 발표 시간에 프론트엔드와 연동하여 실제로 동작하는 모습을 시현할 수 있었다. 기획 이후 첫 통합 시현이었기 때문에, 프론트와 백엔드 간 연동을 검증하는 시간이었다.

발표 이후에 백엔드 코드를 비동기(async/await) 기반으로 전환하면서, 구조 개선에 들어갔다. 백엔드 코드 수정 후에 기존 프론트엔드 코드와 에러가 발생했고, 프론트엔드에서는 axios 사용 방식과 응답 처리 방식에 대한 수정이 필요했다. 이번 주만 임시로 프론트엔드를 맡은 팀원이 빠르게 수정을 진행한 덕분에, 안정적으로 연동되는 것을 확인할 수 있었다.


2️⃣ 새로 알게된 & 성장한 부분

이번 주 개발 과정에서 가장 많은 시간을 소모했던 부분은 인증 로직 구현, 그중에서도 OAuth2 기반 JWT 인증 흐름과 verify_token 처리 로직 구현이었다.

FastAPI에서 OAuth2PasswordBearer를 사용하면 JWT 인증을 수월하게 처리할 수 있을 거라고 생각했지만, 실제로는 다음과 같은 복잡한 문제들이 발생했다:

  • verify_token() 내부에서 토큰 검증 시 예외 처리 흐름이 익숙하지 않아, 사용자의 로그인 상태를 제대로 식별하지 못하는 경우가 있었다.

  • OAuth2PasswordBearer(tokenUrl="login") 설정이 의도대로 작동하지 않거나, Swagger에서 테스트할 때 토큰이 잘 전달되지 않는 문제가 있었다.

  • JWT 생성 시 sub 필드에 어떤 값을 넣어야 하는지, 그리고 해당 값을 어떻게 verify_token에서 추출해 사용자 정보로 연결할지에 대한 흐름을 설계하는 데 시간이 걸렸다.

  • 프론트엔드 연동 시 Authorization 헤더가 누락되거나, Bearer prefix 문제로 인해 인증 실패가 발생했다.

이러한 이슈들을 해결하면서 단순한 인증 로직 구현이 아닌, 인증 흐름의 전체 구조와 예외 처리 패턴을 설계하는 일이 생각보다 훨씬 많은 시간과 디버깅을 필요로 한다는 것을 체감했다.

지금은 로그인 성공 시 JWT 토큰을 발급하고, 이후 API 요청에 토큰을 실어 보내도록 구성되어 있다. verify_token()은 요청마다 토큰을 검증하고, 토큰에서 추출한 사용자 ID를 기준으로 DB에서 해당 사용자의 정보를 조회한다. 이 과정이 안정화되기까지 수차례 리팩토링과 테스트가 필요했다.


3️⃣ 보완해야할 부분

이번 주에 어려웠던 점은 비동기 전환 후 프론트엔드와의 통신 문제였다.

FastAPI 코드를 전부 async 기반으로 바꾸면서, 프론트엔드에서 요청이 제대로 응답되지 않거나 CORS 관련 문제가 발생했다. 백엔드 입장에서는 기능이 잘 작동하는 것처럼 보여도, 실제 프론트엔드에서 axios를 통해 요청을 날릴 경우 정상 동작하지 않는 현상이 반복됐다.

결과적으로 프론트엔드 팀원과의 빠른 커뮤니케이션을 통해 코드를 일부 수정함으로써 문제를 해결할 수 있었지만, 비동기 처리를 위한 전환이 단순한 리팩토링이 아니라 시스템 전체의 동작 방식에 영향을 줄 수 있다는 점을 다시 체감했다.


4️⃣ 다음 주 계획

다음 주에는 현재 구현된 사용자 기능 외에도, 레시피 추천 로직 개발을 본격적으로 시작할 예정이다. 이를 위해 아래 항목들을 우선 순위로 정했다:

  • 사용자 선호 정보 기반 레시피 추천 로직 기획 및 설계
  • 레시피 DB 구조 재정비 (필터 조건, 태그 등 고려)
  • 사용자 정보 업데이트 기능 추가
  • 추천 결과 API 구현 및 테스트
  • API 명세서 및 Swagger 문서 최신화

또한, 프론트엔드와의 연동이 매끄럽게 이어질 수 있도록, 응답 포맷 통일 및 테스트 코드 작성, 오류 처리 방식 정리도 함께 진행할 계획이다.


0개의 댓글