서비스가 성장하여 사용자의 수, 트래픽이 증가하면 어느덧 기존의 서버는 한계에 다다르고 인프라를 확장해야 할 순간이 다가온다. 이럴 때 서버를 업그레이드하는 방법으로 Scale up과 Scale out 두 가지 방법이 존재한다.
스케일 업 (Scale up)
스케일 업은 기존 서버의 사양을 업그레이드하는 것을 말한다. 서버에 디스크를 추가하거나 CPU 혹은 메모리 등을 업그레이드하는 방법을 예시로 들 수 있다. 기존 서버의 성능을 향상시키기 때문에 수직 스케일링이라고 부르기도 한다.
- 스케일 업의 장점
(1) 하나의 서버만을 관리하면 되므로 편리하다.
(2) 추가적인 네트워크 연결이 필요하지 않다.
(3) 성능을 업그레이드하는 과정이 상대적으로 수월하다.
- 스케일 업의 단점
(1) 성능 향상에 한계가 존재한다.
(2) 성능 향상에 들어가는 비용이 크다.
(3) 한 대의 서버에 모든 부하가 집중된다. 장애가 발생할 경우 전체 시스템에 끼치는 영향이 크다.
스케일 아웃 (Scale out)
스케일 아웃은 서버 장비를 추가함으로써 기존 서버가 부담하던 부하를 분담하는 업그레이드 방식을 말한다. 수평 스케일링이라고도 부르기도 한다. 클라우드 서비스에서는 리소스 사용량을 모니터링하여 필요한 경우 자동으로 스케일 아웃이 이루어지는 Auto Scaling 기능을 제공하기도 한다.
- 스케일 아웃의 장점
(1) 확장에 한계가 없는 편이다.
(2) 비교적 적은 비용으로 업그레이드가 가능하다.
(3) 리소스가 분산되기 때문에 장애가 전체 시스템까지 이어질 가능성이 낮다.
- 스케일 아웃의 단점
(1) 시스템을 적절하게 병렬 분산시키기 위해서 아키텍쳐에 대한 높은 이해도가 필요하다. (분산된 시스템을 서로 동기화시키는 작업도 필요)
(2) 서버의 수가 증가할수록 관리의 편리도가 떨어진다.
결론
일반적인 경우에는 스케일 아웃이 더 적절한 해결책으로 보이지만 스케일 아웃이 무조건적으로 더 나은 해결책이라고 바라볼 수는 없다.
스케일 업은 오라클 DB와 같이 제어가 어렵거나 시스템의 분산이 어려운 작업, 혹은 빠르고 정확한 처리를 위해 고성능이 필요한 OLTP(Online Transaction Processing)과 같은 환경에서 강점을 가진다. 따라서 시스템의 목적에 적합한 인프라 확장 방법을 선택하는 것이 중요할 것으로 보인다.
'CS 공부' 카테고리의 다른 글
[CS] 프로세스와 스레드 (0) | 2022.04.16 |
---|---|
[CS] 스레드 안전 (Thread-safe) (0) | 2022.02.27 |
MSA (MicroService Architecture) vs Monolithic Architecture (0) | 2022.02.23 |
[OOP] 객체지향프로그래밍의 특성 (0) | 2022.01.31 |
2021-09-22 실시간 네트워킹 (HTTP vs Websocket) (0) | 2021.09.23 |