서비스 이용자가 많아지고, 쌓아야 하는 데이터가 많아지거나 트래픽이 증가해 한계에 도달하면 인프라를 확장해야 하는 순간이 온다. 성능을 유지하면서 확장을 해야 한다.

이때 Scale Out 또는 Scale Up 전략을 쓸 수 있다.

 

 

Scale Out (스케일 아웃)

작업의 부하를 여러 서버로 분산하기 위해서 아키텍처에 더 많은 서버를 추가하는 것이다.

'수평 스케일링' 이라고 할 수 있다.

  • 단일 서버로 아키텍처가 구성되어 있는데, 이를 스케일 아웃 하려면 아키텍처를 수정해야 한다.
  • 분산 아키텍처가 잘 구성되어 있다면, 확장이 필요할때 서버 한대만 더 추가하면 된다.
  • 여러 서버에 분산되어 있기 때문에 한 서버에 장애가 나도 다른 서버에 영향을 주지 않는다.
  • 서버 여러대에 부하를 분산하는 로드밸런싱도 구현할 수 있다.
  • 스케일 아웃을 고려한다면, 처음부터 분산 시스템을 고려한 설계를 하는것이 좋다.

 

Scale Up (스케일 업)

물리적 서버의 컴퓨팅 능력을 늘리기 위해 기존 서버의 하드 드라이브 및 메모리와 같은 리소스를 추가 하는 것이다.

'수직 스케일링'이라고 할 수 있다.

  • 더 큰 하드 드라이브나 메모리를 추가만 하면 되기 때문에, 기존 아키텍처를 변경할 필요가 없다는 장점이 있다.
  • 새로운 하드웨어로 이전하는 경우, 마이그레이션이 필요할 수 있다.
  • 소프트웨어에서도 스케일 업을 할 수 있는데, 이는 더 많은 스레드, 더 큰 캐시 크기를 사용하는 방식으로 가능하다.
  • 스케일 업은 한계가 있다.(10TB, 100TB ,,, 계속 늘릴 수만은 없다.)
  • 서버 한대에 부하가 집중되므로 장애 발생시 전체 시스템의 이용이 불가능 해질 수 있다.
  • RDB 같은 경우 데이터 정합성(데이터가 서로 모순 없이 일관되게 일치해야 함) 때문에 스케일 업이 필요하다.

 

두 전략 모두 가지는 이점이 있기 때문에, 적절히 잘 활용하는 것이 좋다.

많은 기업에서는 스케일 업으로 성능을 극대화 해 스케일 아웃으로 용량을 확장하는 하이브리드 접근 방식을 사용한다고 한다.

 

참고 자료