Data & AI

데이터 규모와 아키텍처

meellon 2026. 7. 2. 14:30

학습 목표

volume·velocity·variety로 OLTP 한계와 분석·ML 경로 분리 필요를 판단할 수 있다.

scale-upscale-outRDB·Kafka·Spark·object storage 관점에서 비교할 수 있다.

ingest · process · store · serve 역할 분리로 파이프라인을 설계할 수 있다.

중앙 데이터 플랫폼data mesh트레이드오프를 개요 수준에서 설명할 수 있다.

문제 상황

  • 일일 2억 행 클릭 로그를 PostgreSQL에 INSERTWAL·디스크 포화, OLTP 지연 폭증
  • 야간 SELECT 리포트가 주문 API와 같은 DB — 피크에 lock·I/O 경합
  • “서버 스펙만 올리자” — 64 vCPU까지 갔는데 쓰기 TPS 천장, 비용만 증가
  • Kafka·Spark 도입했지만 한 팀이 전 도메인 파이프라인 담당 — 병목·SLA 미스
  • 데이터 레이크에 파일만 쌓음 — 누가 주문 데이터를 소유하는지·계약이 없음
  • Architecture에서 scale-out은 봤지만 — 데이터 워크로드마다 선택이 다른 이유를 모름

오리엔테이션에서 source → infer 흐름을 봤다. 이번 편은 그 경로를 분리하고 어떻게 늘리는지 — 규모·역할·조직 축이다. batch vs stream 선택은 다음 편.

1. 규모를 나누는 축

데이터 시스템은 한 번에 커지지 않는다. 세 축이 겹칠 때 OLTP·단일 cron만으로는 부족해진다.

질문 흔한 신호
Volume 얼마나 많은 데이터? TB·PB, 파티션·보관 연수
Velocity 얼마나 빠르게 들어오나? 초당 이벤트·CDC lag
Variety 형태가 얼마나 다양한가? JSON·로그·이미지·스키마 drift
Volume   — 500GB/일 이벤트, 3년 보관 → ~500TB raw
Velocity — 피크 80k events/s, end-to-end < 5 min (스트림 집계)
Variety  — 앱 이벤트 + RDB CDC + S3 export, 필드 추가 매주
  • Volume만 크면 — 배치·압축·tiered storage로 버티는 경우도 있음
  • Velocity가 크면 — 버퍼·스트림 (Kafka) 없이는 소스 DB가 먼저 죽음
  • Variety가 크면 — 스키마·품질·계보 (이후 편) 없이 downstream 깨짐
  • ELK는 로그 검색 축 — 본 시리즈는 분석·학습테이블·피처 경로

2. Scale-up vs Scale-out (데이터 관점)

Architecture 분산 기초에서 vertical vs horizontal을 봤다. 데이터 계층에서는 워크로드마다 기본 전략이 다르다.

  Scale-up Scale-out
방법 더 큰 CPU·RAM·디스크 더 많은 노드·파티션
적합 강한 일관성 단일 writer 분산 읽기·쓰기·처리
한계 hardware·비용 천장 조율·shuffle·일관성 비용

계층별 흔한 선택

계층 1차 다음 단계 비고
OLTP RDB scale-up read replica → CDC offload 분석 쿼리는 빼기
Kafka partition·broker out ordering은 partition key
Spark driver 메모리 up executor·partition out shuffle이 병목
Object storage bucket·prefix out 저렴한 무한에 가까운 용량
Warehouse warehouse size up cluster out (제품별) compute·storage 분리 추세
  • 앱만 scale-out하고 DB가 100% — 효과 없음 (병목 측정 후 스케일)
  • RDB shard는 마지막 수단에 가깝 — 이벤트·레이크읽기·분석을 빼는 편이 흔함
  • Elasticity — 배치 피크에 executor 늘리기, 스트림은 상시 partition 설계
# code/scale-signals.yaml (발췌)
signals:
  - id: oltp-saturated
    when: "CPU > 80% AND p99 write latency rising"
    first: "scale-up primary OR read replica for read-only"
    then: "move analytics off OLTP via CDC to Kafka / lake"
  - id: batch-window-slip
    when: "nightly ETL misses SLA"
    first: "bigger batch worker"
    then: "Spark scale-out + partition by date"

3. 데이터 플레인 역할 분리

한 DB에 다 넣기 vs 경로 분리. 프로덕션 ML·리포트는 보통 플레인을 나눈다.

레이어 역할 대표 기술
Source 진실·이벤트 발생 앱, 파일, CDC 이벤트
Ingest 버퍼·순서·내구 Kafka, Kinesis
Process 변환·집계·조인 Spark, Flink, dbt
Store 분석용 저장 lake, warehouse, feature table
Serve 소비 BI, API, batch scoring
OLTP (orders DB)          Analytics path
     │                           │
     ├── API (transaction)       │
     └── CDC / events ──────────► Ingest ─► Process ─► Store ─► Serve
                                       (품질·계보·멱등 — 파이프라인 전 구간)
  • OLTP짧은 트랜잭션·강한 일관성 (Database 시리즈). 다이어그램에서 별도 박스 — API 트랜잭션 경로
  • Source — 분석 경로 진입점 (앱 이벤트·파일·CDC). OLTP 복제본이 아니라 이벤트 스트림으로 합류
  • 분석 경로처리량·재처리·스키마 진화 우선
  • 같은 데이터라도 물리적으로 분리 — replica·CDC·이벤트로 동기화
  • 오리엔테이션 파이프라인 다이어그램의 Ingest~Infer가 이 레이어의 구체화

분리하지 않을 때 비용

증상 원인
리포트가 주문 느리게 OLTP와 analytics 경합
스키마 변경이 전사 장애 warehouse에 모든 도메인 무계획 적재
재처리 불가 소스만 있고 immutable raw layer 없음

4. 중앙 플랫폼 vs Data Mesh

누가 파이프라인을 만들고 누가 데이터를 소유하느냐 — 규모가 커지면 조직 문제가 된다.

왼쪽 중앙 플랫폼 — 한 팀·공유 lake/warehouse. 오른쪽 data mesh — 도메인 data product + self-serve 플랫폼.

중앙 데이터 플랫폼 (흔한 1단계)

  내용
구조 data platform 팀이 lake·warehouse·공통 파이프라인 운영
장점 표준·도구 일원화, 초기 속도
한계 도메인 증가 시 대기열·컨텍스트 부족

Data Mesh (개요)

원칙 의미
Domain ownership 도메인 팀이 자기 data product 책임
Data as a product SLA·스키마·문서·품질이 있는 소비 가능 단위
Self-serve platform 도메인이 직접플랫폼 (Kafka·Spark·catalog)
Federated governance 전사 표준은 있되 중앙만 게이트키핑하지 않음
  • Mesh ≠ “플랫폼 없음” — self-serve 플랫폼이 중요
  • 작은 조직 — 중앙 플랫폼으로 시작하고, 도메인 성숙 후 product 단위 이양
  • Team Topology의 data-platform 팀 — complicated-subsystem으로 파이프라인 제공 (Architecture)
  • 본 시리즈 Part 2 — ETL·lakehouse·품질이 플랫폼·product어떻게 채우는지
상황
스타트업·단일 제품 중앙 lake + 소수 파이프라인
도메인 10+·팀 자율 data product + federated governance 검토
규제·PII 중앙 정책 + 도메인 마스킹 책임 분리

5. 설계 체크리스트

# 질문
1 OLTP에 analytics가 남아 있지 않은가
2 volume·velocity 중 어느 쪽이 먼저 한계인가
3 scale-out 대상이 stateless 처리인가, 데이터 재배치인가
4 ingest·process·store 경계가 코드·팀으로 보이는
5 raw immutable layer가 있어 재처리 가능한가
6 도메인 소유권·data product 계약이 있는가

정리

  • 3V가 겹치면 OLTP와 분석 경로 분리를 먼저 검토
  • RDB는 scale-up·replica, Kafka·Spark·S3는 scale-out이 기본
  • 역할 분리 — source / ingest / process / store / serve
  • 조직 — 중앙 플랫폼에서 시작, 성장 시 data mesh 원칙으로 도메인 ownership 확장

다음에 다룰 것

  • Batch vs Stream
  • bounded vs unbounded, latency·throughput, use case

해당 내용은 Kleppmann — Designing Data-Intensive Applications, Dehghani — Data Mesh principles 를 기반으로 합니다.

'Data & AI' 카테고리의 다른 글

Spark Structured Streaming  (0) 2026.07.13
Spark 배치 처리  (0) 2026.07.09
Kafka 기초  (0) 2026.07.05
Batch vs Stream  (0) 2026.07.03
Data · AI 오리엔테이션  (0) 2026.07.01