HowRU 프로젝트 회고 - 배포 막판에 겪은 네 가지 이슈
HowRU 프로젝트 회고 - 배포 막판에 겪은 네 가지 이슈
팀 HowRU 백엔드 레포(/Users/sung_1/Documents/멋사/howru/server)에서 배포 막판에 부딪힌 이슈 네 가지를 기록했다. 숫자 옆의 코드들은 다 커밋 해시였는데, 글 흐름만 남기고 지웠다.
1) 배포 환경 Kafka 미연결
- 증상: MSK 연결이 실패하면서 애플리케이션이 부팅 중단.
- 조치: KafkaConfig와 테스트 컨슈머에
@Profile("dev")를 붙여 운영에서는 Kafka bean을 만들지 않도록 분리. 외부 API 헬스체크도 prod에서는 실패해도 앱이 계속 뜨게 분기. 운영application.yml기본 프로필을 prod로 고정. - 결과: Kafka 장애와 무관하게 앱이 기동, 웹소켓/HTTP 경로는 정상 제공.
2) 프런트 CORS 차단
- 증상: 배포 후 프런트에서 토큰 요청이 CORS로 막힘.
- 조치: prod에서도 dev와 동일하게 origin 화이트리스트를 넓게 설정(실제 도메인 + localhost 3000/5173/8080). allowed-origins 비어 있으면 모든 origin 허용하도록 fallback 경고 추가.
- 결과: 배포 환경에서도 브라우저 요청 성공, 추가 릴리즈 없이 설정으로 해결.
3) refresh_token 길이 초과
- 증상: 소셜 로그인 후 긴 리프레시 토큰이 DB에 저장되지 않아 재발급 실패.
- 조치:
Auth.refreshToken컬럼을columnDefinition = "text"로 변경해 varchar 길이 제한 제거. - 결과: 토큰 저장/재발급 정상화, 로그아웃 없이 세션 연장이 가능해짐.
4) ddl-auto 실수로 스키마 초기화
- 증상: 운영에서
ddl-auto: create로 배포되어 테이블 재생성 위험. - 조치: 즉시
update로 롤백, 데이터 드롭 방지. - 결과: 이후 배포에서 데이터 보존, 마이그레이션은 Flyway로 별도 관리 예정.
배운 점
- 운영 프로필에서 외부 의존성 실패가 부팅을 막지 않도록 "필수 vs 옵션"을 분리해야 한다.
- CORS는 환경별 분기보다 "안전한 기본값 + 좁힐 수 있는 설정"이 실수를 줄인다.
- 토큰·로그·메시지처럼 길이 가변 데이터는 처음부터 text/clob로 잡자.
- ddl-auto는 로컬 전용. 운영은 마이그레이션 도구를 기본으로 사용한다.
다음 액션: Kafka를 다시 붙일 때는 prod 전용 설정 파일을 되살리고, MSK 자격·보안 설정을 점검한 뒤 헬스체크를 prod에서도 강제하도록 되돌릴 계획이다.
This post is licensed under CC BY 4.0 by the author.