ONE QUESTION AT A TIME.

천천히 생각하고, 분명하게.

TODAY’S QUESTION839 / 1500
인프라난이도 중하5분 답변 목표 · 보강본

preStop과 앱 drain을 넣었는데 Pod가 정리 전에 강제 종료됩니다. 종료 유예 시간은 어떻게 배분하나요?

잠깐, 답변을 보기 전에
먼저 내 말로 설명해 볼까요?

답변과 점검 포인트 펼치기답변 접기
01

구두 답변

정의를 외우기보다, 원리와 조건을 연결해 설명해 보세요.

오케스트레이터의 전체 종료 유예 시간 안에 hook·신호 처리·유입 전파·기존 작업 정리를 끝내야 합니다. 각 단계가 별도의 무한 시간을 받는다고 생각하면 안 됩니다.

동작 원리와 전제

preStop이 오래 걸리면 앱이 실제 종료 신호를 받은 뒤 남은 시간이 짧을 수 있습니다. readiness 전파와 기존 연결·메시지 fetch 중단을 구분하고 작업별 종료 상한을 둡니다. Kubernetes의 실제 버전·종료 순서를 확인합니다.

선택과 실패 처리

앱 내부 deadline은 정리·로그·DB 반환 여유를 남기도록 설정합니다. 끝낼 수 없는 작업은 내구 checkpoint나 재전달로 복구하되 외부 효과는 멱등하게 처리합니다. 강제 종료 직전 성공 ACK를 먼저 보내 누락을 만들지 않습니다.

구체적인 사례와 검증

전체 유예가 30초인데 preStop이 20초를 쓰고 앱이 30초 drain을 기다리면 계획한 정리가 끝나기 전에 강제 종료될 수 있습니다. 실제 hook·신호·네트워크 전파의 시간을 측정하고 내부 기한을 더 짧게 둡니다. 종료 중 새 자식 작업을 만들지 않도록 admission 상태와 작업 카운터 등록을 동기화합니다. 카운터 0을 확인한 뒤에도 background callback이 DB를 쓰는 경로가 있으면 풀을 먼저 닫게 될 수 있어 전체 소유권을 추적합니다. 종료 성공률은 프로세스가 사라졌다는 것보다 재시작 후 중복·누락이 없고 사용자 요청이 정한 결과로 끝났는지로 판단합니다.

긴 hook·스트림·외부 API 지연·노드 중단을 시험합니다. 정상 종료뿐 아니라 강제 종료 후 재시작 결과도 확인합니다. PDB·grace period·앱 drain은 서로 다른 보장이므로 하나를 설정했다고 전체 안전성이 생기지는 않습니다.

02

득점 포인트

이해가 드러나는 지점을 확인해 보세요.

  • 핵심 구분: 오케스트레이터의 전체 종료 유예 시간 안에 hook·신호 처리·유입 전파·기존 작업 정리를 끝내야 합니다.
  • 선택 조건: 앱 내부 deadline은 정리·로그·DB 반환 여유를 남기도록 설정합니다.
  • 검증 기준: 긴 hook·스트림·외부 API 지연·노드 중단을 시험합니다.
03

감점 포인트

놓치기 쉬운 조건과 오해를 짚어 보세요.

  • preStop과 앱 drain이 각각 전체 grace period를 따로 사용할 수 있다고 한다.
04

더 파고들 거리

하나 더 질문하며 이해의 범위를 넓혀 보세요.

  • 새 작업을 막은 뒤 진행 중 작업·공유 풀·로그를 어떤 순서로 종료하나요?
  • health 변경 뒤에도 남은 연결과 요청을 어떤 순서와 기한으로 정리하나요?
  • PDB가 조절하는 자발적 중단과 막지 못하는 장애는 어떻게 구분하나요?

득점·감점 포인트는 학습용 자기 점검 기준이며, 특정 회사의 실제 채점표가 아닙니다.

원리부터 공부하고 싶다면

답변을 보충하는 개념·예제·슈도코드를 읽어 보세요.

← 전체 질문 보기