Post

Stream

실시간으로 계속 흐르는 데이터(이벤트)를 순서대로 처리하는 데이터 구조

📘 스트림(Stream)

💡 개념 설명

스트림은 실시간으로 계속 흐르는 데이터(이벤트)를 순서대로 처리하는 데이터 구조입니다.
데이터는 보통 Event 단위로 구성되어 있고, Producer가 스트림에 데이터를 보내면 Consumer가 이를 순차적으로 처리합니다.
스트림은 보통 무한히 이어지는 데이터 흐름을 전제로 하며, 지연 없이(Low-latency) 처리하는 것이 핵심입니다.

📚 참고: Streaming Data Introduction – AWS Docs
📚 참고: Apache Kafka Concepts – Kafka Docs


🔑 주요 개념

  • Event: 스트림 상에서 처리되는 기본 데이터 단위
  • Producer: 스트림에 데이터를 전송하는 주체
  • Consumer: 스트림에서 데이터를 읽고 처리하는 주체
  • Offset: Consumer가 현재 읽고 있는 데이터의 위치 (재처리 시 중요한 개념)

✨ 특징

  • 순서 보장 (Event Ordering): 데이터는 순서대로 처리됨
  • Low-latency: 수집 후 거의 실시간으로 처리됨
  • Unbounded Data: 데이터의 흐름은 끝이 없음 (무한 스트림)

vs Batch Processing

개념설명
Batch Processing데이터를 일정량 모아서 한꺼번에 처리 (예: 하루치 로그 분석)
Stream Processing이벤트가 발생할 때마다 바로 처리 (예: 실시간 클릭 트래킹)

🛠 사용이 적합한 환경

  • 실시간 로그 수집 및 분석
  • IoT 센서 데이터 수집
  • 실시간 사용자 행동 분석 (e.g. 클릭스트림)
  • 실시간 금융 거래 감시

대표적인 스트리밍 플랫폼

✅ AWS Kinesis

AWS에서 제공하는 Managed 스트리밍 서비스. 서버 관리 없이 확장 가능하며, 다른 AWS 서비스 (Lambda, S3 등)와 쉽게 연동 가능
📚 참고: Amazon Kinesis – 공식 문서

  • 실시간 데이터 수집/처리에 최적화
  • 샤드(shard) 단위로 데이터 처리 성능 확장 가능
  • CloudWatch를 통한 모니터링 가능

✅ Apache Kafka

오픈소스 기반의 고성능 분산 스트리밍 플랫폼
📚 참고: Apache Kafka – 공식 문서

  • 높은 처리량과 내결함성을 갖춘 메시지 브로커
  • Consumer Group, Partition 등을 통한 병렬 처리
  • AWS에서는 MSK (Managed Streaming for Kafka) 로도 사용 가능

🧑‍💻 스트림 처리 예시 (Kafka 기준)

```bash

Kafka 토픽 생성

kafka-topics.sh –create –topic test-topic –bootstrap-server localhost:9092 –partitions 1 –replication-factor 1

Producer 실행

kafka-console-producer.sh –topic test-topic –bootstrap-server localhost:9092

Consumer 실행

kafka-console-consumer.sh –topic test-topic –from-beginning –bootstrap-server localhost:9092

This post is licensed under CC BY 4.0 by the author.