Skip to content

[FEAT] 비동기 작업 유실 완화를 위한 Graceful Shutdown 적용#96

Closed
KoungQ wants to merge 2 commits into
developfrom
feat/#89/비동기-작업-유실-완화를-위한-graceful-shutdown-적용

Hidden character warning

The head ref may contain hidden characters: "feat/#89/\ube44\ub3d9\uae30-\uc791\uc5c5-\uc720\uc2e4-\uc644\ud654\ub97c-\uc704\ud55c-graceful-shutdown-\uc801\uc6a9"
Closed

[FEAT] 비동기 작업 유실 완화를 위한 Graceful Shutdown 적용#96
KoungQ wants to merge 2 commits into
developfrom
feat/#89/비동기-작업-유실-완화를-위한-graceful-shutdown-적용

Conversation

@KoungQ

@KoungQ KoungQ commented Apr 20, 2026

Copy link
Copy Markdown
Member

📌 제목

[FEAT] 비동기 작업 유실 완화를 위한 Graceful Shutdown 적용


📢 요약

운영 환경 재시작 시 처리 중이던 요청과 비동기 작업이 즉시 중단되며 유실될 수 있는 문제를 완화하기 위해 Graceful Shutdown을 적용했습니다.

prod 프로필에서만 애플리케이션 종료 대기 시간을 설정하고, 컨테이너가 해당 시간을 실제로 보장할 수 있도록 실행 및 종료 구성을 함께 정리했습니다. 또한 readiness/liveness
probe를 활성화해 종료 시점에 새 트래픽을 받지 않도록 운영 환경과 연동할 수 있게 했습니다.

🔗 연관 이슈: Resolves #89


🚀 PR 유형

해당하는 항목에 체크해주세요.

  • ✨ 새로운 기능 추가
  • 🏗️ 빌드 및 패키지 매니저 수정

✅ PR 체크리스트

PR이 다음 요구 사항을 충족하는지 확인해주세요.

  • 🔹 커밋 메시지 컨벤션을 준수했습니다. (Commit message convention 참고)
  • 🔹 변경 사항에 대한 테스트를 수행했습니다. (버그 수정/기능 테스트)
  • 🔹 관련 문서를 업데이트했습니다. (필요한 경우)

📜 기타

리뷰어가 알면 좋을 추가 사항을 적어주세요.

  • application-prod.ymlserver.shutdown=graceful, spring.lifecycle.timeout-per-shutdown-phase=30s를 적용했습니다.
  • application-prod.yml에 readiness/liveness probe를 활성화해 /actuator/health/readiness, /actuator/health/liveness를 운영 헬스체크 경로로 사용할 수 있게 했습니다.
  • Dockerfileexec java ... 형태로 수정해 SIGTERM이 JVM에 직접 전달되도록 변경했습니다.
  • docker-compose.ymlbackend 서비스에 stop_grace_period: 45s를 추가해 앱의 30초 종료 대기 시간을 컨테이너 레벨에서 보장하도록 했습니다.
  • 애플리케이션 시작/종료 및 readiness/liveness 상태 전환 로그를 추가해 배포 시 종료 흐름을 추적할 수 있도록 했습니다.
  • 로컬 검증은 임시 DB를 사용한 prod 프로필 기동으로 수행했습니다.
  • SIGTERM 전송 시 readiness가 REFUSING_TRAFFIC으로 전환되고, 진행 중이던 15초 요청이 200 OK로 완료된 뒤 프로세스가 종료되는 것을 확인했습니다.
  • 테스트를 위해 일시적으로 사용한 전용 엔드포인트/환경은 모두 제거했고, 현재 변경분에는 배포용 설정만 남아 있습니다.
  • Graceful Shutdown 효과를 실제 운영에서 온전히 얻으려면 LB/Ingress가 /actuator/health/readiness를 기준으로 트래픽 드레이닝을 수행해야 합니다.

@KoungQ KoungQ requested a review from ydking0911 April 20, 2026 15:25
@KoungQ KoungQ self-assigned this Apr 20, 2026
@KoungQ KoungQ added the feature label Apr 20, 2026
@KoungQ KoungQ linked an issue Apr 20, 2026 that may be closed by this pull request
@KoungQ KoungQ changed the base branch from production to develop April 20, 2026 15:26
@KoungQ

KoungQ commented Apr 20, 2026

Copy link
Copy Markdown
Member Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Apr 20, 2026

Copy link
Copy Markdown
✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant