Skip to content

Fix/qa - #107

Closed
choi-jin-wook wants to merge 2 commits into
mainfrom
fix/qa
Closed

Fix/qa#107
choi-jin-wook wants to merge 2 commits into
mainfrom
fix/qa

Conversation

@choi-jin-wook

Copy link
Copy Markdown
Collaborator

No description provided.

      - Base64 인코딩된 FCM 서비스 계정 키를 환경변수로 주입
      - 로컬 환경에서는 기존 classpath 자격 증명을 폴백으로 사용
      - 운영 환경에서 키 누락 시 애플리케이션 기동 실패 처리
Comment on lines +65 to +69
# FCM 서비스 계정 키. 이미지에 굽지 않고 .env.prod 의 env 로 주입받는다.
# required: 키가 없으면 기동을 깨서 배포 시점에 드러낸다(kafka.admin.fail-fast 와 같은 철학).
fcm:
service-account-b64: ${FCM_SERVICE_ACCOUNT_B64:}
required: true No newline at end of file

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fcm.required: trueapplication-aws.yml뿐 아니라 이 base application.yml에도 그대로 들어가 있습니다. application.yml은 프로파일과 무관하게 항상 로드되는 base 설정이므로, FCMConfig.java의 주석("운영(aws 프로파일)에서만 true. 키가 없으면 기동을 깨서 배포 시점에 드러낸다")과 기본값(@Value("${fcm.required:false}"))의 의도와 달리 로컬 개발/CI 환경에서도 fail-fast가 적용됩니다.

이 저장소에는 serviceAccountKey.json 파일이 존재하지 않고(.gitignore에 등록됨), FCM_SERVICE_ACCOUNT_B64 환경변수도 로컬에는 보통 없으므로, openCredentials()null을 반환 → required == trueIllegalStateException으로 @PostConstruct가 실패해 애플리케이션 컨텍스트 로딩 자체가 깨집니다. 이 PR이 새로 추가한 "키 없으면 경고 로그만 남기고 계속 부팅" 폴백 경로(log.warn("FCM 키 없음 - 푸시 비활성화 상태로 기동"))가 모든 프로파일에서 도달 불가능한 죽은 코드가 되는 셈입니다.

이 저장소는 fail-fast류 설정(예: spring.kafka.admin.fail-fast: true)을 prod(application-aws.yml) 전용으로만 두는 관례가 이미 있는데, 이번 변경은 그 관례와도 어긋납니다. application.yml(base)의 requiredfalse로 두고, trueapplication-aws.yml 쪽에만 남겨야 합니다.

Suggested change
# FCM 서비스 계정 키. 이미지에 굽지 않고 .env.prod 의 env 로 주입받는다.
# required: 키가 없으면 기동을 깨서 배포 시점에 드러낸다(kafka.admin.fail-fast 와 같은 철학).
fcm:
service-account-b64: ${FCM_SERVICE_ACCOUNT_B64:}
required: true
fcm:
service-account-b64: ${FCM_SERVICE_ACCOUNT_B64:}
required: false

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