Skip to content

첫 프로덕션 배포 - #35

Merged
byeongminbae merged 35 commits into
mainfrom
develop
Aug 12, 2026
Merged

byeongminbae merged 35 commits into
mainfrom
develop

Conversation

@byeongminbae

Copy link
Copy Markdown
Owner

No description provided.

* 프로젝트 초기 골격 셋팅

- 도메인별 컨트롤러 스켈레톤 추가 (auth/user/watch/payment/admin/stats)
- 공통 응답 포맷 추가 (SuccessResponse/ErrorResponse)
- 전역 예외 핸들러 정의
- 에러 코드 체계 정의 (CommonError, AuthError)
- Spring Security 임시 설정 추가
- SecurityConfig에 인가 정책 명시 (임시 전체 permitAll)
- User 도메인을 Member로 전체 리네이밍
- Base/HistoryBase 공통 클래스 도입, JPA Auditing 활성화
- TimeUtil 함수명을 어디에 사용하는지에 맞춰 리네이밍
- ddl-auto 전략을 환경별로 분리(초창기임을 고려한 임시 정책)
- GitHub Actions에서 Docker 이미지 빌드 후 GHCR 푸시
- 배포 번들(appspec.yml, deploy.sh, run_deploy.sh, deploy.env) 생성 및 S3 업로드, CodeDeploy 배포 트리거
- CodeDeploy 배포 실행 및 성공 여부 확인
- v1/v2 컨테이너를 번갈아 기동하는 Blue/Green 배포 스크립트 구현
- Nginx upstream 전환 및 헬스체크 통과 후 트래픽 스위칭 적용
- Spring Boot Graceful Shutdown 설정으로 트래픽 전환 시 요청 유실 방지
- 백엔드 Dockerfile 작성 및 컨테이너 상태 확인용 HEALTHCHECK 추가
- ./gradlew dependencies 실패 무시 옵션 제거
- 런타임 베이스 이미지를 amazoncorretto:25-jdk 에서 eclipse-temurin:25-jre 으로 변경
- curl 패키지 설치 스크립트 제거(이미지에 포함됨)
- HEALTHCHECK 에 잘못된 엔드포인트 수정
S3 버킷명을 Secret으로 관리하도록 변경
- GitHub Actions 파이프라인 변경
- GHCR 이미지 저장소를 ECR로 변경
- CodeDeploy 및 S3 배포 번들 제거
- 배포 스크립트 및 NGINX 포트 스위칭 로직 제거
- 백엔드 Dockerfile 위치 변경
- ECS 컨테이너 이름 변경
- 태스크 메모리 증설 및 네트워크 모드를 bridge로 변경
- application-dev.yml 에서 Parameter Store 경로를 dev 환경으로 변경
- GitHub Actions 태스크 컨테이너 이름 매핑 수정
- 컨테이너 포트 매핑 시 hostPort를 0으로 변경
- ECS 태스크 배포 시 EC2 호스트 포트 충돌 방지
- eclipse-temurin 이미지에 curl 미설치로 인한 HEALTHCHECK 실패 해결
- 프론트 홈, 로그인, 와치, 마이페이지, 관리자 화면 구현
- MUI 기반 공통 테마와 라우트별 접근 제어 추가
- 프론트 JWT 쿠키 기반 인증 상태 관리와 API 클라이언트 구성
- 잘못된 백엔드 응답에 대한 프론트 예외 처리 추가
- 깃허브 액션에서 Parameter Store를 통한 프론트 빌드 환경변수 주입
- 백엔드 CORS 설정 추가
- Codex 하네스 추가
- 프론트 Dockerfile 추가
- ECS 태스크 appProtocol 변경
- Next.js 버전을 16.2.11 에서 16.2.12 로 업그레이드
- 데이터 유무에 따라 SuccessResponse와 SuccessDataResponse 분리
- 네이버 OAuth URL 생성, 토큰 교환 및 프로필 조회 구현
- 신규/기존 회원 처리와 OAuth 정보 저장 및 JWT 발급 추가
- JWT Provider, Repository, RestClient와 인증 설정 구성
- 프론트 로그인 리다이렉트 경로 파라미터 이름 수정
- OAuth 부분 인덱스와 만료 필드 타입 변경 마이그레이션 추가
- session storage 에 일회성 state(nonce) 와 returnPath(사용자가 이전에 있었던 페이지) 를 쌍으로 저장하는 로직 추가
- 로그인 콜백 수신시 nonce 검증(CSRF 방지), JWT 쿠키 저장, returnPath 로 이동하는 로직 추가
- 백엔드 미구현 API를 명시적인 사용 불가 상태로 처리
- 프론트 개발자 도구 민감정보 로그 마스킹
- Vitest 및 Playwright 테스트 환경과 OAuth E2E 시나리오 구성
- 인증 실패 응답을 공통 JSON 형식과 UTF-8로 처리
- nullable 값을 BusinessException으로 변환하는 ifNullThrow 확장 함수 추가
- AuthenticatedUser/AdminOnly/OwnerOnly 메서드 인가 애너테이션 추가
- 인증이 필요한 API에 접근 정책 적용
- 회원 프로필 조회 구현
- JWT 발급 시 Member 엔티티 대신 회원 ID와 역할 값만 전달하도록 결합도 축소. 글로벌->도메인 패키지 참조 금지
- Swagger UI에 Bearer JWT Authorize 버튼 추가
- Date() 빈 등록 제거. 시간 의존 로직의 테스트 방식은 별도로 검토
- MemberTokenIssuer를 추가해 토큰 발급과 Member 엔티티의 refresh token 갱신을 일관되게 처리하도록 변경.(엔티티 갱신 누락 방지)
- 컨트롤러 메서드에서 JWT의 memberId를 직접 주입받을 수 있도록 어노테이션 추가(스프링 시큐리티)
- 엔티티 생성을 정적 팩토리 메서드로 통일하고 생성자 접근 범위를 private 으로 제한
- 토큰 재발급 시 refresh token을 교체하고 로그아웃 시 저장된 토큰 제거
- 회원 역할과 최근 로그인 필드를 리네이밍 하고 Flyway 마이그레이션 추가
- 프론트 회원 조회/토큰 재발급/로그아웃 API 연결
- 프론트 인증 타입과 세션 처리 방식을 변경된 백엔드 api 에 맞게 수정
- 데이라이트 테마 기반으로 홈/헤더/마이페이지등 UI 개편 및 프론트 테스트 보강
- 액세스 토큰과 리프레시 토큰이 각각 설정된 만료시간을 사용하도록 계산 오류 수정
- 토큰 응답에 리프레시 토큰 만료시간을 추가
- JWT 유효성 확인과 예외 기반 검증 메서드의 역할이 드러나도록 이름 정리
- 네이버 프로필의 공급자 식별자 필드명을 명확히 하고 OAuth 조회/저장 로직에 반영
- 네이버 로그인 URL을 scheme, host, path로 구분해 생성하도록 개선
- 네이버 콜백, 회원가입/로그인, 토큰 갱신, 로그아웃 단위 테스트 추가
- 회원 엔티티, 회원 토큰 발급기, JWT 필터/공급자, 공통 응답/예외/시간 유틸 단위 테스트 추가
- 외부 API 오류에 따라 RestClient 가 비즈니스 익셉션을 던지는 케이스 단위 테스트 추가
- mockito-Kotlin 의존성 추가
- 공통 확장 함수 파일명을 명확하게 변경
- JWT 검증 예외를 전파하고 보안 예외 처리 필터에서 오류 응답으로 변환
- 미인증 및 권한 부족 응답을 동일한 보안 필터로 통합
- 공통 HTTP 오류 응답 확장 함수를 제거하고 관련 필터 테스트를 재구성
- 로그인 후 사용자가 보던 탭으로 돌아가도록 이전 페이지 주소와 쿼리를 저장
- 로그인된 상태로 /login에 접근하면 메인 페이지로 이동
- 로그인 후 뒤로가기로 /login에 진입할 때 무한 로딩되는 문제 수정
- 로그인 안내 문구를 무료 변화 알림 중심으로 변경
- 로그인 이동 및 뒤로가기 동작 테스트 추가
- task-definition 에 헬스체크 추가
- GitHub Action 파이프라인 배포 대상에 Caddy 추가
- 브라우저 API 호출을 /bff 경로로 제한하고 Next Route Handler에서 내부 /api/v1 경로로 변환
- 인증 헤더와 쿠키, 백엔드 응답을 Next 서버에서 전달하도록 구성
- Service Connect 별칭으로 내부 백엔드에 연결하고 dev Swagger 직접 접근 예외 유지
@byeongminbae byeongminbae self-assigned this Aug 12, 2026
@byeongminbae byeongminbae changed the title 첫 프로덕트 배포 첫 프로덕션 배포 Aug 12, 2026
@byeongminbae
byeongminbae merged commit 0a3bf92 into main Aug 12, 2026
5 of 6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant