[시스템 디자인] 1장. 사용자 수에 따른 규모 확장성 - 3

혀어어언·2025년 9월 8일
0

10. DB 규모 확장

구분스케일-업 (Scale-Up)샤딩 (Sharding / Scale-Out)
개념단일 DB 인스턴스의 성능을 키움 (CPU, RAM, 스토리지 업그레이드)데이터를 샤드 단위로 나누어 여러 노드에 분산 저장/처리
장점단순, 강한 일관성, 트랜잭션 친화수평 확장 가능, 처리량·용량 선형 증가, 장애 격리
단점/약점하드웨어 상한선 존재, 비용 급증, 단일 장애 지점(SPOF)샤딩 키 설계 복잡, 조인/트랜잭션 제약, Resharding·핫스팟 문제
고려사항병목 진단, 레플리카·캐시 병행, 무중단 업그레이드샤딩 키 선택, Celebrity/Hotspot 완화, 안정 해시·비정규화, 리밸런싱 전략

10-1. 수직적 확장(Scale-Up)

(1) DB 스케일업 개념

  • 단일 DB 인스턴스의 하드웨어 성능을 키우는 방식
  • 더 빠른 CPU, 더 많은 RAM, 더 빠른 스토리지(예: NVMe), 고사양 인스턴스로 교체

(2) DB 스케일업 장점

  • 설계·구현 단순, 애플리케이션 코드 수정 최소화
  • 강한 일관성(ACID) 유지, 조인·트랜잭션 친화적
  • 기존 RDB 기능 그대로 활용 가능

(3) DB 스케일업 단점

  • 하드웨어 한계 존재 (성능/용량의 물리적 상한선 존재)
  • 고사양 인스턴스로 갈수록 비용 급증
  • 단일 장애 지점(SPOF) → 장애 시 서비스 전체 중단

(4) DB 스케일업 전략 구현 시 고려할 점

  • 병목 자원 정확히 진단 (CPU, 메모리, 디스크 I/O, 락 경합)
  • 무중단 업그레이드 시나리오(리플리카 승격, 스토리지 분리) 마련
  • 읽기 전용 레플리카, 캐시 병행 사용해 수명 연장

(5) DB 스케일업 전략 도입 시 고려할 점

  • 데이터·트래픽 성장 곡선이 단일 인스턴스 범위 내에서 감당 가능한지
  • 다운타임 허용도와 예산
  • 팀이 단순성을 선호하고, 트랜잭션·조인이 많은 워크로드인지

10-2. 수평적 확장(Sharding / Scale-Out)

(1) DB 샤딩 개념

  • 데이터를 파티션(샤드) 으로 나누어 여러 DB 노드에 분산 저장/처리
  • 각 샤드는 전체 데이터의 일부만 보유(수평 분할)
  • 라우팅 키(샤딩 키)에 따라 쿼리를 특정 샤드로 전달

(2) DB 샤딩 장점

  • 수평 확장성: 노드 추가로 용량·처리량이 거의 선형적으로 증가
  • 쓰기 처리량 개선: 여러 샤드 병렬 처리
  • 장애 격리: 특정 샤드 장애 시 전체 장애로 확산되지 않음

(3) DB 샤딩 단점

  • 복잡성 증가: 샤딩 키 설계, 라우팅 계층, 운영 관리 모두 난이도↑
  • 조인·트랜잭션 제약: 크로스샤드 조인 어려움 → 애플리케이션/비정규화로 보완
  • 운영 부담: 백업/복구, 모니터링도 샤드 단위로 관리

(4) DB 샤딩 약점

  • Resharding: 샤드 추가·분할·병합 시 데이터 재분배 → 온라인 마이그레이션 난이도 ↑
  • Celebrity Problem: 특정 샤딩 키(예: 인기 연예인 ID)에 트래픽 집중 → 특정 샤드 과부하
  • Hotspot Key: 특정 범위/키에만 쓰기 집중 → 불균형 발생
  • 샤드 소진: 균등 분할했으나 특정 샤드가 먼저 용량 한계 → 리밸런싱 필요(안정 해시(Consistent Hashing)기법 활용해 리밸런싱 비용 최소화)
  • 조인 문제: 크로스샤드 조인 시 성능 저하 → 비정규화/중복 데이터로 대체

(5) DB 샤딩 전략 구현 시 고려할 점

  • 샤딩 키 설계: 고카디널리티, 균등 분포, 액세스 패턴 친화적
    • Celebrity/Hotspot 방지: 해시 샤딩, 샤딩 키 솔팅 활용
  • Resharding 계획: 온라인 재분배, 더블라이트(이중 쓰기), 안정 해시 적용
  • 크로스샤드 트랜잭션 회피: 필요 시 2PC(이중 커밋), 사가(Saga) 패턴
  • 데이터 모델링: 조인 최소화 → 비정규화, CQRS/Event Sourcing 병행
  • 관측: 샤드별 모니터링(QPS, 지연, 히트율, 용량), 핫 샤드 탐지

(6) DB 샤딩 전략 도입 시 고려할 점

  • 데이터·트래픽 성장 곡선 (단일 노드 한계 도달 시점)
  • 팀의 운영 역량 (샤딩 운영 복잡성 감당 가능 여부)
  • 일관성 요구 수준 (Strong vs Eventual Consistency)
  • 비용 모델 (고성능 단일 인스턴스 vs 다수 중소형 노드)
  • 지리적 분산 요구 (멀티 리전/글로벌 서비스라면 샤딩 적합)

시스템 규모 확장을 위한 기법들

시스템의 규모를 확장하는 것은 지속적이고 반복적(iterative)인 과정이다

수백만 사용자 이상을 지원하려면 새로운 전략을 도입해야 하고 지속적으로 시스템을 가다듬어야 할 것이다

- 웹 계층: 무상태

- 모든 계층에 다중화 도입

- 가능한 한 한 많은 데이터 캐싱

- 여러 데이터 센터 지원

- 정적 콘텐츠은 CDN을 통해 서비스

- 데이터 계층은 샤딩을 통해 규모 확장

- 각 계층은 독립적 서비스로 분할

- 시스템의 지속적인 모니터링 및 자동화 도구 활용

0개의 댓글