[Infra] 대용량 트래픽 대응 - 1. 스케일 업(scale-up) vs 스케일 아웃(scale-out)

2022. 8. 11. 13:55토이프로젝트/팁 모음집

  • 사용자에게 제공할 서비스를 만들었다고 가정하자.
  • 내가 만든 이 서비스의 폭발적인 인기로 인해 사용자 수가 급증하여 서버에 대한 요청 또한 급증했다고 가정했을 때, 일반적인 서버로는 버틸 수 없다. 만일 그런 상황이라면 서버는 다운되고 서비스 이용자들은 불편을 겪을 것이며 이 사이트는 결국 이용자수가 급갑하게 될 것이다.
  • 이런 상황에 대비하기 위해 대규모 트래픽에 대응할 수 있도록 서버의 성능을 향상시켜야 하는데 이 때 중요한 것이 Scalability 이다.

※ Scalability (확장성)

  • 시스템이 제대로 기능하기 위해 요구사항에 맞추어 용량 및 성능을 조절하는 것을 뜻한다.
  • 얼마나 많은 트래픽을 처리할 수 있는가, 얼마나 많은 트랜잭션을 처리할 수 있는가 등 시스템 내에서 많은 부분이 이 scalability로 설명이 가능하다.
  • 이 확장성의 관점에서 보았을 때 리소스를 확장하는 방법은 위의 제목에서도 써 놓았듯 두 가지가 있다.

▷ 스케일 업(scale-up)

  • 성능이나 용량 증강을 목적으로 하나의 서버에 디스크를 추가하거나 CPU나 메모리의 성능을 업그레이드 시키는 것을 말한다. 
  • 다른 말로 수직 스케일링이라고도 한다.

① 장점

  1. 구축 설계가 쉽다.
  2. 여러 대의 서버를 놓는 방식이 아니기 때문에 데이터 정합성(데이터가 일관되지 않는 문제)을 유지해야하는 문제에서 자유롭다.
  3. 네트워크 비용이나 컨트롤러 비용이 따로 발생하지 않는다.

② 단점

  1. 용량과 성능의 확장에 제한이 있다.
  2. 비용이 많이 든다.
  3. 서버 한 대에 모든 부하가 집중되기 때문에 장애가 발생했을 시 치명적이다. (서비스를 종료해야 한다. 비즈니스 손실)

 

▷ 스케일 아웃(scale-out)

  • 기존의 서버와 비슷한 사양의 서버 대수를 증가시키는 방법으로 처리 능력을 향상시킨다.
  • 다른 말로 수평 스케일링이라고도 한다.
  • 서버가 여러 대가 되기 때문에 각 서버에 걸리는 부하를 균등하게 해주는 로드밸런싱(한 대의 서버로 부하가 집중되지 않게 트래픽 관리)이 필수적으로 동반되어야 한다.
  • 여러 대의 서버가 분산 처리할 수 있게 요청을 나누어줌.

① 장점

  1. 서버 한 대가 다운되더라도 다른 서버로 서비스 제공이 가능하다.
  2. 용량, 성능 확장에 한계가 없다. 하드웨어를 변경하는 것이 아니라 비슷한 성능의 서버를 여러 대 두는 방법이기 때문에 확장이 자유롭다.
  3. 병목 현상을 줄일 수 있다.

② 단점

  1. 데이터 정합성 문제가 생길 수 있다. (그로 인해 모든 서버에서 데이터 일관성을 유지해야 하고 설계 및 관리가 복잡해진다.)
  2. 세션, 웹 이미지 등 서버에 저장되는 데이터를 어떤 식으로 공유해야 하는지 기술적인 한계가 존재한다.

 

  • 위에서 살펴본 것처럼 대용량 트래픽을 감당할 수 있는 서버를 만들기 위해선 scale up 방식을 차용하여 서버를 한 대만 놓는 방식은 적절하지 못함을 알 수 있다.
  • 따라서, scale out을 고려해 서버를 확장해야 하고, 이로 인해 발생하는 문제점과 해결 방안은 다음 포스팅에서 다루도록 한다.