시스템 설계 · 기초
데이터베이스의 데이터가 너무 많아질 때 발생하는 성능 문제를 해결하기 위한 방법 중 하나인 '샤딩(Sharding)' 또는 '파티셔닝(Partitioning)'의 개념을 설명해주세요.
힌트 · 샤딩은 데이터베이스를 여러 개의 작은 조각으로 나누어 분산 저장함으로써 읽기/쓰기 성능을 향상시키고 단일 서버의 한계를 극복합니다.
데이터 분산성능 향상수평 분할파티션 키쿼리 라우팅
모범답안
샤딩 또는 파티셔닝은 데이터베이스 성능 문제를 해결하기 위한 방법으로, 데이터가 너무 많아져서 단일 데이터베이스 서버의 용량이나 처리 능력을 초과할 때 사용합니다.
쉽게 말해, 데이터를 여러 개의 작은 조각으로 나누어 여러 데이터베이스 서버에 분산 저장하는 방식입니다. 이렇게 하면 각 서버가 처리해야 할 데이터 양이 줄어들어 읽기/쓰기 성능이 향상됩니다.
예를 들어, 사용자 ID를 기준으로 데이터를 나누어 각 서버에 저장할 수 있습니다. 특정 사용자의 데이터를 조회할 때는 해당 사용자의 ID에 맞는 서버로 쿼리를 보내면 됩니다. 이를 통해 전체 데이터베이스를 검색하지 않고 필요한 데이터만 빠르게 가져올 수 있습니다.
샤딩은 데이터베이스의 수평적 확장(Horizontal Scaling)을 가능하게 하여, 단일 서버의 한계를 극복하고 시스템의 전체적인 성능과 안정성을 높이는 데 기여합니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 대용량 트래픽 설계 면접 질문
- 대용량 트래픽 처리 시 '로드 밸런서(Load Balancer)'가 왜 필수적인 역할을 하는지 설명하고, 주요 기능 몇 가지를 언급해주세요.
- 웹 서비스에서 'CDN(Content Delivery Network)'을 사용하면 대용량 트래픽 상황에서 어떤 이점을 얻을 수 있으며, 기본적인 동작 원리는 무엇인가요?
- 시스템 성능 향상 및 부하 감소를 위해 '캐싱(Caching)' 기법을 활용합니다. 캐싱의 기본 원리와 어떤 종류의 데이터를 캐싱할 수 있는지 설명해주세요.
- 읽기(Read) 작업이 많은 서비스에서 데이터베이스의 부하를 줄이기 위해 '읽기 전용 복제본(Read Replicas)'을 활용합니다. 이 방식의 목적과 장점은 무엇인가요?
- 여러 대의 서버로 트래픽을 분산하는 로드 밸런서의 주요 역할과 일반적인 로드 밸런싱 알고리즘 몇 가지를 설명하고, 각 알고리즘이 어떤 상황에 적합한지 비교 설명해 주세요.
- 대용량 트래픽 환경에서 데이터베이스의 읽기 성능을 향상시키기 위한 Read Replica(읽기 전용 복제본)의 동작 원리와 주요 고려사항에 대해 설명해 주세요.