샤딩(Sharding)이란?
서비스가 커지면 하나의 데이터베이스 서버로는 감당하기 힘든 순간이 옵니다. 사용자가 많아지고 데이터가 쌓일수록 조회 속도는 느려지고, 서버 하나에 걸리는 부하는 점점 커집니다. 이때 등장하는 개념이 바로 샤딩(Sharding)입니다. 샤딩은 하나의 큰 데이터베이스를 여러 개의 작은 데이터베이스, 즉 샤드(Shard)로 물리적으로 분산시켜 저장하는 기술입니다. 쉽게 말해 수백만 권의 책을 한 건물에 다 쌓아두는 대신, 여러 지점 건물에 나눠서 보관하는 것과 비슷합니다. 각 지점(샤드)은 전체 책의 일부만 가지고 있지만, 필요한 책이 어느 지점에 있는지만 알면 훨씬 빠르게 찾을 수 있습니다.
샤딩은 어떻게 동작할까
샤딩의 핵심은 데이터를 어떤 기준으로 나눌지 정하는 샤드 키(Shard Key)입니다. 예를 들어 사용자 ID를 기준으로 나눈다면, ID가 1~100만인 사용자는 샤드 A에, 100만~200만인 사용자는 샤드 B에 저장하는 식입니다. 애플리케이션은 요청이 들어오면 샤드 키를 확인해 어느 서버로 쿼리를 보낼지 결정합니다.
Range 기반 샤딩: ID나 날짜 범위로 나누