블로그/Database
Database시니어2026-04-25

데이터베이스 샤딩 전략: 수직 vs 수평 샤딩

한 줄 답변

샤딩은 대량의 데이터를 여러 노드에 분산 저장하는 기술로, 수직 샤딩은 테이블별로 분리하고 수평 샤딩은 행 단위로 분리합니다. 시니어 면접에서는 데이터 일관성 유지와 조인 제약 해결 능력을 보여주는 것이 핵심입니다.

핵심 개념 정리

데이터베이스 샤딩은 급증하는 트래픽과 데이터 용량을 처리하기 위해 하나의 거대한 DB를 여러 개의 작은 단위로 쪼개는 기술입니다. 단일 서버의 하드웨어 사양을 높이는 Scale-up 방식이 한계에 부딪혔을 때, 여러 저가형 서버를 활용하는 Scale-out 전략의 핵심 요소로 활용됩니다.

수직 샤딩(Vertical Sharding)은 흔히 '파티셔닝'이라고도 불리며, 관련 있는 컬럼이나 테이블 단위로 DB를 분리합니다. 예를 들어 사용자 정보 테이블과 결제 정보 테이블을 물리적으로 다른 DB 서버에 두는 방식입니다. 구현이 단순하지만, 특정 테이블의 부하가 여전히 높을 경우 확장성에 한계가 있습니다.

수평 샤딩(Horizontal Sharding)은 동일한 테이블 구조를 가진 상태에서 로우(Row) 데이터를 샤딩 키(Sharding Key)를 기준으로 분산합니다. 예를 들어 ID가 1~10,000인 사용자는 A 서버에, 10,001~20,000인 사용자는 B 서버에 저장하는 방식입니다. 이론적으로 무한 확장이 가능하지만 데이터 재분산(Resharding) 시 비용이 크다는 단점이 있습니다.

실무에서는 데이터의 특성에 따라 레인지 기반(Range), 해시 기반(Hash), 리스트 기반(List) 등 다양한 샤딩 알고리즘을 선택합니다. 특히 시니어 레벨에서는 샤딩된 환경에서의 분산 트랜잭션 처리와 전역 고유 키 생성 전략, 그리고 크로스 샤드 조인(Cross-shard Join) 성능 문제를 어떻게 해결했는지가 핵심적인 기술적 판단 요소가 됩니다.

비교 정리

항목수직 샤딩 (Vertical)수평 샤딩 (Horizontal)
분할 기준테이블 또는 컬럼 단위데이터 로우(Row) 단위
확장성제한적 (테이블 수에 의존)높음 (무한 확장 가능)
복잡도상대적으로 낮음높음 (샤딩 키 관리 필요)
조인 성능서버 간 조인 불가샤드 간 조인 시 성능 저하

면접에서 이렇게 답하세요

단순히 정의를 말하기보다, 서비스 성장 단계별로 어떤 샤딩을 적용했는지 실무 경험을 섞으세요. 특히 '샤딩 키(Sharding Key)' 선정 기준이 데이터 불균형(Hotspot)을 어떻게 방지했는지, 그리고 분산 트랜잭션 이슈를 애플리케이션 레벨(Saga 패턴 등)에서 해결했음을 강조하면 가산점을 받습니다.

자주 묻는 추가 질문

Q. 샤딩 키를 잘못 선정하여 특정 샤드에 부하가 쏠리는 '핫스팟' 문제는 어떻게 해결하나요?

해시 샤딩을 적용하여 분산을 고르게 하거나, 기존 키에 랜덤 접두사를 붙여 재분산합니다. 장기적으로는 동적 샤딩 매니저를 도입합니다.

Q. 샤딩된 DB에서 여러 샤드에 걸친 데이터를 조인해야 할 때는 어떻게 처리하나요?

애플리케이션 레벨에서 병렬 쿼리 후 병합하거나, 자주 조인되는 데이터를 비정규화하여 동일 샤드에 복제하는 방식을 주로 사용합니다.

Q. 샤드 추가 시 발생하는 데이터 재배치(Resharding) 비용을 줄이는 전략은?

일관된 해싱(Consistent Hashing) 알고리즘을 사용하여 노드 추가/삭제 시 최소한의 데이터만 이동하도록 설계하거나 가상 노드를 활용합니다.

커뮤니티 하이라이트

단순히 샤딩을 도입하는 것보다, '샤딩 없이 버틸 수 있는 구간'까지 인덱스 최적화와 캐싱으로 버틴 근거를 제시하는 게 시니어답습니다.

@db_master_kakao45

글로벌 서비스라면 리전별 샤딩 전략까지 언급해보세요. 가용성(Availability) 관점에서 샤딩이 주는 이점도 훌륭한 답변 포인트입니다.

@backend_architect32

42명의 개발자가 이 질문에 참여했습니다

관련 면접 질문

앱에서 직접 답변해보세요

매일 3개의 면접 질문에 답변하고,
다른 개발자들의 답변을 비교해보세요.

무료로 시작하기