他の会社の仕組みを見てみよう(メルカリ編)
さて、前回は自社サービスのサーバ構成を抜粋して説明しましたが、他社はどうでしょうか?ここでは、メルカリ社の構成を元に説明したいと思います。
AWS Dev Day2017のメルカリ社スピーカーデッキより抜粋1
これは2017年6月時点の資料ですが、AWS Dev Dayにて登壇したメルカリ社のシステム構成です。USのサーバ構成をAWSで構成しているようです。
この構成を見てみると、まず、日本のしくみをそのまま移植した後、アメリカ向けのサービスをRDSなどで組んでいるようです。また、特徴的なのはWebサーバNginxを別で切り出しEC2として組んでいる処、日本から移植した所はMySQLもRDSを使わず個別にEC2上で運用している点です。
その他、memcachedを使って内部キャッシュをもたせ、DBとアプリケーションサーバのトランザクションコントロールをしています。
典型的なウェブサービスの三層構造をサーバ単位で切り出したというイメージです。
さらに、グローバルサービスのため、CDNをAkamaiやCloudFrontとして実装し、拡張するサイドサービスをマイクロサービスとして実装しています。また、解析系サービスをGoogleのBigQueryとしているのも最近の流行りですし、グローバルの保存先をS3にしていて、まさにマルチクラウドを地で行っている感じがします。
そして、DNSがとても特徴的でRoute53に集約しているあたりに、サービスのレイテンシを考慮しているのかもしれませんね。
他の会社の仕組みを見てみよう(任天堂&DeNA編)
つぎに昨年話題になった、任天堂のSuperMarioRunの構成です。
AWS 導入事例任天堂株式会社、株式会社ディー・エヌ・エーより抜粋
とてもシンプルな構成です。EC2とS3そして、ELBでロードバランスしただけの構成です。これで8000万ダウンロードを耐えていると考えると驚異的だと思いました。
また、これはモバイルアプリのため、Webサーバの代わりにProxyサーバ、アプリケーションサーバのかわりにAPIサーバですが、ここでもRDSを使わずDBサーバをMaster/Slave構成で立てています。たぶん、細かいチューニングを自分たちで行う必要を感じたからこのような構成にしたのかもしれません。それ以外は殆どメルカリと似たような構成になっています。
ここには掲載していませんが、ログや認証周りはGoogleCloudPlatformを使っています。このように、任天堂すらもグローバルベンダーをマルチクラウドで使う時代になっています。
現代的=マルチクラウドに進む
こうやって見てきたとおり、AWSは単一サービスでも十分力を発揮できますが、無理やり実装する前に技術検証をして上手く実装しましょう。でも、わかったと思いますが、メインサーバとしてはAWSが一番こなれていると思います。やはり有名所の大きなサービスはだいたいEC2とRDS、S3をしっかり実装しており、その周辺機能を他の会社のサービスで補うというのが一般的だと思いました。
このようにマルチクラウドという点が一つのポイントになっており、なんでも1社で賄おうとするのは危険ですし、DNSラウンドロビンなどディザスタリカバリも考慮したシステム構成を検討したほうが良いでしょう。
まとめ
こう見てくると、自社サービスのインフラ構成はかなりAPI的な作り方をしています。基本は抑えているもののかなりチャレンジングだなと自分でも思いました。
ただ、他社との比較をしていく中で、過剰な実装にならないようにしつつ、ポイントを抑えた実装を行い、顧客の体験を最大化出来るようにしたいと思います。