배치 vs 스트림: 언제
왜 전혀 선택
모든 데이터 시스템은 대기 시간, 비용, 지원 복잡성 및 신뢰성의 균형을 유지합니다.
배치 - 높은 대역폭과 레코드 당 저렴한 비용으로 데이터의주기적인 "덩어리".
스트림-메모리/로컬 부문에서 최소한의 지연 및 상태로 이벤트를 지속적으로 처리합니다.
모델에 대한 간단한 설명
배치
출처: 파일/테이블/스냅 샷.
방아쇠: 일정 (시간/일) 또는 조건 (새 쪽모이 세공 마루 파일).
강점: 단순성, 결정론, 전체 데이터 컨텍스트, 저렴한 큰 재계산.
약한: 실시간 신호가없는 "온라인", 높은 대기 시간, "창" 없음.
스트림
출처: 중개인 (Kafka/NATS/Pulsar), CDC, 대기열
방아쇠: 이벤트.
강력: 낮은 대기 시간, 반응성, 제품과의 자연스러운 통합.
약한: 시간 복잡성 (이벤트 대 처리), 주문/복제, 상태, 작동.
솔루션: 선택 매트릭스
규칙 80/20: SLA가 분/시간 지연을 허용하고 반응성 기능이없는 경우-배치. 반응이 "여기와 지금" 에 중요하거나 라이브 쇼케이스가 필요한 경우-스트림 (종종 + 조정을위한 추가 야간 배치).
전형적인 시나리오
배치-더 나은 경우:- 매일보고, 기간 청구, ML 교육, 대규모 결합, 중복 제거 "전체 세트".
- 깊은 검증을받은 메달리온 모델 (청동/은/금).
- 대량 백 테스트 및 상점 창 재 조립.
- 사기 방지/모니터링, SRE 경고, 실시간 잔액/미션, "지금" 권장 사항.
- EDC (Event-as-Fact) 통합, 재료 화보기 업데이트 (CQRS).
- 마이크로 서비스: 알림, 웹 후크, 비즈니스 이벤트에 대한 반응.
- 흐름은 작동 디스플레이 및 신호를 생성합니 야간 배치는 화해, 금고 및 저렴한 역사적 계산을 수행합니다.
건축
람다 (스트림 + 배치)
증분 및 온라인 스트리밍; 완전성 및 수정을위한 배치.
장점: 유연성 및 SLA. 단점: 이중 논리, 코드 복제.
Kappa (프로그램 - 스트림 + 리플레이)
진실의 원천으로서의 단일 통나무; 배치 재계산 = 재생.
장점: 하나의 코드베이스, 단일 의미론. 단점: 운영하기가 더 어렵고 로그 스토리지 요구 사항.
하이브리드-프라 매틱
무거운 결합/ML/수정을 위해 "운영 체제" + 주기적 배치 작업을 스트리밍합니다.
실제로 가장 일반적인 옵션입니다.
시간, 주문, 창 (스트림 용)
시간을 처리하지 않고 이벤트 시간에 따라 다릅니다.
워터 마크 및 '허용 _ lateness' 관리; 이후 이벤트에 대한 복귀/업서 지원.
단위 키로 분할하면 "핫 키" 를 계획하십시오.
효과의 신뢰성과 의미론
배치
배치/테이블의 데이터베이스 트랜잭션 또는 원자 교체.
이념성-결정 론적 컴퓨팅 및 덮어 쓰기/삽입 덮어 쓰기를 통해.
스트림
적어도 한 번 + dempotent 싱크 (upsert/merge, 골재 버전).
사실상 EOS에 대한 거래 "읽기 수정 위치".
'이벤트 _ id '/' operation _ id' 의 중복 테이블.
금고 및 형식
배치
데이터 레이크 (Parquet/Delta/Iceberg), OLAP (ClickHouse/Bigquery), 객체 스토리지.
원자 교체, 시간 이동을위한 ACID 테이블.
스트림
중개인, 주 상점 (RocksDB/임베디드), KV/Redis, OLTP의 로그/주제.
스키마 레지스트리 (Avro/JSON/Proto), 호환성 모드.
비용과 SLO
배치: 배치로 지불합니다. 대량으로 수익성이 높지만 지연이 일정보다 높습니다.
스트림: 일정한 런타임 리소스, 높은 QPS의 최고 비용; 그러나 몇 초 만에 SLA.
p95/p99 대기 시간, 통과 지연, cu/이벤트 비용 및 TCO 지원.
테스트
일반적인: 골든 세트, 속성 기반 불변량, 더러운 입력 생성.
배치: 보관소 비교 전/후 결정, dem 등원 재시작.
스트림: 주문 외/복제, 효과와 오프셋 고정 사이의 결함 주입, 테스트 재생.
관찰 가능
배치: 작업 기간, 실패/퇴각 공유, 상점 창의 신선도, 스캔 비용.
스트림: 시간/메시지 지연, 워터 마크, 후기 속도, 상태 크기/체크 포인트 주파수, DLQ 속도.
모든 곳: 'trace _ id', 'event _ id', 체계/파이프 라인 버전.
보안 및 데이터
PII/PCI-휴식/비행 중 암호화하고 회로의 필드를 표시합니다 ('x-pii').
스트림 용 - 상태/체크 포인트 보호, 주제에 대한 ACL.
잊을 수있는 GDPR/권리: 스트림-프로젝션의 암호 소거/편집; 배치에서-배치의 재 계산.
전환 전략
배치 → 스트림: 이벤트 게시 (전송/CDC) 로 시작하여 기존 볼트를 건드리지 않고 작은 실시간 쇼케이스를 제기하십시오.
스트림 → 배치-스트리밍 싱크에서보고/조정 및로드 감소를 위해 매일 볼트를 추가하십시오.
반 패턴
패션을 위해 "All in Stream": 실제 필요없이 비싸고 어렵습니다.
요구 사항이 <5 분인 "하나의 거대한 야간 배치".
비즈니스 지표에 처리 시간을 사용하십시오.
공개 이벤트로서의 원시 CDC: 단단한 연결성, 진화의 고통.
싱크대에서 demotency → 재시작시 이중 효과가 없습니다.
선택 체크리스트
- 신선도 SLO: 몇 초/분/시간이 허용됩니까?
- 입력 안정성: 주문 외/복제본이 있습니까?
- 온라인 반응/상점이 필요합니까?
- 비용: 런타임 24/7 vs "예약 된 창".
- 수정 방법은 철회/유예 또는 야간 재 계산입니다.
- 팀 및 운영 성숙도 (관찰 가능성, 통화 중).
- "정확히 하나의 효과" 에 대한 요구 사항.
- PII 정책/보류/잊혀 질 권리.
참조 패턴
운영 쇼케이스 (하이브리드):- 스트림: UI에 대한 EDC → 프로젝션 (KV/Redis, OLTP)
- 배치: OLAP의 야간 금고, 조정, ML 기능.
- 스트림: 세션 창, CEP 규칙, 경고 <1-5 초.
- 배치: 재교육 모델, 오프라인 검증.
- 스트림: 트리거, 실시간 세그먼트.
- 배치: 점수, LTV 모델, 보고서.
FAQ
배치에서 "거의 실시간" 을 얻을 수 있습니까?
예: 마이크로 보치/트리거 bs (1-5 분마다) -타협이지만 창/후기 이벤트의 복잡성은 없습니다.
Lambda 접근 방식은 어디에나 필요합니까?
아니요, 그렇지 않습니다. 스레드가 모든 작업을 닫고 재생 방법을 알고 있다면 Kappa가 더 쉽습니다. 그렇지 않으면-하이브리드
비용을 계산하는 방법?
합계 + 스토리지 + ops. 스트림의 경우 "24/7" 다운 타임 가격과 긴급 밤을 추가하십시오. 배치 - "기한이 지난" 데이터의 가격.
결과
저렴한 비용, 단순성 및 기간 금고가 중요한 경우 배치를 선택하십시오. 스트림-반응성과 신선도가 중요한 경우. 실제로 하이브리드가 승리합니다: 온라인 및 신호, 배치-완전성 및 저렴한 역사적 재계산을위한 스트림. 가장 중요한 것은 SLO를 설정하고 demempotency/관찰 가능성을 보장하며 수정 경로를 미리 설계하는 것입니다.