L4를 통해 Load balancing을 통한 간단한 분산 시스템 예시이다.

캐시, 메시지큐, CND 등을 사용할 수도 있지만 생략하였다.

캐시, 메시지큐, CND 등을 사용할 수도 있지만 생략하였다.

여기서 데이터베이스의 규모 확장은 다음과 같이 두 가지 방법이 있다.

Untitled

수직적 확장(Scale-up) 기존 서버에 더 많은, 또는 고성능의 자원(CPU, RAM 등)을 증설하는 방법 → 하드웨어의 한계가 있음(가성비 X), SPOF인한 위험성 존재

수평적 확장(Scale-out)

서버를 추가함으로서 성능을 향상시키는 방법

수평적 확장의 기법중 하나인 Sharding에 대해서 설명하고자 한다.

Table, Collection의 수평 분할

Member라는 Table이 있다. 단일 DB에 구성되어있는데 수평적 확장을 통해 트래픽을 분산 시키고자 한다.

Untitled

위 처럼 단순하게 row(data)를 나눠서 각각 다른 DB에 저장하였다.

이 때 data를 적절하게 어떻게 나누는지가 중요하다.

Sharding

위처럼 데이터를 수평 분할하여 분산 저장하는 기법

Sharding과 비슷한 Partitioning기법은 하나의 DBMS에서 물리적으로 저장하는 공간을 나누는 것을 의미한다 비슷한 맥락으로 사용되지만, Sharding과는 다른점이 있다.