본문 바로가기

프로그래밍_인강

Distributed Relational Database

1. 데이터베이스 확장 : Scale-Up vs Scale-Out

  • Scale-Up (수직 확장)
    • 개념: DB 서버 자체의 CPU, RAM, Disk 등을 업그레이드
    • 장점: 단순 구조, 빠른 대응
    • 단점: 비용 상승 및 물리적 한계
  • Scale-Out (수평 확장)
    • 개념: 여러 대의 DB로 트래픽 분산 및 부하 분배
    • 장점: 수평적 확장 용이, 대규모 트래픽 대응 가능
    • 단점: 샤딩 등 분산 구조 설계 필요

 

2. 샤딩이란 무엇인가?

샤딩은 데이터를 여러 DB 인스턴스에 나눠서 저장하는 기술이다. 크게 두 가지 방식이 있다.

 

  •  수직 샤딩 (Vertical Sharding)
    • 방식: 데이터를 수직으로 분할하는 방식 (컬럼 단위로 분리)
      예) title, content → DB1 / board_id, created_at → DB2
    • 장점: 특정 컬럼 쿼리 성능 향상
    • 단점: 조인 및 트랜잭션 관리 복잡, 수직으로 분할되므로 수평적 확장에 제한
  • 수평 샤딩 (Horizontal Sharding)
    • 방식: 데이터를 수평으로 분할하는 방식 (행 단위로 분리)
      예) article_id=1~5000 → DB1 / 5001~10000 → DB2
    • 장점: 수평적 확장 용이, 부하 분산
    • 단점: 조인 및 트랜잭션 관리 복잡

 3. 샤딩 전략별 분류

  •  범위 기반 샤딩 (Range Sharding)
    • 방법: Shard Key의 값 범위로 분리
      예) article_id=1~5000 / 5001~10000
    • 장점: 범위 쿼리에 유리
    • 단점: 특정 샤드로 데이터 몰림 가능
  • 해시 기반 샤딩 (Hash Sharding)
    • 방법: 해시 함수로 샤드 분배
      예) article_id % 2
    • 장점: 데이터 균등 분산
    • 단점: 범위 조회에 불리
  • 디렉토리 기반 샤딩 (Directory-based)
    • 기준: 매핑 테이블에 의해 샤드 결정
      예) article_id=3 → Shard 2
    • 장점: 유연한 샤드 구성 가능
    • 단점: 디렉토리 관리 비용, 병목 가능성

샤딩의 개념과 각 기법의 특성을 이해하고, 시스템 특성에 따라 적절한 기법을 선택하는 것이 중요하다. 

 

 

4. 물리적 샤딩 vs 논리적 샤딩

  • 물리적 샤드 (Physical Shard)
    • 정의: 데이터를 물리적으로 분산한 실제 단위
    • 필요성: 대규모 데이터 분산 저장 및 성능 향상
  • 논리적 샤드 (Logical Shard)
    • 정의: 데이터를 논리적으로 분산한 가상의 단위
    • 필요성: 물리적 확장 시, Client 변경없이 유연한 매핑

 

5. 데이터 복제: Primary / Replica 구조

대규모 시스템은 단순 확장뿐 아니라 안정성고가용성도 필수입니다. 이때 필요한 게 복제(Replication) 입니다.

  • 구조
    • Primary (쓰기 노드): 데이터 기록 담당
    • Replica (읽기 노드): 데이터 복제 및 조회 처리
  • 복제 방식
    • 동기적(Sync): 쓰기 성능 저하 가능 / 데이터 일관성 보장
    • 비동기적(Async): 성능 우수 / 최신 데이터 반영 지연 가능
  • 운영 전략
    • 장애 발생 시 Replica를 Primary로 승격
    • 읽기 요청을 Replica로 나눠 부하 분산
    • 백업 및 안전성 확보

 

[관련자료]

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8%EB%A1%9C-%EB%8C%80%EA%B7%9C%EB%AA%A8-%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%84%A4%EA%B3%84-%EA%B2%8C%EC%8B%9C%ED%8C%90

 

스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판 강의 | 쿠케 - 인프런

쿠케 | 대규모 데이터와 트래픽을 지탱하기 위한 시스템을, 스프링부트로 직접 만들면서 배워봅니다., IT 서비스 대기업 개발자의 대규모 시스템 실전 개발 노하우!본 강의는 대규모 시스템을 구

www.inflearn.com