본문으로 바로가기

우리가 애플리케이션을 개발하면서 50명 정도의 이용 고객을 예상하고 서버를 구축했는데, 생각보다 인기가 많아져서 500명이 사용하는 애플리케이션이 되었다고 가정해보자.

이러한 경우 기존에 사용하던 서버로는 한계가 있다. 따라서 스케일 업스케일 아웃중 하나를 선택해서 인프라를 재구성 해야 한다.

스케일 업 vs 스케일 아웃

🔍스케일 업(Scale up)

스케일 업 이란, 우리가 현재 사용하고 있는 서버 자체의 성능을 증강시켜 처리 능력을 향상시키는 것으로, CPU 업그레이드 또는 RAM 추가 등으로 하드웨어 장비의 성능을 높이는 접근 방법이다.

스케일업은 비교적 접근하기도 쉽고, 실천하기도 쉬운 방법이다. 실제로 우리가 사용하는 컴퓨터가 느려졌다면 성능이 더 좋은 새로운 컴퓨터를 구매하는것이 가장 간편한 해결책 인 것과 비슷한 논리이다.

스케일 업의 장점

  • 가장 큰 장점으로 단순히 하드웨어만 추가/교체하는 작업이기 때문에 구현과 설계가 쉽다.

  • 서버를 추가하는 방법이 아니기 때문에 여러대의 서버를 두는 것보다 데이터 정합성 이슈에서 자유롭다.

  • 컨트롤러나 네트워크 인프라 비용(소프트웨어 라이센스 등)이 추가로 발생하지 않는다.

스케일 업의 단점

  • 용량,성능 확장의 한계가 찾아온다. 가장 좋은 CPU와 가장 큰 용량의 RAM을 사용하더라도 그것을 초과하는 성능으로 업그레이드 하는것은 불가능하다.
  • 스케일 업의 일정 수준이 넘어가는 순간 성능 증가 폭이 미미해진다.
    • CPU를 예로 들자면 i3 -> i5로 스케일 업 하는 경우 1.5배 이상의 성능 변화가 있는 반면에 i5 -> i7로 스케일 업 하는 경우에는 1.2배의 성능 변화밖에 보이지 못한다.
  • 가장 큰 단점으로 하나의 서버가 모든 클라이언트의 트래픽을 담당하기 때문에 해당 서버에 문제가 생길 경우 서버가 복구될 때까지 서비스를 중단해야 하는 상황이 발생할 수도 있다.

🔍스케일 아웃(Scale out)

스케일 아웃 이란 기존 서버와 비슷한 사양의 서버의 대수를 추가해 여러대의 서버를 두는 방법이다. 스케일 업 보다는 인프라 재구성에 있어서 다소 유연한 방법이다.

스케일 아웃의 장점

  • 용량, 성능 확장의 한계가 없다. 하드웨어를 변경하는것이 아닌, 비슷한 성능의 서버를 여러개 두는 방법이기때문에 지속적인 확장이 가능하다.
  • 하나의 서버가 모든 트래픽을 관리하는 스케일 업방식과 반대로, 여러개의 서버를 두어 분산처리하기때문에 장애 가능성이 감소한다. 즉, 단일 서버에 작업이 쌓여서 멈춰있는 병목현상을 줄일 수 있다.
  • 스케일 업에 비해 비용이 저렴하다.

스케일 아웃의 단점

  • 여러개의 서버를 관리하기 때문에 관리 비용이 증가한다. (소프트웨어 라이센스 비용 등)

  • 모든 서버에서 데이터의 일관성을 유지해야하기 때문에 설계 및 관리가 복잡하다.

    (데이터의 불일치가 발생할 수 있다.)

  • 병렬 컴퓨팅 환경을 구성하고 유지하려면 로드 밸런싱에 대한 높은 이해도가 요구된다.

    병렬 컴퓨팅 환경 : 여러 개의 프로세서를 통해 하나의 프로그램을 처리하는 환경

    로드 밸런싱 : 로드(=부하), 밸런싱(=부하)로, 한대의 서버로 부하가 집중되지 않도록 트래픽을 관리


결론

스케일 업 : 한 대의 서버에서 모든 데이터를 처리하므로 데이터 갱신이 빈번하게 일어나는 경우 적합하다.

  • 정합성을 유지하기 어려운 경우
  • OLTP
  • 데이터베이스 서버

스케일 아웃 : 모든 서버가 동일한 데이터를 가지고 있어야 하므로, 데이터의 변화가 적은 경우 적합하다.

  • 높은 병렬성을 실현하기 쉬운 경우
  • 정합성을 유지하기 쉬운 경우
  • 웹 서버

스케일 업스케일 아웃 모두 장점과 단점이 뚜렷하기 때문에구현한 환경에 따라 어떤 방식이 더 합리적인 방법인지 고려하여 최적의 방법을 선택하자.