전체 그림부터 잡기
Flink 성능 튜닝은 결국 세 가지를 다루는 일임.
- 얼마나 많이 병렬로 돌릴지 (parallelism, 리소스)
- 각 연산이 얼마나 싸게 돌 수 있게 만들지 (Serialization, State, RocksDB, Window)
- 시스템이 버티면서 안정적으로 돌아가게 할지 (Checkpoint, Backpressure, Restart)
즉,
“빨리 + 많이 + 안 터지게”
이 세 가지를 동시에 맞추는 작업이 성능 튜닝임.
병렬도(parallelism) & 리소스 설계
Flink에서 성능을 가장 크게 바꾸는 레버는 병렬도임.
병렬도 기본 개념
- 각 operator는 parallelism을 가짐
- parallelism N → N개의 subtask가 서로 다른 slot에서 돌게 됨
- Kafka source의 경우 파티션 수와도 연관됨 (파티션 수 < parallelism 이면 일부 subtask는 할 일 없음)
병렬도 설계 포인트
- source 병렬도: Kafka 파티션 수 기준
- compute 병렬도: CPU 사용량·state 크기 기준
- sink 병렬도: 외부 시스템이 감당 가능한 TPS 기준