[NDC2015] 온라인과는 다른 모바일 패치 시스템… '마비노기 듀얼'의 사례는?

게임뉴스 | 이동연 기자 |



게임사가 게임을 서비스할 때, 패치는 필수적으로 이루어진다. 그동안 PC 온라인게임에서는 20여 년 동안 노하우가 쌓이면서, 자동 업데이트 시스템을 적용해 패치를 하는데 큰 무리가 없었다. 하지만 시대의 흐름이 모바일로 바뀌면서 PC에서 적용한 방법 그대로 적용할 수가 없고, 다시 새롭게 시작해야 했다.

19일 판교에서 열린 NDC 2015에서 ‘마비노기 듀얼 패치 시스템’ 주제로 강연에 나선 김재석 개발자는 패치 시스템의 기본 구성 요소를 설명하고, 이것을 모바일 OS에 구성하는 방법, 그리고 마비노기 듀얼 프로젝트에 적용한 사례를 공유했다.







가장 먼저 자동 업데이트 시스템에 대해서 소개했다. 김재석 개발자는 자동 업데이트 시스템은 현재 버전이 최신 버전인지를 감지하고 아닐 경우 프로그램을 최신 상태로 갱신한다고 말했다.

"자동 업데이트 시스템을 다른 관점에서 바라보게 되면 버전을 볼 수 있는 방법이 있어야 패치를 만들 것이고(Version Control System), 그리고 그걸 어떤 식으로 배포를 할 것인지 고민을 해봐야 합니다(Content Delivery Network). 마지막으로 받아온 것을 다시 실제 원래 소프트웨어로 적용하는 것은 어떤 파일 시스템에서 처리할지 결정해야 됩니다.(File System).

자동 업데이트 시스템은 20년이나 된 체계이지만 이것을 다시 이야기하는 이유는 불행히도 모바일에서는 데스크톱에서 만든 환경을 그대로 가져다 쓸 수 없기 때문입니다.

사용자의 환경이 달라졌고, 유니티나 언리얼로 개발이 진행되는 것처럼 개발 환경도 많이 달라졌습니다. 가장 대표적인 예로는 운영체제 부분으로 PC에서는 윈도우즈였지만, 이제는 iOS와 안드로이드로 바뀌었습니다. 또한, 배포 플랫폼이 생겼다는 것도 다르다고 볼 수 있습니다."


김재성 개발자는 배포 플랫폼이 문제인 것은 아니지만, 단순하지만 긴급한 업데이트 때 통과되지 않아 치명적인 문제가 발생한다면서, 이를 방지하기 위해 패치를 직접 만드는 것이 필요하다고 밝혔다.










"패치를 만드는 것으로 돌아와서 아까 소개한 VCS(Version Control System), CDN(Content Delivery Network), FS(File System)를 각각 어떻게 구현할지 결정이 필요합니다. 외부 요인에 의해 정해지는 부분부터 해결하는 것이 좋습니다.

첫 번째로 콘텐츠 배달망(Content Delivery Network)에 대해 말하자면 자체 프로토콜로 선택할 것인지 아니면 잘 알려진 프로토콜을 사용할 것인지 선택해야 합니다. 하지만 자체 프로토콜은 자체 데이터 센터를 보유하고 있지 않는 한 배보다 배꼽이 더 커질 수 있기에 선택을 하지 않는 것이 좋습니다.

이제 남은 것은 배포 프로토콜인데 첫 번째로 BitTorrent가 있습니다. 대표적으로 스팀과 월드 오브 워크래프트가 이것을 사용하죠. BitTorrent는 비용이 싼대신 사용자의 패킷 사용량을 증가시키고, 대기 상태에서도 자원을 소모한다. 상대적으로 구현하기도 어려운 편입니다. 하지만 이것을 모바일 환경에서 사용할 수는 없습니다. 모바일 데이터 요금제는 사용량 기반으로 매겨지기 때문에 사용자에게 부담을 줄 수 없기 때문이죠.

두 번째로 S3/CloudFront 기반의 프로토콜이 있는데 마비노기 듀얼이 이 배포 프로토콜을 사용합니다. S3/CloudFront의 경우 API 및 라이브러리가 잘 갖춰져 있고, 일괄 수행 스크립트를 만들기 위한 언어 선택의 폭도 넓습니다. 또한, 초기 설정 이후에 S3에서 가장자리 서버까지 배포가 잘 되는 특징이 있습니다."








장점을 설명한 것에 이어 S3/CloudFront를 사용할 때의 주의점도 같이 언급했다.

"S3를 사용할 때 주의점으로는 색인 노출이 안되도록 설정이 필요합니다. 웹 기반 서비스 공통의 주의 사항이지만 S3의 경우 개별 경로 색인을 막아도 최상단 경로가 열려 있으면 전체 파일 목록이 보이기 때문에 주의가 필요합니다.

CloudFront를 사용할 때의 주의점으로는 가장자리까지 배포되는 데에는 예열이 필요하고, 같은 파일 이름으로 배포하면 파일이 1일 정도 지연되는 현상이 있습니다. 따라서 캐시 무효화 명령을 내리거나 항상 다른 이름으로 배포하도록 합시다"





두 번째로 버전 제어 체계(Version Control System)에 대해 설명했다. 버전 제어 체계는 Git, Mercurial, Plastic SCM 같은 분산 버전 제어 체계의 소프트웨어를 사용하지만, 상기한 기술들은 자동 업데이트로 한정하면 충분히 넘치는 사양이라면서 특정 버전을 받기 위해 필요한 방법과 비교를 위한 정보들. 그리고 HTTP 헤더를 소개했다.

그리고 버전을 확인하기 위한 정보와 색인 파일의 형태를 알려주고, 모바일 OS에서의 인코딩 방법과 실제 파일의 위치, 파일 이름 생성 규칙 등의 예시를 설명하였다.



▲ 특정 버전을 받기 위해 JSON 방식 채택



▲ 비교를 위해 필요한 3가지 정보 최종 변경시각, 파일 크기, 요약 해시



▲ 특별한 HTTP 헤더 목록



▲ 특별한 HTTP 헤더 목록2



▲ 버전을 판단하기 위해 필요한 정보들.



▲ 색인 파일의 형태들



▲ 바이너리 인코딩 방법 소개



▲ S3상에서 path/filename/digest를 사용하는 것으로도 충분



▲ 파일 이름 생성 규칙

세번째로 파일 체계(File System)의 경우 마비노기 듀얼 개발팀에서는 만들지 않는다면서 그 이유를 소개했다.

"파일 체계에 대해서는 사실 별로 말할 것이 없습니다. 파일 체계에 대해서 고려해야 하는 사항으로는 '파일 묶음', '압축', '암호화'가 있습니다. '파일 묶음'의 경우 모바일 게임 대부분의 게임 폴더를 살펴보면 폴더가 몇 개 없습니다. 패키지 파일이 열개 정도 생기는데, 이것을 묶어서 암호화 처리하면 되기 때문에, 마비노기 듀얼 안에서는 아주 명확하게 '하지 않는다'고 결론을 내렸습니다.

파일 묶음을 왜 해야 하는지 생각해 보면 데스크톱에서는 하드디스크를 쓰기 때문인데요. 하드디스크가 데이터를 처리할 때 묶음을 하나로 처리하는 것이 유리하기 때문에 사용합니다. 하지만 모바일에서는 하드디스크를 쓰지 않고 메모리 기반으로 접근하기 때문에 성능상의 이점이 없습니다.

파일 보안에 있어서도 모바일에서는 OS를 탈옥하지 않는 한 응용 데이터 경로가 막혀있습니다. 탈옥하는 사람은 어차피 보안 쪽을 건드릴 것이기 때문에 어설프게 하느니만 못하고요. 비용 대비 효율이 없기 때문에 진행하지 않습니다. 물론 안드로이드의 경우 이미지가 유출 당할 위험이 있기 때문에 간단한 암호화만 진행합니다"












마지막으로 색인 생성, 버전 관리, 지역화 리소스, 배포를 막는 방법 같은 팁에 대해 언급하며 강연을 마무리하였다.








































댓글

새로고침
새로고침

기사 목록

1 2 3 4 5
검색