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