수직 확장은 서버의 하드웨어를 더 좋은 것으로 교체하여 처리량을 늘리는 것을 의미합니다. 수평 확장은 서버 대수를 늘려서 더 많은 처리를 하는 것입니다. 일반적으로는 수평 확장이 더 현실적인 방법입니다. 수직 확장은 쉽게 할 수 있지만, 서버의 하드웨어 사양은 결국 한계가 있기 때문에 어느 선에서는 더 이상 할 수 없습니다. 하지만 수평 확장은 하드웨어 기기의 대수를 늘리기만 하면 되므로 상한선이 거의 없다고 할 수 있습니다.
수평 확장이 더 많이 사용되는 방법이지만, 소프트웨어 설계가 더 복잡하다는 대가가 따릅니다. 표 9-1에 두 가지 확장 방법의 장단점을 분석해 두었습니다.
▼ 표 9-1 수직 확장과 수평 확장 비교
구분 |
수직 확장 |
수평 확장 |
확장 종류 |
서버 머신의 부품을 업그레이드 혹은 서버 머신 안의 CPU, 램을 증설한다. |
서버 머신의 대수를 증설한다. |
서버 소프트웨어 설계 비용 |
낮다. |
높다. |
확장 비용 |
높다(기하급수적으로 높아진다). |
낮다(선형적으로 높아진다). |
과부하 지점 |
서버 컴퓨터 자체 |
네트워크 장치 |
오류 가능성 |
낮다(로컬 머신 안에서 동기 프로그래밍 방식으로 작동하므로). |
높다(여러 머신에 걸쳐 비동기 프로그래밍 방식으로 작동하므로). |
단위 처리 속도 |
높다(로컬 컴퓨터의 CPU와 램만 사용). |
낮다(여러 서버 컴퓨터 간 메시징이 오가면서 처리하므로). |
처리 가능 총량 |
낮다(서버 컴퓨터 한 대 성능만 사용하므로). |
높다(여러 서버 컴퓨터로 부하가 분산되므로). |
또 수평 확장은 수직 확장으로 향상되는 서버보다 단위 처리 속도가 더 느릴 수 있습니다. 경우에 따라 잘 만들어진 수평 확장 서버라고 하더라도 수평 확장을 하기 전 서버보다 처리 속도가 더 느리기도 합니다. 어째서 이러한 일이 발생하는지는 이 장을 끝까지 다 읽으면 알 수 있습니다.