'가상 면접 사례로 배우는 대규모 시스템 설계 기초'를 읽고 작성하는 글
운영 중인 서버의 트래픽이 늘어나게 된다면 기존 서버의 확장을 고려해봐야 한다. 서버의 확장에는 크게 '수직적 규모 확장'과 '수평적 규모 확장'이 있다. 수직적 규모 확장은 스케일업(Scale Up)이라고도 불리는데 말 그대로 서버의 사양을 늘리는 방법이다. 더 좋은 CPU나 RAM등을 추가하는 행위이다. 그러나 수직적 규모 확장에는 한계가 존재한다. 한 대의 컴퓨터에 CPU와 RAM을 무한대로 증설할 방법은 없으며 장애가 발생했을 때의 대처도 힘들며 비용도 많이 든다. 이러한 단점으로 인해 대규모 애플리케이션을 지원하는 데는 수평적 규모 확장이 적합하다. 따라서 이 글에는 수평적 규모 확장에 대해 다룰 것이며, 더불어 로드밸런싱에 대해서도 알아볼 것이다.
스케일 아웃(Scale Out)이라고 불리는 수평적 규모 확장은 더 많은 서버를 추가하여 성능을 개선하는 것이다. 수평적 규모 확장의 장점은 다음과 같다.
여러 대의 서버를 운영 중일 경우 서버 간에 네트워크 트래픽을 균등하게 배포해야할 필요성이 있다. 이를 위해 로드밸런싱을 수행하여야 하며 로드 밸런싱의 이점은 다음과 같다.
사용자는 로드밸런서의 공개 IP 주소로 접속한다. (웹 서버는 클라이언트의 접속을 직접 처리하지 않음) 서버 간 통신에는 사설 IP 주소가 이용된다. 클라이언트의 요청은 로드밸런서에 의해 분산 처리된다.