이제는 한국에만 서비스하는 게임이 드물 정도로, 수많은 국가에 다양한 게임들이 출시되고 있다. 각 게임들은 다양한 서비스 전략을 가지고 있는 만큼 이를 하나의 서비스 플랫폼으로 수용한다는 것은 쉬운 일은 아니다. 오늘(4일) 코엑스에서 개최된 카카오 개발자 컨퍼런스 'if Kakao 2018'에서 '모바일 게임플랫폼과 인프라 구축 경험기' 강연을 진행한 인프라 운영을 담당하고 있는 최양민 개발자와 게임 플랫폼 개발을 담당하는 이강인 개발자는 안정적인 게임 서비스를 제공하기 위해 그들이 고민했던 크고 작은 경험들을 공유하는 시간을 가졌다.

강연을 본격적으로 시작하기에 앞서 최양민 개발자는 특히 인프라 및 게임 플랫폼을 담당하는 팀은 두세 명에 불과한 작은 팀인 만큼 한 명 한 명의 역할이 중요할 수밖에 없었다고 설명했다. 이번 강연에서는 소수로 구성된 팀이 다양한 형태로 글로벌 서비스를 제공하는 게임들을 하나의 서비스 플랫폼으로 수용하는 과정에서 겪었던 경험을 들어볼 수 있었다. 또한, 글로벌 플랫폼을 위한 인프라, 게임 플랫폼 구성 과정과 라이브 서비스에서 발생한 문제점에 대한 해결방안까지 단계별로 확인해보는 시간을 가졌다.

▲카카오게임즈 최양민 개발자

첫번째 순서로 카카오게임즈의 최양민 개발자가 나와 글로벌 플랫폼을 위한 인프라 구성에 대해서 설명했다. 글로벌 서비스를 위해서는 먼저 인프라를 어디에 배치할 것인지에 대한 고민이 필요했다. 이때 중요한 점은 서비스 대상 지역의 네트워크상태를 파악하는 것이다.

동남아시아에 소프트런칭을 계획한 만큼 현지의 네트워크 상황에 대한 파악이 필요했으나, 해외 네트워크 품질을 파악하기란 쉬운 일이 아니었다. 관련 외부 서비스마다 비용도 다를뿐더러 방법도 달라 결과물이 각각 달랐던 것이다. 이에 최양민 개발자는 장기적으로 현황을 상시 확인할 수 있는 지표를 만들면 좋겠다는 생각으로 자체적으로 개발하게 되었다고 설명했다.


이를 통해 AWS로 가용할 수 있는 범위를 선정하고 각 주요 국가마다 지역을 선정해 측정을 시작했다. 네트워크 레이턴시를 측정하고, 동남아시아에 소프트런칭을 하기 위해서 가장 적합한 인프라 위치가 어디인지 파악해보는 과정이 이루어졌다. 한국에서 직접 글로벌 서비스를 진행하기에는 네트워크적으로 적합하지 않았고, 훨씬 더 레이턴시 값이 양호한 싱가폴에 구성하기로 결정되었다.

이어 동남아 현지에 AWS를 사용할지, 직접 인프라를 구성해서 배치할지에 대한 추가적인 고민이 이루어졌다. 이는 각 비용에 대한 시뮬레이션을 통해 결정됐다. IDC 인프라를 통해 진행할 경우, 초반 비용이 많이 들지만, 장기적으로 볼 때 AWS보다 훨씬 더 저렴하다는 장점이 있었다.


하지만 최근 모바일 게임 서비스들은 3개월이면 서비스 지속 여부를 결정해야 할 만큼 수명이 짧다는 문제가 있었고 따라서 장기 서비스를 바라보고 초기 투자 비용이 많이 드는 IDC 인프라를 구축하기에는 리스크가 있었다. 이에 최양민 개발자는 서비스 추이를 보면서 장기/단기 서비스로 파악해야 하며, 초기에는 클라우드를 통해 서비스하고 손익분기점이 되는 3~10개월 사이에 직접 구성할지에 대해 판단하고 있다고 설명했다.

▲카카오게임즈 이강인 개발자

이어 이강인 개발자가 나와 게임플랫폼 구성에 대해서 설명했다. 글로벌 서비스를 진행한다고 하더라도 게임 플랫폼의 본진은 한국에 있다. 따라서 인도네시아에서 서버 접속을 할 경우 속도가 느려진다. 거리가 멀다면 어쩔 수 없는 문제이기 때문이다. 아무리 빠른 서버를 가져다 쓰더라도 거리가 멀다는 물리적 격차는 메워질 수 없다. 이강인 개발자는 이를 해결하기 위한 가속 솔루션에 대해서 설명했다.

기존 게임 플랫폼에 가속 솔루션을 추가하고 이를 통해 접속이 원활하게 진행됨을 테스트할 수 있었다. 가속솔루션은 세 번씩 튕겨야 하는 TCP handshake with TLS를 진행할 때 서버 클라이언트를 가까운 곳에 두어 접속을 빠르게 해주고, 한번 연결되면 그 이후 통신은 빨라지기 때문에 원활하게 이루어진다. 이와 함께 어느 IP로 접속해야 하는지 분산시켜주는 GSLB 또한 접속을 원활하게 해준다.


이강인 개발자는 이어 직접 가속 솔루션을 개발하게 된 과정과 발생한 문제점에 대해서 설명했다. 기존 플랫폼에 릴레이 서비스를 추가하는 방식으로 구상했으나, API Gateway보다 앞에 있게 되어 보안문제가 있었으며, 각 API가 허용되어야 하는지에 대한 여부를 한국에까지 와서 확인해야 하는 번거로운 절차가 되어버렸다.

이에 릴레이 서비스를 API Gateway 뒤에 배치해 보안은 Gateway에서 처리하고, 이후 트래픽만 관리하는 식으로 구성했다. 측정결과 가속 솔루션과 비교해 레이턴시 차이가 없었으며, 지역에 대한 모니터링이 가능하고 비용이 저렴해진다는 장점이 있었으나, 서버가 많아져 관리가 필요해졌다.


서버가 많아졌다는 것은 생각보다도 많은 작업을 요구했다. 모니터링, 서버배포, 오토 스케일링 부분에서 기존에 구축해둔 시스템을 사용할 수 없었으며, 그 외에도 미처 예상하지 못한 이슈가 발생했던 것이다.

이강인 개발자는 먼저 각각의 모니터링 업무는 모니터링 분석기에 넣어 알람 서버와 연동하는 방식으로 개선했다고 설명했다. 이를 통해 장애가 발생하거나 의심되는 상황이 있을 때 카톡이나 이메일로 전달된다. 다만 과도한 알람을 방지하기 위해 서비스별로 오류로 판단할 기준에 대한 규칙을 적용할 필요가 있었다고 이강인 개발자는 덧붙였다.


서버 배포의 경우, 배포 프로세스를 재구성할 필요가 있었다. 기존의 배포시스템에서는 svn의 용량 제한이 2기가인데다가 패치를 계속하면서 디파짓이 계속 늘어나는 현상이 일어난것이다. 또한, 사업적으로 계속해 변경될 수 있는 부분이 많은 만큼, 오토 스케일링 시스템을 구축하는 것이 중요했다.

서비스를 시작했으나, 다양한 문제점들이 생겨나기 시작했다. 이강인 개발자는 몇 가지 사례를 통해 그들이 겪었던 문제점과 해결방법을 소개했다.

말레이시아 유저가 싱가폴을 통해 접속하는 것이 아니라 바다 건너 일본을 통해 접속하는 트래픽이 관찰된 사례가 있었다. 와이파이 공유기를 사용하는 유저들을 대상으로 간혹 일어나는 현상으로, GSLB가 IP를 알려주는 과정에서 오류가 발생한 것이다. 이는 직접 어떤 경로로 접속할지를 제어해줌으로써 의도된 대로 동작하도록 풀어냈다.

▲그외에도 다양한 문제점이 일어났다

게임 서비스는 잘 될 때도 있으나, 잘 되지 않을 때도 있다. 이렇게 인프라 및 플랫폼을 구축해놨으나 사업을 접게 되는 상황이 올 수 있다. 이런 경우 대부분의 게임은 서비스를 완전히 끝내는 것이 아니라 남은 유저들이 느리더라도 플레이는 할 수 있도록 유지하는 경우가 많다. 이강인 개발자는 이럴 경우에는 접속을 무조건 서울로 접속하도록 후퇴하는 방식으로 구성한다고 설명했다.

▲스토리지 동기화는 조금 더 그 과정이 까다롭다

카카오 플랫폼 또한 진출과 후퇴를 여러 번 겪어왔다. 마지막으로 이강인 개발자는 “카카오 플랫폼은 안정적이고 규모 가변적이며, 기민하고 유연하게 움직일 수 있는 플랫폼과 인프라를 추구하고 있다”고 설명하며 강연을 마무리했다.