동접자 41만.



작년 한 해 게임계를 들썩였던 메이플스토리 빅뱅 업데이트의 기록이다. 대부분 사람들은 "어떻게 기획하면 저런 기록을 만들 수 있는가"에 대한 의문이 많지만, 다른 한쪽에서는 "41만 동접자를 어떻게 버텼는가?" 라는, 조금은 전문적인 의문을 가진 사람들이 있다. 그러한 현역개발자들을 대상으로 열린 넥슨 황의권 팀장의 '더 잘되는 게임을 위한 라이브 코어 개발' 강연에 참석해 이야기를 들어보았다.




[ 강연을 진행한 넥슨 황의권 개발팀장 ]




일반적인 형태의 게임 개발의 경우, 프로젝트라는 이름으로 개발에 착수, 최종 릴리즈 되기까지의 과정은 비교적 순탄하다. 게임이 릴리즈되기 전까지는 유저들에게 공개가 되지 않는다는 점을 포함해, 만약 작업 진행 중 치명적인 실수가 발견되더라도 그러한 조치로 인해 고객의 피해가 발생하지는 않기 때문이다.



허나, 이미 라이브(Live)된 게임에서 추가적으로 개발을 진행하는 경우, 프로젝트 형태의 개발과는 또다른 난점이 있게 된다. 이러한 라이브 게임의 컨텐츠와 플랫폼을 아우르는 라이브 코어(Live Core)를 개발함에 있어 어떤 부분을 조심해야 하는지, 그리고 최근 진행했던 대규모 업데이트를 통해 얻은 경험에는 무엇이 있는지, 그 배움들을 공유하는 시간으로 강연이 채워졌다.




[ 라이브 개발의 제 1목표는 '방어' ]




"라이브 개발에서 가장 중요한 목표는 방어"라는 화두와 함께 강연이 시작되었다. 라이브 개발의 목표는 지표의 하락추세를 '방어'하고, 돌발적으로 발생하는 이슈로부터 게임을 '방어'하며 '유지보수'하는 것 - 가장 근본적인 속성이 무에서 유를 창조하는 프로젝트 개발과는 성격을 달리 한다. 허나 최근 라이브개발의 트렌드가 공격적 업데이트를 통해 재탄생 및 기존 지표를 경신하는 쪽으로 흐르고 있기에, 메이플 빅뱅 업데이트를 거치면서 겪은 일들을 이야기하기 시작했다.



최근 메이플스토리의 빅뱅 업데이트를 진행하면서 가장 크게 화두가 되었던 것 중 하나는, 최초로 시행된 해상도 조정 및 창모드 시스템 지원이었다. 유저들의 계속적인 요구가 있어왔던 사항이라 빅뱅 업데이트 동안 이 오랜 숙원도 해결하자는 취지로 진행이 되었던 것인데, 무에 그리 어려울 것 있겠는가 하는 마음에 덥석 OK를 하고보니 이게 그렇게 만만한 일이 아니었다고.



흔히 개발자들 사이에서 Legacy Code - '유산 코드'로 직역되는 단어가 라이브 코어의 개발에서 늘 고민이 되는 부분. 이전에 작성되어 현재 라이브가 되어 있는 코드인데 해당 코드의 작성자가 더이상 해당 프로젝트 내에 존재하지 않는, 말 그대로 '선조의 유산'과도 같은 코드들과 늘 싸워야 하는 라이브 개발에서는, 해상도 변경과 같은 단순한 변경 조차도 엄청나게 힘든 일로 변한다.



최초 DirectX 8.0을 기반으로 개발된 메이플스토리를 창모드 및 해상도 조정의 변경을 위해 코드를 라인단위로 뜯어보느니, 차라리 DirectX 9.0에 맞추는 것으로 해결방안을 찾았다고 말하면서, 강연자는 이 부분에서 "메이플스토리가 DirectX 8.0에서 창모드시 화면 주파수 동기화만 지원해 줬더라도 이 고생은 하지 않았을 것"이라고 말해 좌중의 공감과 웃음을 얻어내기도 했다.




[ 메이플스토리 해상도 조정 과정. 하단에 푸른 빈공간이 보인다. ]





이어서, 경이적인 동접자 수를 기록한 빅뱅업데이트를 통해 몰려드는 사용자들의 접속으로부터 서버를 '방어'했던 경험을 바탕으로 관련 이야기를 이어갔다.



"새로운 지표를 달성한다는 것, 그 자체가 아무도 가보지 못했던 곳을 처음으로 밟아보는 것과 같다"며, 이전까지 경험해 본 적이 없기에 어떤 일이 발생할지 모르고, 때문에 만전의 준비를 기해야한다고 말한 황의권 팀장은, 라이브 개발이야말로 실패가 용납되지 않는 영역이기 때문에, 이후에 발생할 수 있는 문제상황의 예측이 무엇보다도 중요하다고 말했다.



물론 예상되는 모든 사태에 대한 대비를 할 수 있으면 좋지만, 인적/물적 자원에 한계가 있기 때문에 전체를 아우르는 대비를 하는 것은 현실적으로 무리이다. 그렇기 때문에 예상되는 문제상황을 좁혀, 정확하게 "저격"할 필요가 있다고 역설하면서, 이러한 예측에 있어 경험과 통찰력은 상당한 도움이 된다고 밝혔다.



이렇게, 성공적으로 서버 부하 최고치를 제어한 경험이, 지금에 와서 돌이켜보면 프로젝트에 대한 폭넓은 이해와 배짱을 가져다 주었으며, 또한 개발자로서 자신의 능력에 대한 자부심으로 남았노라고 강연자는 말했다.




[ 서버는 안전하니 주무셔도 됩니다. ]




강연의 마지막은 같은 업무에 종사 중인 동료들에게 경험에서 우러나는 조언으로 채워졌다. 현역 개발자들이 흔히 범하기 쉬운 실수가 '자신의 최선을 추구하다 팀의 최선에서 벗어나는 경우'인데, 이러한 충돌하는 상황을 두고서 자신의 만족과 팀의 최선을 동시에 만족할 수 있는 교집합을 추구할 것을 부탁했다.



특히, 같은 팀 전체가 괜찮다고 하는데도 자신의 만족을 위해 빌드를 다시 짠다거나, 노력한 결과물이 완성되어 패치가 되려는 시점에서 '치명적이지 않은 마이너한 기능 개선'을 위해 팀의 일정을 미루는 등, 팀의 목표를 위해 절대로 해서는 안되는 금기 두가지를 염려하는 것으로 강연을 마무리 지었다.