見出し画像

ポケモンGoのサーバーはたぶんGoogle、そしてもしかしたらDocker

ポケモンGoはサービス開始2カ月で急成長を遂げ、推測値を交えて言えば、おそらく50人以下のNiantic社によるこのゲームは1億件のダウンロード、3,000万人の利用者、累積4億ドルの売上規模に達しています。このサービスを支えるサーバーについて、Webメディアやブログによる情報を交えながら推測し、「ITベンチャーによるクラウド活用」という観点で考察を加えてみたいと思います。

■サーバーはたぶんGoogle、そしてもしかしたらDocker

7月6日にサービス開始されたポケモンGoですが、12日にはDatacenterDynamicsが同サービスはJavaとGoogle Cloudを使っているだろうとの記事を掲載しています[1]。記事ではNiantic社の求人に「Pokemon Go等のプロジェクトの基盤となるAR/GEOプラットフォームを稼動させるサーバーインフラストラクチャをJavaとGoogle Cloudを使って作る」ものがあることを根拠にしています。

実際にNiantic社のジョブリストを見ると現時点でもSoftware Engineer - Server Infrastructureの求人にこの記述があり、必要条件は「Google CloudまたはAWSの経験」、キースキルは「Java, Cloud Computing, NoSQL」としています[2]。

日本は7月22日に37番目のサービス提供国に加わりましたが、翌23日にブログサイト「あぱーブログ」にポケモンGoのアプリケーションの通信先から、そして27日に「apps-gcp」にその通信先の逆引きアドレスやSSL証明書のサーバー名からより解析を進めた投稿が載りました[3][4]。両者を読み合わせてみても、やはりGoogle Cloud Platform(GCP)が使われているものと思われます。

ところでNiantic社のジョブリストを見ると、Production Engineer / DevOps / SREという求人もあることに気が付きます。ここには、意訳すれば「実世界モバイルMMOエクスペリエンスのためのサーバー信頼性のメンテナンスと、モバイルクライアント、およびDockerとKubernetesを使ったGoogle Container Engine上のサーバーリリースのガイド」とあります。

ポケモンGoはおそらくGoogle Cloud Platformを使っているでしょう。そしてその中でも、仮想マシン方式のCompute Engineではなくコンテナ方式のContainer Engineを使っているのかも知れません。

■ベンチャー事業ポケモンGoとプラットフォームでのクラウド活用

Google Cloud Platform(GCP)を使っていると思われることは、DatacenterDynamicsの指摘する通り「もともとGoogleの社内スタートアップで、Google Earthを手掛けたJohn Hankeが創業した」のだから意外なことはないのかもしれません。それに、IngressではGCPが使われていました。

しかし、たとえばゲームプラットフォーム大手Zyngaは最終的にはパブリッククラウドから自前のプラットフォームへの移行を選んでいます[5]。これほどの売上規模と事前の資金調達があれば、Nianticもこの機会に自分たちでサーバープラットフォームを用意するという選択もあり得たでしょう。

それでもパブリッククラウドを使っているだろうことで、そのメリットを活かせたと思われる場面もすでにいくつかあります。

■ポケモンGoはNiantic社の想定以上に急拡大

ポケモンGoは急速に成長したサービスで、Niantic社が2012年から提供しているIngressの規模を2ヶ月ではるかに上回りました。同社ブログ記事によれば2015年末の3周年時、Ingressの累計ダウンロード数は1,400万件でした[6]。またForbesの記事によれば、2016年7月間での売上は110万ドルだったそうです[7]。これらも充分に大きい数字ですが、2ヶ月間でのポケモンGoの数字は、3年間のIngressの数字を1~2桁上回ります。

7月6日にアメリカ、オーストラリア、ニュージーランドでサービスを開始したポケモンGoは、続く世界展開を直後の7日に発生したサービスダウンのために延期[8][9]。しかもさらに12日にオーストラリアでもサービスダウンが発生しています[10]。日本では密かに20日にサービス開始が予定されていましたが、前日に情報リークがあり、過負荷を懸念して延期を決めます[11]。

サービスダウンもそうですが、サービス開始の延期という事態があったことは、ポケモンGOの急拡大がNiantic社の想定以上だったということしょう。

■Niantic社は想定外の速さでサーバー規模を増強

しかしそれでもNiantic社は、13日のドイツを皮切りに14日にはイギリス、15日にはさらに欧州26カ国でのサービス開始にこぎつけます[12]。また日本でも翌々日の22日にサービスを開始、同日夕方に発生したサービスダウンも数時間で解消したようです[13][14]。

各国でサービスが開始されサーバーダウンが解消されているということは、その利用の急拡大にサーバー規模の増強が追いついているようです。ポケモンGoのサーバー稼働状況を表示するPokemon GO Server Statusをみたところ、現在は過去24時間の稼働率100%、オンライン状態が124時間継続と、至って安定しているようでした。

この迅速な増強は、Niantic社がおそらくは自分たちでサーバーを持たず、Google Computing Platformというパブリッククラウドを使っていたことが可能にしたことでしょう。そしてNiantic社はこの利便性を意識していたはずです。ポケモンGoより昔の話ですが、ハンケCEOはインタビューで「Ingressはグーグルクラウドインターフェースに乗せているので、必要になれば何千台ものサーバーを使うことができる」と語っています[15]。

■突然の処理量の急減

Niantic社は8月3日、ポケモンGoアプリ以外からのアプリケーションからの直接サーバーアクセスは規約違反だとして、遮断しました[16]。同社ブログ記事によれば「第三者からの不正なアクセスをブロックした後にサーバーの負荷が大幅に減った」とのことです[17]。これに添えられたチャートは、縦軸の数値などがないので本当はどう読むべきなのかわかりませんが、パッと見た感じでは負荷が1/3に減少している印象を受けます。

仮にサーバーの負荷が1/3になっているとしたら、それまで本来必要な量の3倍のサーバーを準備させられていたことになり、この時点でそれらは不要になります。このサーバーを買っていたのだとしたら、とんでもない不要な出費だったことになります。しかしおそらくはパブリッククラウドを使っていたはずで、その場合には単にこの時点から使用量を1/3におとし、使用料を1/3に抑えることができたでしょう。

実際にNiantic社がどうしているかは分かりませんが、そうした選択肢をもてるということは非常に有利になることです。もし利用時間に応じた課金をしたり、売上が連動するようなクラウドサービスの提供企業であれば、利用規模が小さくなった時にコストも縮小できるということは、生命線の一つにもなるでしょう。

■まとめ

わずかな期間で巨大サービスに成長したポケモンGoを支えているのは、おそらくパブリッククラウドであるGoogle Computing Platformで、それももしかしたらDockerによるコンテナを組み込んでいます。

そしてやはりおそらく、パブリッククラウドを使っていることでNiantic社は、利用の急増に対応したり、不要になったコストを圧縮することが可能になっています。もちろん、ここまでで取り上げませんでしたが、50人以下と思われる企業でこれだけのサービスを支えるのに、サーバー管理にそれほど人を割かずにすんでいるだろうことも重要でしょう。

ポケモンGoは、ベンチャーによるSaaS事例でもあり、またベンチャーによるIaaS/PaaSの活用事例でもあります。その観点での興味から、本ブログでポケモンGoのサーバープラットフォームに関する情報をまとめ、その利点を考察してみました。

■追記
9月29日のGoogle Cloud Platform Blogで、KubernetesによるGoogle Container Engine、NoSQLであるCloud Datastoreが使われており、実際に想定外(想定の50倍、最悪の想定の10倍)の負荷に対応していったことが明かされました(参考:PublickeyGigazine

■出典・参考URL(※本文はここまでで、以下はリンクだけです。)

ここから先は

1,852字

¥ 100

期間限定 PayPay支払いすると抽選でお得に!

この記事が気に入ったらサポートをしてみませんか?