구글 검색 엔진 -> 초기엔 주기적인(배치 O, 실시간 X) 페이지 검색 인덱스 정보 갱신 및 저장 -> 중간에 정보가 바뀌면 다음 갱신 전까지 잘못된 정보를 저장함 -> 실시간 데이터 처리의 필요
데이터 처리의 일반적인 단계.
- 데이터 수집 -> 데이터 저장 -> 데이터 처리.
Throughput vs. Latency.
- Throughput: 1초 동안 데이터를 얼마나 처리할 수 있는가. (처리량 관련, DW와 연관성 높음)
- Latency: 데이터를 처리하는 데 얼마나 걸리는가. (처리속도 관련, 프로덕션 DB와 연관성 높음)
- Bandwidth = Throughput * Latency.
SLA(Service Level Agreement).
- 서비스 제공 업체와 고객 간의 계약(협의).
- 특정 데이터가 특정 일시까지 얼만큼 어떤 형태로 제공되어야 한다 등.
- API의 평균 응답 시간이 99% 이상 0.5초 전에 응답이 되어야 한다 등.
실시간 처리.
- 연속적인 데이터 처리. (realtime, semi-realtime(micro batch))
- 지연 시간(Latency, 처리 속도)이 중요함.
- 배치 처리 다음의 고도화 단계.
- 실시간 데이터를 event라 부르며, 한 번 생성되면 변하지 않음.
- 이벤트 데이터를 저장하는 집합을 메시지 큐(이벤트 스트림)라고 함.
- 스트리밍 메시지 큐 종류: Kafka, Kinesis, PubSub ...
- 스트리밍 처리 기술: Spark Streaming, ...
온라인 서비스의 실시간 데이터 예시.
- Funnel Data: 프로덕트 유입 경로, 클릭 종류, 구매 종류, 회원 등록 ...
- Page Views and Performance Data: 페이지별 렌더링 시간, 디바이스 타입, 에러 이벤트, ...
- 사용자 행동 데이터들의 데이터 모델 정의와 수집이 중요해짐.
실시간 데이터 - 리테일 비즈니스.
- 재고 업데이트.
- 주문 이벤트.
- 배송 이벤트.
- 재고가 떨어지면 자동 주문 가능.
실시간 데이터 - IoT.
- 센서 판독값.
- 장치 상태.
- 알람 이벤트.
실시간 데이터 처리의 문제점.
- 데이터 처리 속도가 데이터 생성 속도를 따라오지 못하는 경우. - 메시지 큐를 도입하여 문제를 최소화.