더북(TheBook)

수평적 확장은 단위 처리 성능에도 악영향을 줍니다. 클라이언트가 어떤 메시지를 처리했는데, 그 메시지를 처리하기 위해 서로 다른 서버 1 → 2 → 3을 거쳐야 한다고 가정해 봅시다. 이때 메시지를 처리하는 데 소요되는 시간은 서버 1 → 서버 2, 그리고 서버 2 → 서버 3을 거치는 데 걸리는 시간입니다.

다시 말해서 메시지 하나를 처리하는 데 다음 과정이 반복됩니다.

유저 프로세스 → 커널 → 디바이스 → 회선 → 라우터 → 회선 → 디바이스 → 커널 → 유저 프로세스

이 과정에서 버퍼링으로 지연 시간이 발생합니다. 게다가 TCP 네트워크의 특성상 Nagle 알고리즘이 작용하거나 서버 간 통신 자체가 과부하를 일으키면 원치 않는 지연 시간이 추가로 발생할 수도 있습니다.

결국 수평적 확장은 단위 처리 성능이 수직적 확장보다는 느립니다. 그럼에도 이 모두를 상회하는 장점은 총 처리량입니다. 수직적 확장은 처음 언급했던 하드웨어 성능의 한계 때문에 더 이상 올라가지 못합니다. 하지만 수평적 확장은 그러한 제약 없이 늘린 서버 대수만큼 서버의 총 처리량이 증가합니다.

수직적 확장은 단위 성능과 구조 측면에서 유리하지만 확장성에 한계가 있습니다. 수평적 확장은 그 반대이지만, 확장성을 결국 해결합니다. 많은 대용량 서버에서는 수평적 확장이 고려되어 설계되지만, 개발의 경제성과 성능을 위해 실제로는 수평적 확장과 수직적 확장을 혼합해서 설계됩니다. 자세한 것은 9장 분산 서버 구조에서 설명하겠습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.