본문으로 건너뛰기
Databricks Blog조회 2

Apache Spark Structured Streaming: 실시간 모드(RTM)를 통한 밀리초 단위 지연 시간 구현

Apache Spark Structured Streaming의 실시간 모드(RTM)는 하이브리드 실행 모델을 통해 고처리량 ETL과 밀리초 단위의 초저지연 워크로드를 단일 엔진에서 통합합니다.

섹션별 상세

01
기존 마이크로배치 아키텍처는 배치를 작게 줄이는 것만으로는 밀리초 단위 지연 시간을 달성하기 어렵다. 로그 파일 기록, 상태 업데이트 업로드, 스케줄링 및 직렬화와 같은 고정 오버헤드가 데이터 처리 시간보다 커지기 때문에 특정 임계값 이하에서는 오히려 지연 시간이 증가한다.
배치 크기에 따른 지연 시간 변화를 보여주는 바 차트
Chart배치 크기를 극단적으로 줄였을 때(2,500 rows) 고정 오버헤드로 인해 오히려 지연 시간이 증가하는 현상을 보여준다. 이는 단순히 배치 크기를 줄이는 것만으로는 실시간 성능을 달성할 수 없다는 아키텍처적 한계를 뒷받침한다.
02
실시간 모드(RTM)는 에포크(Epoch) 기간을 늘리되 에포크 내부에서 데이터가 차단 없이 흐르도록 수정했다. 이를 통해 체크포인팅과 배리어 오버헤드를 여러 데이터에 걸쳐 분산시키면서도 마이크로배치 아키텍처의 복구 탄력성과 효율성을 유지한다.
기존 마이크로배치 실행 모델과 실시간 모드(RTM)의 실행 흐름 비교 다이어그램
Diagram기존 방식은 에포크마다 계획 수립과 실행이 반복되는 반면, RTM은 더 긴 에포크 내에서 데이터가 중단 없이 연속적으로 흐르는 구조를 시각적으로 보여준다. 이는 RTM이 어떻게 고정 오버헤드를 줄이는지 설명하는 핵심 자료이다.
03
병렬 처리 스테이지(Concurrent Processing Stages)를 도입하여 스테이지 간 대기 시간을 제거했다. 기존에는 리듀서가 모든 맵퍼의 종료를 기다려야 했으나, RTM에서는 셔플 파일이 준비되는 즉시 다음 스테이지가 처리를 시작하여 엔드 투 엔드 지연 시간을 획기적으로 단축한다.
실시간 모드에서의 병렬 스테이지 처리 구조 다이어그램
DiagramSource에서 Sink까지 데이터가 흐를 때 Concurrent Stage 1과 2가 스트리밍 셔플을 통해 동시에 실행되는 모습을 보여준다. 이전 스테이지가 완전히 끝나기를 기다리지 않고 데이터를 즉시 전달하여 지연 시간을 줄이는 메커니즘을 설명한다.
04
셔플과 같은 주요 연산자를 비차단형(Non-blocking)으로 재설계했다. 배치 모드에서 Group-by aggregation은 모든 레코드를 버퍼링한 후 결과를 출력하지만, RTM에서는 버퍼링을 최소화하고 결과를 지속적으로 생성하여 파이프라인 전체에 데이터가 끊김 없이 흐르게 한다.
05
성능 벤치마크 결과 Spark RTM은 기능 엔지니어링(Feature Engineering) 워크로드에서 Flink 대비 최대 92% 낮은 지연 시간을 기록했다. 이는 Spark가 고처리량 배치 처리뿐만 아니라 초저지연 운영 워크로드에서도 우수한 성능을 발휘함을 입증한다.
Spark RTM과 Apache Flink의 p99 지연 시간 비교 차트
ChartFeature Enrichment, Calculation, Encoding 등 주요 기능 엔지니어링 작업에서 Spark RTM이 Flink보다 최대 92% 낮은 지연 시간을 보임을 수치로 증명한다. 특히 상태 저장 연산(Stateful Join/Aggregation)에서 Spark RTM의 우위가 두드러진다.

용어 해설

구조적 스트리밍(Structured Streaming)
Apache Spark SQL 엔진을 기반으로 구축된 확장 가능하고 결함 허용이 가능한 스트림 처리 엔진이다. 정적 데이터에 대한 배치 계산과 동일한 방식으로 스트리밍 계산을 표현할 수 있게 하여 개발 복잡도를 낮춘다.
마이크로배치(Microbatch)
실시간 스트림 데이터를 아주 작은 시간 단위의 배치로 나누어 처리하는 방식이다. 고처리량 작업에 유리하지만 배치 생성 및 체크포인팅에 따른 고정적인 지연 시간이 발생한다는 특징이 있다.
체크포인팅(Checkpointing)
스트리밍 애플리케이션의 상태 정보를 영구 저장소에 저장하여 장애 발생 시 마지막 중단 지점부터 복구할 수 있게 하는 메커니즘이다. 데이터 정확성을 보장하지만 저장소 I/O로 인해 지연 시간의 원인이 된다.
셔플(Shuffle)
Spark 클러스터 내의 노드 간에 데이터를 재분배하는 과정이다. Group-by나 Join 연산 시 발생하며, 네트워크 전송과 디스크 I/O가 수반되어 스트리밍 파이프라인의 주요 성능 병목 지점으로 작용한다.

기술

  • Apache Spark
  • Structured Streaming
  • Apache Flink
  • Databricks

활용 사례

  • 실시간 사기 탐지 (Fraud Detection)
  • 실시간 기능 엔지니어링 (Feature Engineering)
  • 금융 거래 처리
  • 차량 텔레메트리 분석
AI 분석 전체 내용 보기

AI 요약 · 북마크 · 개인 피드 설정 — 무료

출처 · 인용 안내

원문 발행 2026. 03. 16.수집 2026. 03. 16.출처 타입 RSS

인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.