contents

아파치 플링크는 유한하거나 무한한 데이터 스트림에 대해 실시간 상태 기반(stateful) 연산을 수행하기 위한 오픈소스 분산 스트림 처리 프레임워크입니다. 핵심 특징은 데이터를 이벤트 단위로 낮은 지연 시간과 높은 처리량으로 처리하는 능력이며, 이 때문에 진정한 실시간 애플리케이션을 위한 최고의 선택지로 꼽힙니다.

비유: 만약 배치 처리가 하루가 끝날 때 주차장에 있는 모든 차를 세는 것이라면, 플링크는 고속도로에 스마트 톨게이트를 설치하여 차들이 지나갈 때마다 실시간으로 세고 분석하며, 계속해서 총계를 업데이트하고 비정상적인 교통 패턴을 식별하는 것과 같습니다.


플링크가 해결하는 핵심 문제

전통적인 데이터 처리는 배치 처리(하둡 맵리듀스 등)가 지배적이었습니다. 이 접근 방식은 일정 기간 동안 데이터를 수집한 후, 큰 배치(batch)로 처리하여 결과를 생성합니다. 문제는 지연 시간이 높다는 것, 즉 통찰력이 항상 과거의 것이 된다는 점입니다.

아파치 스파크와 같은 일부 프레임워크는 스트림을 작은 배치로 잘라 처리하는 마이크로 배치(micro-batching) 방식을 도입했습니다. 이는 지연 시간을 줄여주지만, 여전히 진정한 이벤트 단위 처리는 아닙니다.

플링크는 진정한 스트리밍 우선 엔진으로 설계되었습니다. 각 이벤트가 도착하는 즉시 수집하고 처리하여, 즉각적이고 낮은 지연 시간의 통찰력이 필요한 애플리케이션을 가능하게 합니다.


플링크의 핵심 개념


플링크 아키텍처

플링크 애플리케이션은 클러스터 위에서 분산 시스템으로 실행됩니다.


플링크 API (사용 방법)

플링크는 다양한 추상화 수준에 맞춰 계층화된 API 세트를 제공합니다.

// 예시: 5초 윈도우 내의 이벤트 카운트
stream
	.keyBy(event -> event.getUserId())
	.window(TumblingEventTimeWindows.of(Time.seconds(5)))
	.sum("value");

플링크를 특별하게 만드는 주요 특징


일반적인 사용 사례


플링크 vs. 아파치 스파크

특징 아파치 플링크 아파치 스파크
처리 모델 진정한 스트리밍 (한 번에 하나의 이벤트) 마이크로 배치 (작은 배치 처리)
지연 시간 밀리초 단위 수백 밀리초 ~ 초 단위
상태 관리 고급, 이벤트별 상태 관리 더 단순한, 배치 지향적 상태 관리
주요 초점 스트리밍 우선, 배치는 특수한 경우로 취급 배치 우선, 스트리밍은 확장 기능으로 취급

references