샤딩하지 말아야 하는 경우
읽기 복제본, 파티셔닝, 더 큰 서버로 대부분의 확장성 문제를 해결할 수 있으므로 샤딩이 잘못된 선택인 경우를 알아보세요.
샤딩하지 말아야 하는 경우은(는) CoddyKit의 무료 SQL Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 SQL Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. SQL Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
샤딩은 최후의 수단
샤딩은 운영 복잡성을 크게 높입니다. 대부분의 앱에는 샤딩이 필요하지 않습니다. 먼저 더 간단한 방법을 모두 검토하십시오.
1단계: 수직 확장
더 큰 서버를 사용합니다. 최신 클라우드 인스턴스는 다음을 쉽게 처리합니다:
- 128개 코어
- 1 TB RAM
- 50,000 IOPS NVMe
단일 PostgreSQL 노드에서 100k-500k QPS를 처리할 수 있다는 뜻입니다. 대부분의 앱은 충분히 처리할 수 있습니다.
2단계: 읽기 replica
읽기가 대부분이라면 replica를 추가합니다. primary 하나와 replica 3개로 읽기 요청을 10배 처리할 수 있습니다.
3단계: 캐싱
자주 실행되는 query 앞에 Redis/memcached를 둡니다. 가장 저렴하게 얻을 수 있는 효과인 경우가 많습니다.
4단계: 파티셔닝
PG의 기본 선언적 파티셔닝은 단일 서버 안에서 “테이블이 너무 큰” 문제를 해결합니다. 샤딩보다 100배 쉬운 경우가 많습니다.
5단계: 서비스 분리
서로 다른 도메인을 서로 다른 데이터베이스로 이동합니다. 주문 DB, 사용자 DB, 분석 DB처럼 구성할 수 있습니다. 각 데이터베이스를 독립적으로 확장할 수 있습니다.
6단계: 분석 작업 분리
OLTP query는 PostgreSQL로 보내고, 분석 query는 ClickHouse / BigQuery / Snowflake로 보냅니다. “샤딩이 필요하다”는 많은 사례는 실제로 “분석 작업이 OLTP를 과도하게 사용하고 있다”는 문제입니다.
그런 다음, 필요하다면 샤딩
OLTP 전용 데이터가 50TB에 이르렀는데도 여전히 한 서버가 처리할 수 없는 쓰기량이 필요하다면 샤드를 계획하기 시작합니다.
샤딩의 운영 비용
- 모니터링하고 패치해야 할 서버가 늘어납니다.
- 샤드 전체의 백업을 조정해야 합니다.
- 샤드 간 query 처리가 앱 코드로 넘어옵니다.
- 재샤딩이 어렵습니다.
- 트래픽 집중 샤드에는 적극적인 재분산이 필요합니다.
“샤딩은 늦게” 전략
나중에 샤딩할 수 있도록 샤딩을 고려한 패턴으로 구축합니다(항상 tenant_id를 포함하고, 전역 자동 증가 카운터는 사용하지 않습니다). 하지만 꼭 필요해질 때까지는 샤딩하지 않습니다.
샤딩에 적합한 스키마
단일 노드를 유지하더라도 샤딩할 가능성을 고려하여 설계합니다:
- 모든 행에 tenant_id를 포함합니다.
- UUID 또는 분산 ID를 사용합니다(자동 증가 방식은 사용하지 않음).
- 전역 고유 시퀀스를 사용하지 않습니다.
- 외래 키를 테넌트 범위 안에 둡니다.
상충 관계 인정하기
샤딩은 기능을 대가로 용량을 늘립니다. JOIN, 트랜잭션, query가 더 어려워집니다. 얻는 이점이 그만한 가치가 있는지 확인해야 합니다.
요약
샤딩은 실제 문제를 해결하지만, 그 대가가 큽니다.
- 먼저 수직 확장을 사용합니다.
- 읽기 replica와 캐싱을 사용합니다.
- 샤딩 전에 파티셔닝을 사용합니다.
- 분석 작업을 OLTP에서 분리합니다.
- 샤딩할 수 있도록 설계하되 실제 샤딩은 미룹니다.
빠른 확인
OLTP query가 느려서 샤딩을 고려하고 있습니다. 샤딩하기 전에 어떤 단계가 가장 도움이 될 가능성이 높습니까?
자주 묻는 질문
“샤딩하지 말아야 하는 경우” 강의는 무료인가요?
네 — “샤딩하지 말아야 하는 경우” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 SQL Academy 강의 전체를 잠금 해제할 수 있습니다. SQL Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“샤딩하지 말아야 하는 경우”에서 뭘 배우나요?
읽기 복제본, 파티셔닝, 더 큰 서버로 대부분의 확장성 문제를 해결할 수 있으므로 샤딩이 잘못된 선택인 경우를 알아보세요. 브라우저에서 직접 실행하는 실습 코드로 SQL Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
SQL Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 SQL Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“샤딩하지 말아야 하는 경우” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 SQL Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 SQL Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 샤딩 전략: 범위, 해시, 디렉터리
- 샤드 간 쿼리: 가장 어려운 문제
- Citus와 분산 Postgres
- 샤딩하지 말아야 하는 경우