Flink 2.0의 disaggregated state로 production 마이그레이션. RocksDB local → S3로 옮겼는데:
| 지표 | 1.x | 2.0 disaggregated |
|---|---|---|
| throughput | 1.0x | 2.4x |
| p99 처리 지연 | 1.0x | 0.32x (-68%) |
| checkpoint 시간 | 30s | 90s |
| checkpoint 메모리 | 4 GB | 1.2 GB |
throughput·지연은 만족인데 checkpoint 시간 3배 늘어서 RPO 우려. checkpoint 빈도 줄이면 복구 시간 증가, 그대로 두면 처리 영향.
어떻게 운영하나요?
환경: Flink 2.0.2, S3, jobs 12개
댓글 4
disaggregated state의 checkpoint 시간 증가는 예상된 trade-off입니다. 대신 throughput·메모리·scaling 이점이 큽니다. 운영 패턴 정리.
1. checkpoint 종류 분리 — incremental vs full
changelog 기반 incremental checkpoint. 30초 → 8초.
2. checkpoint 주기 늘리기 — 5분 → 10분
disaggregated state는 복구 시 S3에서 즉시 fetch. 1.x 대비 복구 시간 자체가 짧음. checkpoint 주기 늘려도 복구 RTO 영향 작음.
3. checkpoint concurrent 처리
2.0에서 checkpoint와 처리가 더 잘 분리. unaligned checkpoint로 backpressure 영향 최소화.
4. S3 endpoint 최적화
S3 multi-part upload size 늘리고 concurrent 증가:
5. S3 vs S3 Express One Zone
같은 region S3 Express(낮은 지연, 1/3 시간) 사용 검토. 비용 +30%이지만 checkpoint 90s → 22s.
운영 권장
저희는 1+2+3 적용 후 30초 → 12초. 복구 RTO도 3분 → 1.5분으로 단축. RPO는 10분이 충분합니다.
changelog state backend가 답입니다. 처음 도입 시 안정성 약간 우려했지만 6개월 운영 사고 없어요. 2.0.2 정도면 production ready.