데이터 스트리밍이란?
데이터를 일정한 크기의 청크(Chunk) 나 이벤트 단위로 끊임없이 실시간으로 전송하고 처리하는 방식이다. AI 를 사용할 때, 스트리밍 방식으로 해두면 중간 과정을 토큰으로 받아온다. 완료 후에 보내면 사용자가 너무 오래 기다리니까, AI 와 채팅할 때 중간중간 오는 것들이 데이터 스트리밍 방식이다.
(생성 ➡️ 전송 ➡️ 렌더링)
데이터가 생성되는 즉시 처리하여 실시간성, 데이터의 시작과 끝이 정해져 있지 않고 계속 흘러가는 지속성, 메모리에 전체 데이터를 올릴 필요가 없어 효율성이 있다.
Apache Kafka, Apache Flink, Spark Streaming, AWS Kinesis 등의 도구를 통해 구현할 수 있다.
데이터가 끝난 걸 어떻게 알까?
스트리밍은 보통 이벤트 라는 신호를 주고받으며 작동한다. 데이터를 보내는 쪽이 마지막 조각을 다 보냈을 때, 받는 쪽에게 끝났다는 특수한 신호를 보낸다.
스트리밍은 필요할 때 필요한 만큼만 바로 잘라내는 방식으로, 서버나 프로그램이 파일의 특정 위치를 기억하고 있다가, 요청이 올 때마다 설정된 청크의 크기만큼만 읽어 들여보낸다.
웹에서의 사용
SSE(Server-Sent Events) 나 WebSockets 기술을 사용한다.
* 청크(Chunk) 란 ?
청크는 큰 덩어리에서 나누어진 작은 조각을 의미한다. 데이터 스트리밍이나 대용량 파일을 다룰 때, 전체 데이터를 한꺼번에 올리면 컴퓨터가 과부하로 멈출 수 있다. 이를 방지하기 위해 데이터를 다루기 쉬운 적절한 크기로 쪼갠 단위가 바로 청크이다.
청크를 사용하는 이유
1. 메모리 효율성
10GB짜리 영화 파일을 그보다 저사양의 램 컴퓨터에서 재생할 수 있는 이유는 영화를 KB 단위의 청크로 나누어 순차적으로 처리하기 때문이다.
2. 빠른 응답 속도
전체 데이터가 다 올 때까지 기다리지 않고, 첫 번째 청크가 도착하자마자 바로 처리 시작한다.
3. 네트워크 안정성
전송 중에 에러가 나더라도 문제가 생긴 특정 청크만 다시 보내면 된다.
배치 처리 란?
일정 기간 동안 데이터를 모아 두었다가 일괄적으로 처리하는 방식이다. 주로 심야 시간대나 정기적인 스케줄에 맞춰 실행된다. 프로젝트에서 심야 시간동안 데이터 처리를 진행할 때 배치로 처리한다.
많은 양의 데이터를 한번에 처리하는 데 최적화 되어 있다. 데이터가 생성된 시점과 처리되는 시점 사이에 지연이 있다.
| 구분 | 데이터 스트리밍 | 배치 처리 |
| 처리 단위 | 개별 이벤트, 청크 (Small) | 데이터 묶음 (Large) |
| 처리 시점 | 데이터가 생성되는 즉시 | 정해진 시간 (예: 매일 자정) |
| 응답 속도 | 매우 빠름 (초/밀리초 단위) | 느림 (분/시간 단위) |
| 주요 사례 | 실시간 채팅, 주식 차트, AI 답변 | 급여 계산, 월말 결산, 일일 로그 분석 |