모두들 이미 다들 잘 알고 있는 이야기겠지만 은근 헷갈릴 수 있는 용어라 간략히 정리해두고 가고자 한다.
클라우드 서비스는 기존의 서버 구축 방식인 on-premise에 비해 사용하는 만큼만 비용을 부과하는 on-demand 방식이라, 장비나 공간을 원하는 만큼만 사용할 수 있도록 잘 구축되어 있다.
따라서 원할 때 확장/축소를 자유롭게 할 수 있기에 유동성, 확장성이 좋다는 점이 가장 큰 장점이다.
기본적으로 일반적인 사용량만큼만 서버 공간을 할당해뒀다가 이벤트 등으로 사용자가 몰릴 것을 예상해서 해당 기간에만 서버를 증설하는 등 유연하게 대처할 수 있다. (물론 요즘은 똑똑해진 클라우드 서비스에서 알아서 사용량에 맞춰서 자동으로 증설해주는 기능도 제공한다.)
이 때 성능 향상 방식에 따라 용어가 일부 달라서 개념 정리를 하고자 한다.
1. Scale Up (스케일 업)
- 기존 장비의 CPU, RAM 추가, Disk 증설 등 고사양의 부품으로 교체하거나 서버 자체를 고사양으로 변경하는 형태로 성능을 향상시키는 방식
- 수직적인 확장
- 비용이 스케일 아웃 방식에 비해 비싸고 확장에 한계가 있음
- 집중방식으로 구성해야 하거나 분할 처리가 어려운 경우 적합하며 주로 데이터베이스 서버에 적용함
- 확장을 위해 다운타임이 발생함
- 장애 발생 시 영향도가 큼
2. Scale Out (스케일 아웃)
- 기존 장비에 덧붙여 새로운 장비를 추가하여 성능을 향상시키는 방식
- 수평적인 확장
- 비용이 스케일 업 방식에 비해 저렴하고 지속적 확장 가능
(단, 소프트웨어 비용이 서버 대수마다 부과되면 비용이 더 비싸질 수 있음)
- 분산처리/병렬처리 방식이라고 생각하면 쉬움
- 일부 서버가 장애 등으로 중단되더라도 다른 서버에서 요청을 처리하면 되므로 안정적인 서비스 가능
- 요청이 들어오는 걸 여러 장비에서 처리할 수 있도록 각 요청을 나눠줄 수 있는 로드밸런싱(Load Balancing)이 필수적임
- 여러 서버에서 처리해도 무관한 web server, web application server 등에 적합
클라우드 서비스에서는 자원 사용량을 모니터링하여 자동으로 자원을 증설하는 Auto Scaling기능도 제공한다. 이 때 사용되는 성능 향상 방식은 Scale Out을 의미하는 경우가 대부분이다.
각 방식에 따라 장단점이 있으므로 운영중인 서비스에 따라 성능 향상방식을 취하면 되고, 두 가지 방식을 동시에 적용하는 경우도 있으니 적절한 비용을 들이면서 최적의 효과를 볼 수 있도록 계획을 잘 세우는 것이 중요하겠다.