[시스템 설계: 한번에 인터뷰 합격하기] 수평 스케일링 vs 수직 스케일링
Programming

[시스템 설계: 한번에 인터뷰 합격하기] 수평 스케일링 vs 수직 스케일링

1. 알고자 하는 것

  • 많은 트래픽에 대응하기 위한 확장성 - 수직 스케일링 vs 수평 스케일링

 

 

 

2. 알게 된 것

  • 확장성이 없는 단일 서버 (Single Server)는 개인 웹사이트와 같이 트래픽이 많지 않고, 서버가 일시적으로 다운되어도 크게 상관이 없는 경우 유용한 설계 방식이 될 수 있다.
    • 돈이 많이 들지 않고, 유지보수가 편하다.
  • 상업 서비스와 같이 한 번에 수백만 명의 트래픽을 감당해야 하는 서버에 대해서는 확장성을 신경써야 한다.
  • 이런 많은 트래픽을 가진 서비스에서 단일 서버 방식은 서버가 다운되면 전체 서비스가 중단되어 버리는 단일 장애점(SPOF, Single Point Of Failure)이 된다.

  • 확장성을 늘리는 방식에는 수직 스케일링 방식과 수평 스케일링 방식이 있다.

 

수직 스케일링 (Vertical Scaling)

  • 더 크고 비싼 하드웨어를 사용해 트래픽을 감당할 수 있도록, 단순히 서버의 성능을 높이는 방식이다.
  • 서버의 개수가 늘어나지 않으므로 관리해야 할 포인트가 적어 유지보수가 편리하다는 장점이 있다.
  • 하지만 이러한 수직 스케일링 방식에는 하드웨어 성능의 한계가 있고, 여전히 서버가 다운되면 전체 서비스가 중단되는 단일 장애점이 되므로 일반적인 서비스의 운영환경에서 사용되지는 않는다.

 

수평 스케일링 (Horizontal Scaling)

  • 대부분의 대규모 아키텍처 설계에서 최신 시스템 설계에 가장 적절한 방식이다.
  • 서버의 성능을 높이는 것이 아닌, 여러 대의 서버를 두고 트래픽을 각 서버에 분산시켜주는 로드 밸런서를 앞에 두어 일정하게 부하를 분산하는 방식이다.
  • 한 서버가 다운되었을 때, 해당 서버로 트래픽을 보내지 않고 살아있는 다른 서버로 트래픽을 분산해줄 수 있으므로 각 서버는 단일 장애점이 되지 않는다.
  • 또한, 수직 스케일링과 달리 한계 없이 서버의 개수를 계속 확장해 확장성을 가져갈 수 있다.
  • 더 많은 서버를 배치할 수록 트래픽을 더 많이 감당할 수 있다.
  • 하지만 서버의 개수가 늘어나는 만큼 유지보수가 더 어려워진다는 단점이 있다.
  • 수평 스케일링 방식에서 중요한 개념은 무상태(Stateless)이다.
  • 서버가 여러 대 존재해 이전의 요청에 대해 다음 요청이 똑같은 서버로 요청된다는 보장이 없으므로 각 서버는 이전 상태에 의존해 다음 요청을 처리하면 안되고 무상태로 설계되어야 한다.
  • 이전의 요청에 대해 다음 요청이 같은 서버로 요청되어야 한다는 규제가 생긴다면 이는 트래픽을 일정하게 분산하는 수평 스케일링의 장점을 온전히 가져가지 못한다는 의미가 된다.

 

 

 

3. 정리

  • 트래픽이 적고, 서버가 잠시 다운되어도 크게 중요하지 않은 서비스 (개인 웹사이트 등)에 대해서는 확장성을 신경쓰지 않고 단일 서버(Single Server)로만 설계하는 것이 금전적, 관리적 측면에서 더 좋을 수 있다.
  • 하지만 상업 서비스와 같이 트래픽이 많은 경우 확장성을 고려해 시스템을 설계해야 한다.
  • 수직 스케일링 방식은 단순히 서버의 성능 (하드웨어의 성능)을 높이는 방식으로, 유지보수가 용이하다.
  • 하지만 단일 장애점이 여전히 존재하며, 하드웨어의 성능에는 한계가 있다.
  • 수평 스케일링 방식은 서버를 여러 대 두고, 트래픽을 각 서버에 일정하게 분산해주는 로드 밸런서를 앞에 두어 부하를 분산하는 방식으로, 하나의 서버가 다운되어도 다른 살아있는 서버로 트래픽을 분산하므로 단일 장애점이 되지 않으며 무한한 확장이 가능하다.
  • 하지만 서버의 개수가 늘어나므로 유지보수가 어려워진다.
  • 이러한 수평 스케일링 방식은 이전 요청과 같은 서버가 다음 요청을 받는다는 보장이 없으므로 서버가 상태를 저장하지 않도록 무상태(Stateless)로 설계하는 것이 중요하다.

 

 


Reference

강의 - 시스템 설계(System Design): 한번에 인터뷰 합격하기