핵심 인사이트 (3줄 요약)

  1. 본질: Apache Flink는 이벤트 시간(Event Time) 기반 상태 저장(Stateful) 스트림 처리 엔진으로, 배치를 스트림의 특수 케이스로 통합(Unified Processing)하며 밀리초 단위 지연(Latency)과 Exactly-once 시맨틱(Semantics)을 동시에 제공하는 진정한 실시간 처리 플랫폼이다.
  2. 가치: Spark Streaming이 마이크로 배치(Micro-batch, 수백ms~초 단위 지연)를 "스트리밍"으로 처리하는 데 반해, Flink는 이벤트 단위 네이티브 스트림 처리로 10ms 이하 지연을 달성하며, 강력한 상태 관리와 워터마크(Watermark) 기반 이벤트 시간 처리가 핵심 차별점이다.
  3. 판단 포인트: Flink를 선택하는 결정적 기준은 "이벤트 도착 순서가 보장되지 않는 환경에서 정확한 집계가 필요한가"이다. 네트워크 지연으로 이벤트 순서가 뒤섞이는 실제 분산 환경에서 워터마크 기반 이벤트 시간 윈도우가 Kafka+Flink 조합의 핵심 가치이다.

Ⅰ. 개요 및 필요성

Apache Flink는 독일 베를린 공과대학(TU Berlin) 연구에서 시작된 오픈소스 스트림 처리 엔진으로, 2014년 Apache 프로젝트로 편입되었다.

┌──────────────────────────────────────────────────────────────┐
│        Spark Streaming(마이크로배치) vs Flink(네이티브)          │
├──────────────────────────────────────────────────────────────┤
│                                                              │
│  [Spark Streaming]                                           │
│  스트림 → [배치1(1초)] → 처리 → [배치2(1초)] → 처리 ...         │
│  지연: 0.5초~수초 (배치 크기에 비례)                             │
│                                                              │
│  [Apache Flink]                                              │
│  스트림 → 이벤트1 → 처리(즉시) → 이벤트2 → 처리(즉시) ...        │
│  지연: 1ms~10ms (이벤트 도착 즉시 처리)                          │
│                                                              │
│  핵심 차이:                                                    │
│  Flink = 실시간 개별 이벤트 처리                                 │
│  Spark Streaming = 짧은 배치의 연속                             │
└──────────────────────────────────────────────────────────────┘
  • 📢 섹션 요약 비유: Spark Streaming은 1초마다 우편물을 배달하는 집배원이고, Flink는 편지가 오자마자 즉각 배달하는 퀵서비스다. 둘 다 빠르지만 긴급 편지에는 퀵서비스가 필요하다.

Ⅱ. 아키텍처 및 핵심 원리

[DataStream API / Table API / SQL]
              │
              ▼
[JobManager — 작업 스케줄링, 체크포인트 조율]
              │
         ┌────┴────┐
         ▼         ▼
[TaskManager1]  [TaskManager2]
[Task:Slot1~4]  [Task:Slot1~4]

이벤트 시간 처리와 워터마크

이벤트 시간: 12:00:01  12:00:03  12:00:02  12:00:05
                              (늦게 도착한 이벤트)
                                                
워터마크 = "현재 시각 - 최대 지연 허용(2초)"
→ 워터마크 12:00:01 = "12:00:03 이전 이벤트 모두 도착 가정"
→ 12:00:00~12:00:02 윈도우 닫기 → 집계 실행
  • 📢 섹션 요약 비유: 워터마크는 기차역의 출발 기준선이다. "마지막 탑승 기준 2분 후 출발"처럼, 지정 시간이 지나면 늦게 오는 승객(이벤트)을 기다리지 않고 집계(출발)한다.

Ⅲ. 비교 및 연결

항목Apache FlinkSpark StreamingKafka Streams
처리 모델네이티브 스트리밍마이크로 배치네이티브 스트리밍
지연1~10ms500ms~수초1~10ms
상태 관리RocksDB 대용량메모리/CheckpointRocksDB
Exactly-once
복잡 CEP✅ (Flink CEP)제한적제한적
배포 규모수천 노드수천 노드Kafka 클러스터 내
  • 📢 섹션 요약 비유: Flink는 전문 마라토너(특화된 스트리밍 처리), Spark는 철인 3종 선수(배치+스트리밍 통합), Kafka Streams는 Kafka 옆에 딸린 조깅 트랙이다.

Ⅳ. 실무 적용 및 기술사 판단

실무 시나리오: 실시간 이상 거래 탐지

금융사 카드 거래 스트림에서 이상 패턴 즉각 탐지.

  1. 데이터 소스: Kafka 토픽 (초당 100,000 TPS 카드 거래).
  2. Flink CEP 패턴: 5분 내 동일 카드 다른 국가 3회 이상 거래.
  3. 상태 저장: RocksDB Backend로 카드별 거래 이력 유지.
  4. 워터마크: 허용 이벤트 지연 30초 (네트워크 지연 고려).
  5. 결과: 이상 패턴 탐지 지연 < 50ms → 즉각 차단 API 호출.

안티패턴

  • Flink 상태(State) 크기를 무한히 늘리는 안티패턴. 영구 보관 불필요한 상태를 TTL(Time-to-Live) 없이 관리하면 TaskManager 메모리 고갈로 OOM(Out of Memory) 장애가 발생한다. 상태 만료(State TTL)와 RocksDB 상태 백엔드 조합이 필수다.

  • 📢 섹션 요약 비유: Flink 상태를 무한정 쌓는 건 창고에 물건을 계속 쌓고 버리지 않는 것이다. 창고(메모리)가 꽉 차면 아무것도 처리하지 못한다. 오래된 상태(TTL)는 주기적으로 정리해야 한다.


Ⅴ. 기대효과 및 결론

기대효과내용
초저지연이벤트 도착 즉시 처리, 1~10ms
정확한 집계이벤트 시간 + 워터마크 기반
고장 내성Exactly-once 체크포인트

Flink는 Apache Iceberg·Hudi·Delta Lake 등 오픈 테이블 포맷과의 Streaming Sink 통합이 강화되어 스트림→레이크하우스 실시간 적재 파이프라인의 표준으로 자리 잡고 있으며, Flink SQL의 발전으로 SQL 한 줄로 복잡한 스트림 처리를 표현하는 방향으로 진화하고 있다.

  • 📢 섹션 요약 비유: Apache Flink는 데이터 파이프라인의 심장 박동이다. 데이터가 심장(Flink)에 닿는 즉시 처리되어 온몸(시스템)으로 퍼져나가며, 심장이 멈추지 않도록 체크포인트(제세동기)가 항상 대기하고 있다.

📌 관련 개념 맵

개념연결 포인트
워터마크이벤트 시간 기반 윈도우 닫기 기준
RocksDB State Backend대용량 상태 저장; Flink 권장 백엔드
Exactly-once중복/누락 없는 처리 보장; 체크포인트 기반
Flink CEP복합 이벤트 패턴 라이브러리
Apache KafkaFlink의 주요 소스/싱크 메시지 큐

📈 관련 키워드 및 발전 흐름도

[Spark Streaming — 마이크로 배치 기반 스트림 처리]
    │
    ▼
[Apache Flink — 네이티브 스트리밍, 이벤트 시간, 워터마크]
    │
    ▼
[Flink CEP — 복합 이벤트 패턴 탐지]
    │
    ▼
[Flink SQL — 선언적 스트림 처리]
    │
    ▼
[Flink + Lakehouse — 실시간 스트림→Delta/Iceberg 적재]

👶 어린이를 위한 3줄 비유 설명

  1. Apache Flink는 음식이 들어오자마자 바로 요리하는 초고속 주방이에요 — 주문(이벤트)이 오면 1초도 안 돼 처리해요!
  2. 늦게 도착한 주문(지연 이벤트)도 일정 시간(워터마크) 기다려주고, 그다음에는 과감히 요리를 시작해요.
  3. 신용카드 사기 탐지, 실시간 게임 점수 집계처럼 0.1초도 늦으면 안 되는 곳에서 Flink가 활약한답니다!