카테고리 없음

샤딩(Sharding)

wikys 2026. 1. 22. 12:42

😎 한 줄 요약(잘난 척용)

“샤딩은 데이터베이스를 여러 조각으로 나눠서 버티게 만드는 기술이다.”


샤딩(Sharding)이란 무엇인가?

데이터베이스를 가로로 쪼개는 확장 방법

1. 샤딩을 한 문장으로 설명하면

샤딩은 하나의 거대한 데이터베이스를 여러 개의 작은 데이터베이스로 나눠 저장하고 처리하는 방식이다.

아주 쉽게 말하면, “데이터가 너무 많아지면, DB를 나눠서 나눠 담는 것”이다.


2. 왜 샤딩이 필요할까? (아주 쉽게)

처음에는 DB 한 대로 충분하다.

하지만 사용자가 늘면

  • 데이터 양 증가
  • 조회·쓰기 요청 폭증
  • DB가 점점 느려짐

이때 선택지는 두 가지다.

1️⃣ 서버를 더 좋은 걸로 교체 (한계 있음)
2️⃣ DB를 여러 대로 나눔 ← 샤딩

👉 샤딩은 “수직 확장의 한계를 넘기 위한 방법”이다.


3. 샤딩은 어떻게 나눌까?

핵심 기준: 샤드 키(Shard Key)

  • 데이터를 나누는 기준 값
  • 예: 사용자 ID, 지역, 날짜

예시:

  • 사용자 ID 1~100만 → DB A
  • 사용자 ID 100만~200만 → DB B

👉 어디에 저장할지 결정하는 규칙이 샤드 키다.


4. 샤딩의 대표적인 방식

1️⃣ 범위 기반 샤딩

  • ID, 날짜 범위로 나눔
  • 이해하기 쉽다
  • 특정 구간에 트래픽 몰릴 수 있음

2️⃣ 해시 기반 샤딩

  • 값을 해시 함수로 분산
  • 데이터가 고르게 퍼짐
  • 범위 조회는 불편

3️⃣ 지역 기반 샤딩

  • 국가·지역별 DB
  • 지연 시간 감소

👉 서비스 특성에 따라 선택한다.


5. 샤딩의 장점

👍 확장성

  • 서버를 계속 추가 가능
  • 사용자·데이터 증가에 유리

👍 성능 향상

  • 쿼리 부하 분산
  • 병렬 처리 가능

👍 장애 영향 최소화

  • 한 샤드 장애 ≠ 전체 장애

6. 샤딩의 단점 (아주 중요)

👎 구조가 복잡해진다

  • 데이터 위치 관리 필요
  • 쿼리 로직 복잡

👎 JOIN이 어려움

  • 여러 DB에 흩어져 있음
  • 복잡한 JOIN 성능 저하

👎 샤드 키 선택이 매우 중요

  • 잘못 고르면
    👉 특정 DB만 과부하

👉 샤딩의 성패는 샤드 키에서 결정된다.


7. 샤딩 vs 복제(Replication)

구분 샤딩 복제
목적 확장 가용성
데이터 나눠 저장 그대로 복사
쓰기 확장
읽기 확장

👉 실무에서는 샤딩 + 복제를 함께 쓴다.


8. 언제 샤딩을 고려할까?

  • 사용자 수 급증
  • 단일 DB 성능 한계
  • 글로벌 서비스 확장

👉 처음부터 샤딩은 드물고, 필요해졌을 때 도입하는 경우가 많다.


9. 초보자가 기억하면 딱 좋은 정리

  • 샤딩 = DB 쪼개기
  • 목적은 확장성과 성능
  • 설계가 매우 중요

10. 마무리

샤딩은 “DB를 더 키울 수 없을 때 선택하는, 가장 강력하지만 가장 어려운 카드”다.

  • 잘 설계되면 거의 무한 확장
  • 잘못 설계되면 관리 지옥

그래서 샤딩은 DB 설계의 끝판왕으로 불린다.

 

참고 자료 (한국어)

✅ 개념·기초

✅ 실무 관점

  • MySQL / MongoDB 샤딩 개념 설명 문서
  • Velog / Tistory – “DB 샤딩 설계” 검색 추천

참고 유튜브 영상 (한국어)

🔹 개념 이해용

 

- YouTube

 

www.youtube.com

 

- YouTube

 

www.youtube.com

🔹 실무·아키텍처

 

- YouTube

 

www.youtube.com

 

- YouTube

 

www.youtube.com

반응형