엔지니어 블로그

[DE] Batch, Streaming, MicroBatch 본문

글공부

[DE] Batch, Streaming, MicroBatch

안기용 2025. 4. 8. 12:01

ETL에서는 데이터 수집 및 처리 주기(빈도)가 매우 중요합니다. 수집 주기에 따라 어떤 처리 방식을 선택할지 달라지며, 대표적으로는 다음과 같은 세 가지 방식이 있습니다.

  • Batch
  • Streaming
  • MicroBatch

이번 글에서는 각 방식의 개념과 적절한 사용 사례를 정리해보려 합니다.


1. Batch란?

Batch는 데이터를 일정 시간 동안 모아서 한 번에 처리하는 방식입니다. 예를 들어, 매일 자정에 하루치 로그를 처리하거나, 데이터 양이 일정 기준을 넘었을 때 작업이 실행됩니다.

특징

  • 데이터를 모아두었다가 일정 주기 또는 임계 데이터량을 기준으로 처리
  • 처리 시점에 시스템에 부하가 집중될 수 있음
  • 후속 작업이 처리 완료를 기다려야 하는 병목 가능성 존재

사용 예시

  • 유저 행동 로그 기반 일간, 주간, 월간 보고서
  • 주기적인 백오피스 리포트 생성

데이터 수집 시점과 분석 시점이 멀어도 괜찮은 경우에 적합합니다.


2. Streaming이란?

Streaming은 데이터가 생성되는 즉시 실시간 또는 준실시간으로 수집하고 처리하는 방식입니다. Batch처럼 기다릴 필요 없이 데이터가 도착하는 즉시 처리합니다.

특징

  • 실시간 또는 거의 실시간 처리 가능
  • 빠른 의사결정을 위한 즉각적인 데이터 반응 가능
  • 완전한 실시간은 불가능하며, 지연이 존재함
  • 시스템 구성 및 운영의 복잡성 존재

사용 예시

  • 이상 탐지 시스템
  • 실시간 광고 타겟팅
  • 주식, 금융 데이터 실시간 모니터링

데이터 수집과 분석이 거의 동시에 이루어져야 하는 상황에 적합합니다.


3. MicroBatch란?

MicroBatch는 Batch와 Streaming의 중간 방식으로, 짧은 간격(수 초 ~ 수십 초)의 작은 배치 단위로 데이터를 반복 처리합니다. 겉으로는 Streaming처럼 보이지만 내부적으로는 작은 Batch 작업을 반복 수행하는 구조입니다. 예를 들어, Spark Structured Streaming은기본적으로 MicroBatch 기반이며, 주기적으로 데이터를 모아 처리하고 checkpointLocation을 통해 상태를 유지합니다.

특징

  • Streaming에 가까운 처리 속도를 제공
  • 짧은 간격의 Batch 작업 반복 처리
  • 상태 유지를 위한 체크포인트 필요

사용 예시

  • Kafka에서 수신한 데이터를 Spark로 처리해 BigQuery에 적재하는 파이프라인

실시간성이 필요하지만 완전한 Streaming은 과도할 때 적합합니다.


"Airflow 작업 주기를 짧게 하면 MicroBatch인가요?"

이전 프로젝트에서 Airflow의 DAG 실행 주기를 짧게 설정했을 때,"그럼 이건 MicroBatch인가?" 라는 의문이 생길 수 있습니다.

이런 상황은 MicroBatch라고 하지 않습니다.

이유

  • 일반적인 Batch는 각 작업 간 연결성이 없는 독립된 처리 단위입니다.
  • MicroBatch는 스트리밍 데이터 흐름을 짧은 간격으로 끊어 연결성 있게 처리합니다.
  • Spark Structured Streaming 등에서는 checkpointLocation을 통해 이전 상태를 저장하고 이어서 처리할 수 있습니다.

즉, 단순히 실행 주기를 짧게 설정했다고 해서 MicroBatch라고 할 수는 없습니다.
핵심은 데이터 흐름의 연속성과 상태 기반의 처리 방식입니다.


정리

방식처리 방식장점단점사용 예시
Batch 일정량/시간 단위로 일괄 처리 구조가 단순하고 안정적 지연 큼, 실시간 대응 불가 리포트 생성, 주기적 데이터 적재
Streaming 실시간 데이터 수집 및 처리 빠른 반응, 실시간 데이터 활용 구현 복잡도, 인프라 비용 높음 이상 탐지, 광고 시스템, 금융 데이터 처리
MicroBatch 짧은 주기의 배치 반복 처리 스트리밍에 가까운 처리 성능 상태 관리 필요, 구현 복잡도 있음 Kafka → Spark → BigQuery 파이프라인 등

마무리

Batch, Streaming, MicroBatch는 각각의 상황과 목적에 맞게 선택되어야 합니다. 단순히 기술적인 관점만이 아니라, 데이터를 언제, 어떻게 필요로 하는지에 따라 가장 적합한 방식을 고민해야 합니다.