배경
- 100만명의 동시 접속자를 한 대의 서버가 감당할 수 있을까? 불가능할 것이다. 서버의 성능을 높이려면 어떻게 해야 할까?
- 여기 두 가지 방법이 있다!

방법1. Scale-up (스케일 업)
- 더 성능이 좋은 하드웨어(
CPU
,RAM
)를 사용한다. 즉, 서버 자체의 성능을 높이는 것이다. '수직 확장'이라고도 한다. - 장점
- 관리, 운영 측면에서 편리하다.
- 구조가 단순하다.
- 단점
- 하드웨어의 한계로 성능 확장에 한계가 있다.
- 서버 증가에 따라 비용 증가 폭이 커서 일반적으로 비싸다.
- 한 대의 서버에 부하가 집중되므로 장애 발생 시 영향이 크다.
- SPOF (single point of failure, 단일 장애점)
: 시스템 구성 요소 중에서, 동작하지 않으면 전체 시스템이 중단되는 요소 - 스케일업에서는 서버에 SPOF 이 존재하게 되므로 서비스 안정성, 신뢰성 측면에서 좋지 않다.
- SPOF (single point of failure, 단일 장애점)
- 활용 예시
- 데이터베이스 : 데이터 정합성을 유지하기 어려우므로 스케일 업이 적합
방법2. Scale-out (스케일 아웃)
- 서버의 대수를 여러 대로 증가시킨다. '수평 확장'이라고도 한다.
- 장점
- 확장이 유연하다.
- 비교적 비용이 저렴하다.
- 여러 대의 서버가 분산 처리하기 때문에 장애 발생 시 영향이 적다.
- 단점
- 병렬 컴퓨팅으로 설계, 구현이 어렵다.
- 직렬화되어야 하는 부분이 존재
- 활용 예시
- 웹 서버 : 데이터 정합성 유지가 어렵지 않고, 스케일업으로는 해결되지 않는 경우가 많으므로 스케일 아웃이 적합
결론
- 각 방법의 장단점을 이해하고 경우에 따라서 알맞게 활용해야 한다.