backend-interview-guide

데이터베이스 스케일링

목차

수직 스케일링(Vertical Scaling)과 수평 스케일링(Horizontal Scaling)

차이점

수직 스케일링(Vertical Scaling / Scale-Up) 은 기존의 단일 서버의 하드웨어 성능을 높이는 방법입니다. 예를 들어, 더 빠른 CPU, 더 많은 RAM, 또는 더 큰 디스크 공간을 추가하는 방식으로 시스템 성능을 향상시킬 수 있습니다. 데이터베이스는 동일한 인스턴스에서 운영되며, 시스템 자체는 변경되지 않으므로 애플리케이션 코드는 수정할 필요가 없습니다.

수평 스케일링(Horizontal Scaling / Scale-Out) 은 여러 서버를 추가하여 데이터베이스의 부하를 분산하는 방법입니다. 여러 개의 데이터베이스 인스턴스를 추가하여 데이터와 트래픽을 분산시킵니다. 일반적으로 로드 밸런서를 사용해 요청을 여러 서버로 분산 처리하며, 각 서버는 동일한 데이터베이스를 호스팅하거나 데이터의 일부만 저장할 수도 있습니다. 대표적으로 샤딩(Sharding)과 레플리카셋(Replica Set) 같은 방법이 사용됩니다.

장단점

수직 스케일링

장점:

단점:

수평 스케일링

장점:

단점:

데이터베이스 샤딩(Sharding)

설명

샤딩(Sharding) 은 대규모 데이터를 여러 개의 분리된 데이터베이스 인스턴스에 나누어 저장하는 기술입니다. 각 데이터베이스 인스턴스를 샤드(Shard)라고 하며, 데이터는 특정 기준에 따라 각 샤드에 분배됩니다. 예를 들어, 사용자 ID에 따라 데이터를 여러 샤드에 분배할 수 있습니다.

샤딩을 사용해야 하는 상황

샤딩이 필요한 상황은 주로 데이터의 양이 매우 크거나, 트래픽이 특정 데이터베이스 인스턴스에 집중되어 성능 저하가 발생할 때입니다. 특히 수평 스케일링이 필요하지만, 단순히 서버를 추가하는 것만으로는 해결되지 않는 경우에 샤딩을 고려합니다.

장단점

장점:

단점:

샤딩 전략

샤딩 전략을 선택할 때 고려해야 할 요소로는 데이터 액세스 패턴, 데이터 일관성 요구사항, 확장성 필요성, 애플리케이션의 쿼리 복잡성 등이 있습니다. 주요 샤딩 전략으로는 다음이 있습니다:

읽기 성능 향상을 위한 읽기 복제본(Read Replica) 설정

설명

읽기 복제본(Read Replica) 은 주 데이터베이스의 읽기 작업 부하를 분산하기 위해 사용하는 복제본입니다. 주 데이터베이스에 쓰기 작업이 발생하면, 그 데이터가 읽기 복제본으로 복제되어 읽기 전용으로 사용됩니다. 일반적으로 주 데이터베이스의 성능을 보존하면서도 읽기 요청을 처리하기 위한 용도로 사용됩니다.

장단점

장점:

단점: