TECH Standard 1.MMORPG의 글로벌 원빌드를 위한 기술적 도전
글로벌 프로젝트에서 가장 먼저 고려한 것은 안정성이었다. 우리나라와 달리 네트워크 상황이 좋지 않은 국가에서도 안정적으로 게임할 수 있는 환경을 구축하는 것이 큰 과제였다. 네트워크가 끊기면 게임을 원활하게 즐기기 어렵고 플레이어의 여러 활동이 사라질 수 있다. 그러므로 네트워크는 느리더라도 안정적으로 연결되어야 하고, 끊기더라도 금방 복구할 수 있어야 한다. 이처럼 빨리 복구하려면 정보를 작은 단위로 쪼갠 대량의 데이터를 한번에 처리해야 하는데, 이 조건에 부합하는 기술이 바로 RIO였다.
일반적으로 MMORPG에서 주로 사용하는 IOCP(I/O Completion Port)는 스레드를 자동으로 관리해주기 때문에 안정적이다. 또한 송수신이 완료되면 알려주기 때문에 비동기 프로그램 방식을 사용할 수 있어서 고성능 프로그램 개발에 유용하다. 택배 시스템을 생각하면 쉽다. 택배의 현재 위치를 계속 일일이 알리지 않고, 도착할 때만 보낸 사람과 받는 사람에게 알리는 것과 비슷하다. 이렇게 하면 CPU가 그사이 다른 일을 처리할 수 있다. IOCP 다음에 발표된 기술인 RIO(Registered I/O)는 개발 난도가 높지만 안정성은 물론 작은 단위로 이루어지는 대량 통신의 효율성이 IOCP보다 좋다. 즉, 관리 체계가 잘 잡힌 택배사를 통해 더 안정적으로 더 많은 택배를 처리한다고 보면 된다.
〈리니지W〉는 원래 IOCP로 시작했지만 고민 끝에 출시 직전에 RIO로 교체했다. 출시 직전에, 그것도 국내는 물론 해외에서도 실제 프로젝트에 적용된 예가 없었던 기술을 도입한다는 것은 상당한 모험이었으나 자신 있게 시도한 이유가 있었다. 엔씨의 다른 프로젝트에서 이미 RIO를 적용하고 검증까지 끝마친 상태였기 때문이다. 엔씨의 다양한 시도들이 공유되어 후발 프로젝트의 생산성과 안정성을 끌어올리는 데 지대한 영향을 미쳤고, 그 결과 신기술을 원활하게 도입할 수 있었다.
RIO를 실제로 적용해보니 IOCP에 비해 CPU 사용량이 현저히 낮고 안정적이었으며, 메모리 증가나 서버 부하도 크지 않았다.(!!) 이를 통해 글로벌 환경에서 대규모 플레이어가 이동하거나 전투할 때 움직임이 지연되지 않고 보다 자연스러워져 플레이어가 체감할 정도가 되었다.