4.6.2 확장성
확장성이란 서버를 얼마나 많이 설치할 수 있느냐를 의미합니다. 게임 사용자 측면에서 ‘사용자 수가 늘어나더라도 서비스 품질이 떨어지지 않고 유지되느냐’가 곧 확장성을 의미합니다. 확장성이 확보된 게임 서버는 사용자 수가 어마어마하게 많을 때(동시접속자 10억 명 정도)조차 서비스를 이용할 때 서버가 죽거나 느려지지 않고 쾌적한 게임 환경을 제공합니다.
서버 확장성을 올리는 방법에는 크게 수직적 확장(scale-up)과 수평적 확장(scale-out)이 있습니다. 쉽게 말해서 수직적 확장은 서버의 하드웨어를 더 좋은 것으로 바꾸는 것이고, 수평적 확장은 서버의 컴퓨터 개수를 늘리는 것입니다.
표 4-1에 두 방법의 장단점을 비교해 두었습니다.
▼ 표 4-1 수직적 확장과 수평적 확장
구분 |
수직적 확장 |
수평적 확장 |
확장 종류 |
서버 머신의 부품을 업그레이드 혹은 서버 머신 안의 CPU, RAM을 증설한다. |
서버 머신의 개수를 증설한다. |
서버 소프트웨어 |
낮다. |
높다. |
확장 비용 |
높다(기하급수적으로 높아진다). |
낮다(선형적으로 높아진다). |
과부하 지점 |
서버 컴퓨터 자체 |
네트워크 장치 |
오류 가능성 |
낮다(로컬 머신 안에서 동기 프로그래밍 방식으로 작동하므로). |
높다(여러 머신에 걸쳐 비동기 프로그래밍 방식으로 작동하므로). |
단위 처리 속도 |
높다(로컬 컴퓨터의 CPU와 RAM만 사용). |
낮다(여러 서버 컴퓨터 간의 메시징이 오가면서 처리하므로). |
처리 가능 총량 |
낮다(서버 컴퓨터 한 대의 성능만 사용하므로). |
높다(여러 서버 컴퓨터로 부하가 분산되므로). |