더북(TheBook)

수직적 확장은 단지 하드웨어를 더 좋은 것으로 바꾸는 것입니다. 따라서 소프트웨어의 구조에 변화를 줄 필요가 없고, 소프트웨어 설계에 시간이 덜 듭니다. 반면 수평적 확장은 서버 프로그램의 구조가 복잡해집니다. 따라서 설계에 드는 시간 비용이 높아집니다. 프로그램 개발의 용이성 측면에서는 수직적 확장이 우세합니다.

그러나 수직적 확장은 비용이 많이 듭니다. 컴퓨터는 고사양일수록 가격이 기하급수적으로 상승합니다. 게다가 현재 컴퓨터의 CPU 속도는 코어 하나당 4GHz인데, 한동안은 이 수치를 넘기 어려울 것으로 예상됩니다. 따라서 컴퓨터 성능을 2배 높이는 것은 가능하다 쳐도 200배 좋게 하는 것은 불가능할 수 있습니다. 수평적 확장을 할 때는 이를 쉽게 해결할 수 있습니다. 컴퓨터 200대를 갖다 놓으면 이것의 총 처리량은 200배인 셈입니다.

수직적 확장 상황에서 과부하 지점은 서버 컴퓨터 그 자체입니다. 서버 컴퓨터 한 대가 동시접속자 1만 명을 처리할 경우, 동시접속자 2만 명에서 과부하 지점은 서버 컴퓨터 한 대가 됩니다. 하지만 수평적 확장을 할 수 있는 서버에서 이러한 문제는 서버 대수를 늘림으로써 쉽게 해결됩니다. 이때 발생하는 과부하 지점은 서버들을 묶고 있는 네트워크 장비들이기는 하지만, 이들 네트워크 장비는 쉽게 과부하에 부딪히지 않습니다. 매우 많은 양의 처리를 쉽게 감당하기 때문입니다.

안타깝게도 수평적 확장은 소프트웨어 구조가 복잡해지는 것으로만 끝나지 않습니다. 특정 데이터 처리를 여러 서버에 걸쳐서 작동해야 하는데, 여기서 다양한 문제가 발생합니다. 일반적으로 컴퓨터 한 대 안에서 발생하는 처리 속도보다 여러 컴퓨터에 걸쳐서 처리하는 속도가 훨씬 느립니다. 그러다 보니 서버 간 상호 작용하는 처리에서 성능 하락이나 예전 데이터를 다루는 에러 현상(stale)이 발생하기도 합니다.

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