L4를 통해 Load balancing을 통한 간단한 분산 시스템 예시이다.
캐시, 메시지큐, CND 등을 사용할 수도 있지만 생략하였다.
여기서 데이터베이스의 규모 확장은 다음과 같이 두 가지 방법이 있다.
수직적 확장(Scale-up) 기존 서버에 더 많은, 또는 고성능의 자원(CPU, RAM 등)을 증설하는 방법 → 하드웨어의 한계가 있음(가성비 X), SPOF인한 위험성 존재
수평적 확장(Scale-out)
서버를 추가함으로서 성능을 향상시키는 방법
수평적 확장의 기법중 하나인 Sharding에 대해서 설명하고자 한다.
Member라는 Table이 있다. 단일 DB에 구성되어있는데 수평적 확장을 통해 트래픽을 분산 시키고자 한다.
위 처럼 단순하게 row(data)를 나눠서 각각 다른 DB에 저장하였다.
이 때 data를 적절하게 어떻게 나누는지가 중요하다.
위처럼 데이터를 수평 분할하여 분산 저장하는 기법
Sharding과 비슷한 Partitioning기법은 하나의 DBMS에서 물리적으로 저장하는 공간을 나누는 것을 의미한다 비슷한 맥락으로 사용되지만, Sharding과는 다른점이 있다.