인생을 코딩하다.

[Infra] 스케일 업(Scale-up) vs 스케일 아웃(Scale-out) 본문

Infra

[Infra] 스케일 업(Scale-up) vs 스케일 아웃(Scale-out)

Hyung1 2021. 6. 4. 17:11
728x90
반응형

스케일 업 (Scale-up)

  • 성능이나 용량 증강을 목적으로 하나의 서버에 디스크를 추가하거나 CPU나 메모리를 업그레이드시키는 것을 말한다. 하나의 서버의 능력을 증강하기 때문에 수직 스케일링(vertical scaling)이라고도 한다.
  • 즉, 기존의 하드웨어를 보다 높은 사양으로 업그레이드하는 것을 말한다.

스케일 아웃 (Scale-out)

  • 기존의 서버와 같은 사양 또는 비슷한 사양의 서버 대수를 증가시키는 방법으로 처리 능력을 향샹시키는 것을 말한다. 스케일 아웃 방식을 "수평 스케일"이라고 부르기도 하고, 확장이 스케일 업보다는 다소 유연하다.
  • 1’의 처리 능력을 가진 서버에 동일한 서버 4대를 더 추가하여, 총 ‘5’의 처리 능력을 만드는 것이다. 서버가 여러 대가 되기 때문에 각 서버에 걸리는 부하를 균등하게 해주는 ‘로드밸런싱’이 필수적으로 동반되어야 한다.
  • 즉, 여러 대의 서버가 분산(나누어) 처리할 수 있도록 요청을 나누어주는 서비스

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

 

스케일 업 vs 스케일 아웃

스케일 업과 스케일 아웃은 왜 생겼을까?

예전에 서비스가 하나 있었다. 사용자가는 한 명 이였고 서버는 잘 돌아가고 있었다.

Client -> Server

 

하지만 점점 사용자가 늘어났다.

Client1, Client2, Client3, Client4, Client5........Client100 -> Server

늘어남에 따라 서버는 부하가 생겼다. 이에 따라 개발자들은 이 부하를 어떻게 하면 좋을까? 고민을 한 결과,

 

"Scale up!, Server의 하드웨어 성능을 높여보자" 라고 생각을 하였다. 메모리도 때려넣고, CPU도 때려넣고 해서Server는 Lv10.Server로 레벨 업을 하였다.

 

요청을 잘 전달하고 소화를 하고 있엇는데, 점점 또 늘어나다가 결국Client101, Client102, Client103, Client104, Client105........Client100000이 되어버려서 Lv100.Server을 만들자 라고 생각을 하였다. 하지만 메모리를 꼽을 수 있는 소켓은 한정적이였다. 

 

그래서 어떤 개발자가 또, 우리 그럼 "Scale Out!, 여러 대의 Server가 나누어 일을 하게 하자" 라고 생각을 하였다. 그리하여 위에 첨부한 그림의 스케일 아웃이 되었다.

스케일 업 (Scale-up)의 장단점

장점

  • 추가적인 네트워크 연결 없이 용량을 증강할 수 있고, 추가되는 용량이나 업그레이드 비용만 부가되기에 비용적인 증강이 스케일아웃에 비해 낮고 설계가 쉽다.
  • 무엇보다 비교적 업그레이드가 쉽고, 필요 장비와 전력 소모를 어느 정도 아낄 수 있다.
  • 인프라 비용이 추가로 발생하지 않는다.
  • 서버를 추가하는 방법이 아니기 때문에 여러대의 서버를 두는 것보다 데이터 정합성 이슈(데이터가 일관되지 않는 문제)에서 자유롭다.

단점

  • 다만 스케일업을 할수록 기존 하드웨어의 냉각, 공간, 전력공급 등의 문제가 발생할 수 있고, 하드웨어 허용 범위 내에서만 확장이 가능하기 때문에 그 이상으로 업그레이드를 하고자 한다면 한계가 있다.
    • 새로운 장비로 교체하는 방법밖에 없음
  • 스케일 업의 일정 수준을 넘어가는 순간, 성능 증가 폭이 미미해진다.
    • cpu 의 예를 들자면, i3 에서 i5로 스케일업하는 경우, 1.5배 이상의 성능 변화가 있는 반면, i5 에서 i7로 스케일업하는 경우, 1.2 배의 성능 변화밖에 없다
  • .서버 한 대에 모든 부하가 집중되므로 장애 시 서버가 복구될 때까지 서비스를 중단해야 하는 상황이 발생한다.
    • 내가 사용하려던 서비스가 중단된다면, 그에 안좋은 기억이 생기고 타 서비스로 이용을 바꾸거나, 서비스를 사용하지 않을 수 있는데, 이것은 엄청난 비즈니스 손실이 생길 수 있다.

사용하기 적절한 예

한 대의 서버에서 모든 데이터를 처리하므로 데이터 갱신이 빈번하게 일어나는 ‘데이터베이스 서버’에 적합한 방식이다.

스케일 아웃 (Scale-out)의 장단점

장점

  • 서버 한 대가 장애로 다운되더라도 다른 서버로 서비스 제공이 가능하다는 장점이 있다.
  • 용량, 성능 확장에 한계가 없다. 하드웨어를 변경하는 것이 아닌 비슷한 성능의 서버를 여러 대 두는 방법이기 때문에, 확장이 무제한 가능하다.
  • 즉, 단일 서버에 작업이 쌓여서 멈춰있는 병목현상을 줄일 수 있다.

단점

  • 여러 대의 서버로 돌아가기 때문에  데이터 정합성 이슈(데이터가 일관되지 않는 문제)가 생길 수 있다.
    • 그에따라 모든 서버에서 데이터 일관성을 유지해야하기 때문에 설계 및 관리가 복잡하다.
  • 세션, 웹 이미지 등 서버에 저장되는 데이터를 어떤식으로 공유해야할지에 대한 기술적인 한계가 있다.
  • 병렬 컴퓨팅 환경을 구성하고, 유지하려면, 로드 밸런싱에 대한 높은 이해도가 요구된다.

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

 

사용하기 적절한 예

 

모든 서버가 동일한 데이터를 가지고 있어야 하므로, 데이터 변화가 적은 서비스에 적당하다.

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

네트워크 서버 설계 및 소프트 웨어 변경 비용이 더 클 수 있기 때문에 모든 서비스에 적합한 방식은 아니고 클라우드 환경 및 대규모 서비스 환경에서 권장되는 방법이다. 

 

참고 문헌 :

https://library.gabia.com/contents/infrahosting/1222/

https://tech.gluesys.com/blog/2020/02/17/storage_3_intro.html

 

728x90
반응형
Comments