상위: Flink
요약
Apache Flink는 진정한 실시간 스트림 처리 프레임워크로, 이벤트 기반의 record-by-record 처리 방식으로 밀리초 수준의 초저지연을 제공합니다. 배치와 스트림 데이터를 통합한 API를 제공하며, Exactly-once 보장과 강력한 상태 관리를 지원합니다.
Flink 등장 배경
빅데이터 개념의 등장
- 2010년 _Economist_에서 "The data deluge" 특집 → 빅데이터 주목
- 데이터를 자본이나 노동력과 같은 경제적 자원으로 인식
- 2011년 _Gartner_는 빅데이터를 "21세기의 원유"라고 표현
실시간 데이터 처리 기술의 발전
- 2010년 Complex Event Processing(CEP) 기술 등장
- Twitter의 Storm, Yahoo의 S4 같은 분산 스트림 처리 시스템 개발
- Google의 MapReduce, Hadoop 프레임워크 → 대용량 데이터 처리 지원
기존 배치 처리 시스템의 한계
- 높은 지연 시간, 유연성 부족
- 오류 발생 시 전체 배치에 영향
- 리소스 및 데이터 품질 관리의 어려움

실시간 분석을 위한 새로운 기술 필요
- 실시간 스트림 처리 및 이벤트 기반 처리
- 배치와 스트림 데이터 통합 API 필요
- 상태 기반 연산과 체크포인트 기반 장애 복구
- Kafka → Flink → Elasticsearch (ETL) 같은 파이프라인 구성
배치 처리 vs. 스트림 처리
| 항목 | 배치 처리 | 스트림 처리 |
|---|---|---|
| 처리 방식 | 데이터를 모아서 일괄 처리 | 데이터 생성 즉시 처리 |
| 활용 예시 | 정기 리포트, 통계 분석 | 실시간 모니터링, 이벤트 감지 등 |


Spark vs. Flink
| 항목 | Spark | Flink |
|---|---|---|
| 실시간성 | 완전한 실시간 아님 | 진정한 실시간 처리 가능 |
| 처리 프레임워크 | 기본적으로 배치 기반 | 기본적으로 스트림 기반 |
| 스트리밍 모델 | 마이크로배칭 기반 | 윈도우+체크포인팅 기반 |
| 메모리 관리 | 효율적인 관리 기능 부족 | 자동 메모리 관리 기능 존재 |
| OOM 발생 가능성 | 비교적 높음 | 거의 없음 |
Yahoo 벤치마크 결과
- 설정: Kafka로 스트림 생성, 초당 50k~170k 데이터 전송
- 결과
- Spark: 130,000 events/sec에서 입력을 따라가지 못해 70초(백프레셔 미적용)~120초(적용)까지 밀림 — 원문은 이를 "스트리밍 시스템으로는 부적합(unacceptable)"한 상황으로 명시
- 이 벤치마크에 Flink의 대응 수치는 공식 보고되지 않음. 평상시(steady-state) 지연 비교는 Flink vs Spark의 Flink 1
10ms vs Spark 1001000ms 참조 (측정 시나리오가 다름)

Flink 특징
분산 스트림 처리 엔진
- 클러스터 환경에서 데이터 분산 처리
- 이벤트 단위로 지속적인 스트림 처리
- 대규모 데이터에 적합 (확장성, 병렬성 우수)
무한한 스트림 데이터를 실시간 처리
- 배치와 달리, 데이터가 생성되자마자 처리 (real-time)
- Kafka 등과 연동 → 매우 낮은 지연 시간으로 처리


Flink 장점
실시간 처리 능력
- 초당 수백만 개 이벤트를 매우 낮은 지연 시간으로 처리
정확한 결과 보장 (Exactly-once)
- 체크포인트 + 세이브포인트로 데이터 중복/손실 없이 처리
상태 관리 (Stateful Processing)
- 복잡한 이벤트 집계, 윈도우 연산, 패턴 인식에 적합
확장성과 분산 처리
- 클러스터 내 다수 노드 및 태스크 슬롯으로 애플리케이션 수평 확장
유연한 API 제공
- DataStream API, Table API/SQL, ProcessFunction 등 다양한 수준의 API 지원

Flink 활용 사례
Netflix
- 스트림 데이터를 실시간 처리
- 장애 대비: 체크포인팅 + 백프레셔 기능 적극 활용

SmartThings
- 실시간 데이터 처리 중요
- Spark보다 Flink의 실시간 모델이 더 적합
- 서버리스, 완전 관리형, 독립 실행, 주기적 저장 지정 가능 → Flink 선택

관련 개념
- Architecture - Flink 아키텍처 구조
- Flink vs Spark - Spark와의 상세 비교
- Installation - Flink 설치 및 환경 설정
- Basic Example - 기본 코드 구조 및 예제