LLM WikiAccess-protected knowledge portal

WIKI

Apache Fluss: 실시간 레이크하우스를 위한 스트리밍 스토리지 (ASF TLP 2026.08)

요약 2026년 8월 6일, Apache Fluss 가 Apache Software Foundation의 Top Level Project TLP 로 졸업했다. Incubator를 거쳐 2년 만에 정식 프로젝트가 된 Fluss는 레이크하우스 Lakehouse 아키텍처를 위한 스트리밍 스토리지 엔진 이다. 기존 레이크하우스는 Kafka 같은 메시지 큐로 스트리밍 데이터를 받아 Iceberg/Delta 같은 테이블 포맷으로 저장하는

경로human/study/content/database-frontier/90-apache-fluss-tlp-streaming-storage-lakehouse.md
카테고리Study
태그#fluss #lakehouse #mysql #storage #streaming #study #tlp

요약

2026년 8월 6일, Apache Fluss가 Apache Software Foundation의 Top-Level Project(TLP)로 졸업했다. Incubator를 거쳐 2년 만에 정식 프로젝트가 된 Fluss는 레이크하우스(Lakehouse) 아키텍처를 위한 스트리밍 스토리지 엔진이다.

기존 레이크하우스는 Kafka 같은 메시지 큐로 스트리밍 데이터를 받아 Iceberg/Delta 같은 테이블 포맷으로 저장하는 2-티어 구조였다. Fluss는 이 둘을 하나로 합친다.

핵심 특성:


배경: 레이크하우스의 스트리밍 문제

Kafka + Iceberg 2-티어 구조의 한계

현재 가장 널리 쓰이는 실시간 레이크하우스 아키텍처는 다음과 같다.

Producer → Kafka → (Flink/Spark 스트리밍 잡) → Iceberg/Delta → (쿼리 엔진)

이 구조에는 여러 운영 비용이 따른다.

Fluss가 노리는 위치

Fluss는 Kafka를 대체하거나 Iceberg를 없애는 것이 아니다. 스트리밍 레이어를 컬럼 지향으로 재설계하고, Iceberg/Paimon과는 Tiering Service로 연결해 단일 저장 계층처럼 보이도록 만드는 것이 목표다.

데이터 생산자
애플리케이션 / CDC / IoT 이벤트
↓ Apache Arrow 컬럼형 포맷으로 수신
Fluss 스트리밍 스토리지 계층
Log Table
append-only · 오프셋 순서 보장 · Arrow 컬럼형
PK Table
기본키 upsert · KV Store + Log Store 이중 구조
↓ Tiering Service (자동 오프로딩)
레이크하우스 테이블 포맷
Apache Iceberg
장기 보관 · 대규모 배치 분석
Apache Paimon / Hudi
추가 레이크하우스 포맷 지원
↓ 쿼리 엔진 통합
분석 레이어
Apache Flink · Apache Spark · Apache Doris
Apache Fluss 아키텍처 개요

핵심 개념: Log Table과 PK Table

Log Table

Log Table은 기존 Kafka 토픽과 가장 유사한 추상화다.

이 구조 덕분에 컬럼 프루닝(column pruning)이 스트리밍 단계에서 적용된다. Flink/Spark SQL에서 SELECT event_time, user_id FROM events와 같이 일부 컬럼만 사용하는 쿼리라면, 모든 컬럼을 읽어올 필요가 없어진다.

PK Table

PK Table은 기본키(Primary Key) 기반 upsert를 지원하는 추상화다.

내부적으로 두 저장소를 결합한다.

이 이중 구조로 다음 두 가지 접근 패턴을 동시에 지원한다.

패턴사용 저장소예시
최신 상태 조회KV Store사용자 프로필 포인트 룩업
변경 스트림 구독Log Store실시간 집계, Flink 스트리밍 조인

Tiering Service: 스트리밍 → 레이크하우스 자동 전환

스트리밍 데이터는 영구 보관이나 대규모 분석에 적합하지 않다. Fluss의 Tiering Service는 이 문제를 자동으로 처리한다.

동작 방식

  1. Fluss 내부의 스트리밍 세그먼트가 설정된 시간 또는 크기 임계값에 도달하면 Tiering Service가 트리거된다.
  2. 세그먼트를 Iceberg 또는 Paimon 포맷으로 변환해 오브젝트 스토리지(S3, GCS, HDFS)에 기록한다.
  3. Fluss 내부에는 최근 N시간 또는 N일치 스트리밍 세그먼트만 보유한다.

쿼리 투명성

Flink/Spark SQL에서 Fluss 테이블과 Iceberg 테이블을 별도로 쿼리할 수도 있고, Fluss가 제공하는 유니온 뷰를 통해 최신 스트리밍 데이터와 오프로딩된 히스토리 데이터를 하나의 테이블처럼 쿼리할 수도 있다.

SELECT *
FROM fluss_catalog.orders
WHERE order_date >= '2026-08-01'

이 쿼리는 자동으로 "최근 데이터는 Fluss 스트리밍 세그먼트에서, 오래된 데이터는 Iceberg에서" 읽는다.


성능: 행 지향 대비 10배 스트리밍 읽기

Fluss 팀이 공개한 벤치마크(Flink 스트리밍 잡, 12컬럼 스키마 중 3컬럼 사용 패턴) 기준:

비교 항목행 지향 스트리밍 스토리지Fluss (Arrow 컬럼형)
스트리밍 읽기 처리량1× (기준)10×
네트워크 전송량 (3컬럼 조회)전체 행 전송선택 컬럼만 전송
역직렬화 비용전체 행 역직렬화선택 컬럼만 처리

주의: 모든 컬럼을 사용하는 쿼리에서는 행 지향 대비 이점이 크지 않다. 컬럼 선택률이 낮을수록(좁은 스키마 쿼리) 효과가 크다.


Flink, Spark, Doris 통합

Apache Flink

Fluss의 1차 통합 대상이자 가장 성숙한 연동이다. Jark Wu(Flink PMC, Alibaba Cloud) 주도로 개발되었다.

Apache Spark

Spark Structured Streaming에서 Fluss를 소스로 사용할 수 있다. 배치 쿼리에서는 Iceberg 오프로딩 경유로 처리하는 것이 일반적이다.

Apache Doris

Doris(실시간 OLAP 엔진)는 Fluss PK Table의 KV Store를 직접 스캔할 수 있다. 수초 이내의 지연으로 최신 데이터를 Doris에서 집계 쿼리할 수 있다.


ASF TLP 졸업의 의미

TLP(Top-Level Project) 졸업은 Apache Software Foundation의 거버넌스 기준을 통과했음을 의미한다.

Kafka, Flink, Iceberg가 모두 ASF TLP라는 점을 고려하면, Fluss가 같은 생태계에서 표준 스트리밍 스토리지로 자리잡기 위한 조건을 갖춘 셈이다.


Kafka와 어떻게 다른가

비교 항목Apache KafkaApache Fluss
저장 포맷행(bytes)컬럼(Apache Arrow)
upsert 지원없음(외부 상태 저장소 필요)PK Table 기본 지원
레이크하우스 연동별도 커넥터/잡 필요Tiering Service 내장
SQL 쿼리ksqlDB (별도)Flink SQL / Doris 네이티브
주요 강점메시지 큐 성숙도, 생태계 광대분석 워크로드 최적화, 레이크하우스 통합

Fluss는 Kafka를 대체하기보다 분석 워크로드 특화 스트리밍 스토리지로 포지셔닝한다. 범용 메시지 큐 역할보다 레이크하우스 파이프라인의 스트리밍 레이어 역할에 초점을 맞춘다.


운영 체크리스트


요점 정리

References