전체 그래프
Flink

Introduction

data-engineeringflinkintroductionstreaming

상위: 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 프레임워크 → 대용량 데이터 처리 지원

기존 배치 처리 시스템의 한계

  • 높은 지연 시간, 유연성 부족
  • 오류 발생 시 전체 배치에 영향
  • 리소스 및 데이터 품질 관리의 어려움

flink-0.png

실시간 분석을 위한 새로운 기술 필요

  • 실시간 스트림 처리 및 이벤트 기반 처리
  • 배치와 스트림 데이터 통합 API 필요
  • 상태 기반 연산과 체크포인트 기반 장애 복구
  • Kafka → Flink → Elasticsearch (ETL) 같은 파이프라인 구성

배치 처리 vs. 스트림 처리

항목배치 처리스트림 처리
처리 방식데이터를 모아서 일괄 처리데이터 생성 즉시 처리
활용 예시정기 리포트, 통계 분석실시간 모니터링, 이벤트 감지 등

flink-1.png

flink-2.png

Spark vs. Flink

항목SparkFlink
실시간성완전한 실시간 아님진정한 실시간 처리 가능
처리 프레임워크기본적으로 배치 기반기본적으로 스트림 기반
스트리밍 모델마이크로배칭 기반윈도우+체크포인팅 기반
메모리 관리효율적인 관리 기능 부족자동 메모리 관리 기능 존재
OOM 발생 가능성비교적 높음거의 없음

Yahoo 벤치마크 결과

  • 설정: Kafka로 스트림 생성, 초당 50k~170k 데이터 전송
  • 결과
    • Spark: 130,000 events/sec에서 입력을 따라가지 못해 70초(백프레셔 미적용)~120초(적용)까지 밀림 — 원문은 이를 "스트리밍 시스템으로는 부적합(unacceptable)"한 상황으로 명시
    • 이 벤치마크에 Flink의 대응 수치는 공식 보고되지 않음. 평상시(steady-state) 지연 비교는 Flink vs Spark의 Flink 110ms vs Spark 1001000ms 참조 (측정 시나리오가 다름)

flink-3.png

Flink 특징

분산 스트림 처리 엔진

  • 클러스터 환경에서 데이터 분산 처리
  • 이벤트 단위로 지속적인 스트림 처리
  • 대규모 데이터에 적합 (확장성, 병렬성 우수)

무한한 스트림 데이터를 실시간 처리

  • 배치와 달리, 데이터가 생성되자마자 처리 (real-time)
  • Kafka 등과 연동 → 매우 낮은 지연 시간으로 처리

flink-4.png

flink-5.png

Flink 장점

실시간 처리 능력

  • 초당 수백만 개 이벤트를 매우 낮은 지연 시간으로 처리

정확한 결과 보장 (Exactly-once)

  • 체크포인트 + 세이브포인트로 데이터 중복/손실 없이 처리

상태 관리 (Stateful Processing)

  • 복잡한 이벤트 집계, 윈도우 연산, 패턴 인식에 적합

확장성과 분산 처리

  • 클러스터 내 다수 노드 및 태스크 슬롯으로 애플리케이션 수평 확장

유연한 API 제공

  • DataStream API, Table API/SQL, ProcessFunction 등 다양한 수준의 API 지원

flink-12.png

Flink 활용 사례

Netflix

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

flink-13.png

SmartThings

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

flink-14.png

관련 개념