[infra] scale up VS scale out

happiyoung_·2024년 8월 19일

intro

응용 프로그램들은 수요가 증가하면 만족시키기위해 유연하고 예민하게 반응해야한다. 즉, 자원을 늘려야 한다는 것이다.
응답 시간이 증가하면 사용자는 불편함을 호소할 것이고, 이러한 상황을 피하기 위해서는 응용프로그램을 스케일링할 필요가 있다.
그래서 등장한 개념이 scale 이다.

Scaling Up

기존 서버의 사양안에서 CPU, 메모리, 디스크와 같은 자원을 컴퓨팅 파워와 저장소를 늘리기위해 더하는 것

컴퓨팅 자원을 늘리게 되면 클라이언트로부터의 요구에 맞게 제공하고 처리할 수 있다.

장점

  • 간단하고 직관적이다 : 전통적이고 단순한 설계에 한해서 그냥 컴퓨팅 자원을 더하는 것은 훨씬 간단하다.
  • 강력한 서버 하드웨어를 가질 수 있다.

단점

  • 한계가 있다. : 더 많은 자원을 계속해서 더하게 되면 한계에 부딫힐 것이다.
  • 컴퓨팅 자원에서 병목현상이 발생한다. : 물리적인 서버에 컴퓨팅 자원을 더하면서 모든 구성요소에 균형있게 성능을 증가시키는 것이 쉽지않다.
  • 비싸다 : 더 높은 컴퓨팅 리소스를 원하면 당연히 가격도 ..

이러한 단점으로 인해 Scale Up 의 경우는 단기적인 해결방법이다.

Scaling Out

스케일 업 방식의 한계를 보완하는 방식이다.

프로그램을 운영하기위해 필요한 충분한 리소스 만큼만 서버의 개수를 늘려가며 가지도록 하는 것 (로드밸런싱 필수)

장점

  • 장기적인 스케일링 능력을 가짐
  • scaling back이 쉬움 : 단순히 pod 의 갯수를 줄여가며 되돌아 갈 수 있다. 이는 노는 컴퓨팅 자원이 없고 다른 필요한 곳에 자원을 쓸수 있다는 장점
  • 상업적인 서버에 사용가능 : 필요에 따라 늘리기가 가능

pod : 쿠버네티스에서 생성하고 관리할 수 있는 배포 가능한 가장 작은 컴퓨팅 단위

단점

  • 다시 설계하는 과정이 필요할지도 모른다. : 응용 프로그램이 monolithic 한 프로그램이라면 스케일 아웃을 위해 다시 설계 해야한다.

stateless application

그렇다면 요청과 응답 사항을 저장하지않는 stateless 구조의 응용프로그램의 경우에는 스케일링이 어떻게 이루어질까?

인터벌로 load를 확인해가면서 pod의 개수를 늘렸다 줄였다 한다.

stateful application

영구적으로 데이터를 저장하는 응용프로그램의 경우 한번 데이터가 저장되어 스케일 아웃이 이루어지면 다시 되돌아가는 스케일 백이 어렵다.

summary

응용프로그램을 개발하고 운영해야하는 입장에서 이를 돌릴 수 있는 컴퓨팅 성능과 자원의 크기는 상당히 중요하다. 따라서 컴퓨팅 파워를 확장하는 방법에 대해 살펴보았다.

profile
해삐한 다영의 컴퓨터와 친해지기 프로젝트 🥰

0개의 댓글