[Flink] stop, force stop

succeeding·2025년 4월 30일

AWS managed flink 에서 어플리케이션의 재배포가 필요한 경우, 기존 어플리케이션을 중단이 필요합니다.

어플리케이션을 중단하는 방법엔 크게 두 가지 stop, force stop 이 있는데, 이 글에선 해당 방법이 무엇인지, 어떻게 사용해야하는지 실제 라이브 환경 대응 경험을 통해 설명합니다.

참고

GPT o3 대화를 통해 정리한 글이므로, 검증이 필요합니다.

AWS managed flink 에서만 유효한 동작 방식일 수 있습니다.

설명

Flink 어플리케이션을 재배포하기 위해선 기존의 배포를 멈춰야 하는데, 이 때 두 가지 배포 방식  stop, force stop 방식이 있음.

구분동작 방식데이터 일관성 영향
Stop (정상 중지)현재 읽은 offset 까지 처리하여 마지막 스냅숏을 생성한 뒤 종료exactly-once/at-least-once 보장 유지. 마지막 스냅숏 이후 입력 레코드는 중복 없이 재시작 가능
Force Stop (강제 중지)컨테이너를 즉시 종료시켜 현재 스냅숏 생성을 하지 않고, 상태를 이전 성공한 스냅숏으로 롤백마지막 스냅숏 이후 sink 되었던 레코드에 대해 다시 sink 될 수 있음

Flink 의 기본적인 processing 중 에러 처리 정책은 재시도 전략에 의해 재시도를 수행한 후, 지속적인 실패시 application 이 FAILED 상태로 다운되는 것.

stop 으로 application 을 중지하고자 한다면, 잘못된 쿼리로 인해 영구적인 예외를 만나서 계속해서 재시도를 하여 stop 되지 않았을 것임.

따라서, force stop 으로 application 을 중지한 후, 수정한 버전으로 재배포 진행하여 해결.

force stop 은 sink 의 중복 처리 위험이 있는데, 사용하였던 insert 쿼리가 멱등성 보장하였기 때문에 sink 가 중복되어도 문제가 없었음.

0개의 댓글