#scale-up, #scale-out

Scale-up과 Scale-out에 대해 알아보자!

image origin: bemax.co.kr

서비스를 제작하고, 성공적으로 배포까지 마쳤다.

운 좋게도 점점 많은 유저가 유입되기 시작했고, 수많은 유저가 동시접속하는 서비스가 되었다.

기쁨도 잠시, 문제가 생겼다. 기존에 사용하던 서버가 한계에 도달했다. 인프라를 확장해야 할 필요성을 느끼게 된 것이다.

이번 글에서는 인프라를 업그레이드하는 방법인 스케일 업(Scale-up)스케일 아웃(Scale-out)에 대해 알아볼 것이다.

스케일 업(Scale-up)

scaleup drawio (1)

스케일 업(Scale-up)은 쉽게 말하면 기존의 서버를 보다 높은 사양으로 업그레이드하는 것을 말한다. 하드웨어적인 예를 들면, 성능이나 용량 증강을 목적으로 하나의 서버에 디스크를 추가하거나 CPU나 메모리를 업그레이드시키는 것을 말한다.

이처럼 하나의 서버의 능력을 증강하기 때문에 수직 스케일링(vertical scaling)이라고도 한다.

소프트웨어적인 예로는 AWS의 EC2 인스턴스 사양을 micro에서 small, small에서 medium 등으로 높이는 것으로 생각하면 된다.

스케일 아웃(Scale-out)

image

스케일 아웃(Scale-out)은 장비를 추가해서 확장하는 방식을 말한다.

기존 서버만으로 용량이나 성능의 한계에 도달했을 때, 비슷한 사양의 서버를 추가로 연결해 처리할 수 있는 데이터 용량이 증가할 뿐만 아니라 기존 서버의 부하를 분담해 성능 향상의 효과를 기대할 수 있다.

서버를 추가로 확장하기 때문에 수평 스케일링(horizontal scaling)이라고도 불린다.

클라우드 서비스에서는 자원 사용량을 모니터링하여 자동으로 서버를 증설(Scale Out)하는 Auto Scaling 기능도 있다.

스케일 업(Scale-up)과 스케일 아웃(Scale-out)의 장단점 비교

image

  • 스케일 업

스케일 업 아키텍처에서는 추가적인 네트워크 연결 없이 용량을 증강할 수 있다. 스케일 아웃보다 관리 비용이나 운영 이슈가 적고, 사양만 올리면 되는 것이기 때문에 비교적 쉽다.

다만 성능 향상에 한계가 있으며 성능 향상에 따른 비용부담이 크고, 서버 한 대가 부담하는 양이 많아서 자연재해 등의 다양한 이유로 서버에 문제가 생기면 큰 타격을 입게 된다.

또한 기존의 서버를 교체함으로써 성능을 올릴 때에는 서비스를 이용할 수 없는 다운타임이 불가피하다.

  • 스케일 아웃

스케일 아웃 아키텍처의 가장 큰 장점 중 하나는 확장의 유연성에 있다.

스케일 업 시스템을 구축한 상황에서는 향후 확장 가능성에 대비해 서버를 현재 필요한 만큼보다 더 많은 용량이나 성능을 확보해놓는 경우가 많다.

그러나 이런 경우 예상했던 정도와 요구되는 정도가 다르거나, 확장의 필요성이 없어졌을 경우 추가로 확보해놓은 만큼의 손해가 발생하게 된다.

스케일 아웃 방식으로 시스템을 구축한 상황에서는 서버를 필요한 만큼만 도입해 놓고, 장기적인 용량 증가 추이를 예측할 필요 없이 그때그때 필요한 만큼 서버를 추가해 용량과 성능을 확장(pay-as-you-grow)할 수 있게 된다.

다만, 스케일 아웃도 장점만 있는 것은 아니다. 무엇보다 여러 노드를 연결해 병렬 컴퓨팅 환경을 구성하고 유지하려면 아키텍처에 대한 높은 이해도가 요구된다. 서버의 수가 늘어날수록 관리가 힘들어지는 부분이 있고, 아키텍처의 설계 단계에서부터 고려되어야 할 필요가 있기 때문이다.

여러 노드에 부하를 균등하게 분산시키기 위해 로드 밸런싱(load balancing)이 필요하고, 노드를 확장할수록 문제 발생의 잠재 원인 또한 추가한 만큼 늘어나게 된다.

마무리

인프라 확장 방식으로 스케일 업과 스케일 아웃에 대해 알아보았다.

글만 봤을 땐 스케일 아웃이 스케일 업보다 뛰어나 보이지만, 무조건 뛰어나다고 단언할 수는 없다.

서비스를 제공하는 어플리케이션의 종류나 스토리지의 용도 등에 따라 선택할 수 있을 뿐이다.

빅데이터의 데이터 마이닝이나 검색엔진 데이터 분석 처리 등을 대표하는 OLAP(Online Analytical Processing) 어플리케이션 환경에서는 대량의 데이터 처리와 복잡한 쿼리가 이루어지기 때문에 스케일아웃 구성이 더 효율적이다.

반면 온라인 금융거래와 같이 워크플로우 기반의 빠르고 정확하면서 단순한 처리가 필요한 OLTP(Online Transaction Processing) 환경에서는 고성능의 스케일 업 방식이 적합하다고 한다.

Reference

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

https://ojava.tistory.com/184

https://jins-dev.tistory.com/entry/Scaling-%EC%9D%98-%EC%A2%85%EB%A5%98%EC%97%90-%EB%8C%80%ED%95%9C-%EC%A0%95%EB%A6%AC