체크포인트 후 강제 재시작으로 exactly-once 복구 확인
실습 순서
- PyFlink 스크립트에 체크포인트를 활성화한다(예: 10초 간격, exactly-once 모드).
- 잡을 다시 제출하고, Flink Web UI의 Checkpoints 탭에서 체크포인트가 주기적으로 성공(Completed)하는지 확인한다.
- 누적 카운트(예: sensor_id별 전체 이벤트 수)가 콘솔에 계속 늘어나는 걸 확인한 상태에서, `docker kill <taskmanager컨테이너>`로 TaskManager를 강제 종료한다.
- docker-compose의 재시작 정책 덕분에 TaskManager가 자동으로 다시 뜨는지, Flink Web UI에서 잡이 자동으로 RESTARTING → RUNNING으로 돌아오는지 관찰한다.
- 재시작 이후 누적 카운트가 0으로 초기화되지 않고 장애 이전 값에서 이어지는지 확인한다(마지막 체크포인트부터 복구됐다는 증거).
기대 결과
TaskManager 강제 종료 후 Flink Web UI에서 잡이 자동으로 재시작되고, 누적 카운트가 초기화되지 않은 채(마지막 체크포인트 시점 상태에서) 이어서 증가한다 — Day 3-5에서 배운 '오프셋+상태를 함께 스냅샷'이 실제로 동작하는 걸 눈으로 확인하는 실습.
Troubleshooting
TaskManager가 재시작 안 된다
docker-compose.yml의 taskmanager 서비스에 `restart: on-failure` 또는 `restart: always` 정책이 있는지 확인.
카운트가 0으로 초기화된 채 재개된다
체크포인트 설정(enableCheckpointing)이 실제로 적용됐는지, 강제 종료 전에 최소 1회 이상 체크포인트가 Completed 됐는지 Web UI에서 재확인.