ポケモンGO大人気ですね、恐ろしい程の過熱ぶりで、昨夜も近所の噴水周り等がスマフォ片手の人だらけでした。さて、これほどすさまじいレベルです。
さて、これ程までに急激に伸びているサービスのバックエンドサービスは何が使われているのか、気になりますよね?
通信先のサーバから識別するために調べて見ました。
(2016年7月29日注:NIANTICのサイトにGCPを利用している旨の記載がありました、最後に追記してあります)
結論から言うと、やはりGCPであろうと言うことです。
以下、どのような内容か。
1.パケットキャプチャ
2.ポケモンGO操作時の通信先サーバログ
3.各通信先IP/サーバの分析
4.周辺事情とまとめ
で見ていこうと思います。
1.パケットキャプチャ
Android端末で特定のアプリにのみ絞ってパケットキャプチャ出来るアプリを使ってキャプチャし、WireSharkで分析してみました。
2.ポケモンGO操作時の通信先サーバログ
さて、私の端末にポチッと入れて、道具を捨てたりポケモンを博士の元に送ってみたり、通信が必要であろう操作をしてみて(10秒程度)、その間のキャプチャを取りました。
その通信結果のアクセス先サーバ・IPのログが以下です。実際にはSYNとかACKとか入ってるので実通信回数はおよそ半分くらいかと思います。
3.各通信先IP/サーバの分析
1つ目のIPである169.44.145.209については逆引きのサーバ名は取れませんでしたが証明書はupsight-api.comでした。
これは広告の効果測定を行うサービスのようです。将来的な広告展開を見据えたログ記録をしているものと思われます。
2つ目のサービスである証明書googleapis.comですが、これはまさにGCPのようです。面白いことに、kix05s01-in-f10.1e100.net という逆引きのサーバはまさにIngressでも同じ名前のサーバになっており、サーバを流用しているように見受けられます。
3つ目のサーバIPの52.9.55.242はunity3dというゲーム開発エンジンのサイトなので、恐らく必要なライブラリ等をDLしてきているか何か、でしょう。これ自体はホストはUS-WESTのEC2のようですね。
4つ目の54.241.32.15はcrittercism.comなのでAndroidアプリのクラッシュレポートを送っているようです。どういうタイミングで通信が必要なのか私Androidアプリ詳しく無いのでわかりませんがまぁログを定期的に送っているとかでしょう。こちらもUS-WESTのEC2のようです。
4.周辺事情とまとめ
結論としてアプリケーションデータの中身の通信をしている可能性があるサーバはやはりgoogleapis.comの172.217.26.106のみです。回数が多いからと海外の記事ではAWSに移ったなどと言うデマ記事も出てますが、もう少し深く追求するとわかる話です。
また、開発元NIANTICの求人を見てもサーバエンジニアはJava・GAEとあるので、やはりGAEで受けているのでしょう。そらそうですよね、これだけのトラフィック急増に耐えられる基盤って地球上にGAE以外はそれ程無いでしょう。
以上、やっぱりポケモンGOのバックエンドサーバはGCP(GAE?)だった、ということでした。
2016年7月29日追記:NIANTICの求人にGoogleCloudと記載がありますね。
以下の通りの記載がありました。
Software Engineer – Server Infrastructure
Create the server infrastructure to support our hosted AR/Geo platform underpinning projects such as Pokémon GO using Java and Google Cloud. You will work on real-time indexing, querying and aggregation problems at massive scales of hundreds of millions of events per day, all on a single, coherent world-wide instance shared by millions of users.
ちょっと意図的にぶった斬りますが、「PokemonGo using Java and Google Cloud」とのことです。
GCPのサーバ導入等に関するお問い合わせはクラウドエースまでお気軽にどうぞ。