【レポート】Googleの最先端クラウド技術と導入事例:クラウド技術最前線![第1部]- TECH PLAY Conference 2017
Googel App Engineを利用した新規Webサービスの立ち上げ方
第1部の2人目の講演は、「GCP」を実際にサービスに落とし込んでいる事例として、ソウゾウの主森さんに講演をいただきます。
主森理(とのもり・おさむ)/株式会社ソウゾウ 「メルカリカウル」チーム。神奈川県出身。東京工科大学卒。サイバーエージェントでの勤務を経て、2016年にメルカリへ入社。横浜DeNAベイスターズファン。
主森さんは、本・CD・DVDに特化したCtoCマーケットプレイス「メルカリ カウル」に「Google App Engine」を導入した事例を紹介します。
「Google App Engine」には、2007年のリリース当初からある「Standard Environment」と、「Google Cooud Next 2017」にて正式版となった「Flexible Environment」の2つの環境があります。主森さんはまずこの2つの差を説明。
まず、「Standard Environment」は使用できる言語が限られています。具体的には「Python 2.7.x」「Java 7」「Java 8」「PHP 5.5.x」「Go 1.6」「Go 1.8」が対応。「Java 8」と「Go 1.8」はベータとして利用可能です。 一方の「Flexible Environment」は、「Nginx」と「docker」で構成されています。つまり、「docker」であるために言語の制約がなく、可能性が無限大とも言えるのが「Flexible Environment」の特徴です。
では、どちらを使うべきなのでしょうか?
主森さんは「今のところは『Standard Environment』を選んでおけば問題ありません。『メルカリ カウル』でも『Standard Environment』導入しています」と話します。ただし、「サポートされている以外の言語で開発したい」「一時的なディスク書き込みが必要になる」「内部ネットワークに所属する必要がある」「SSH接続を行いデバックする必要がある」などの場合は「Flexible Environment」を選ぶ必要があります。
主森さんは「Google App Engine」のスケーリング、データベース、キャッシュ、メッセージキューなどの各機能や、「Snapchat」「Super Mario Run」などへの「GCP」への導入事例を紹介した後、自社の「メルカリ カウル」の事例を解説します。
2017年5月にリリースされた「メルカリ カウル」の開発期間はおよそ約6ヶ月。リリース時には10人ほどのチームメンバーになっていましたが、開発開始から3ヶ月は主森さん1人がサーバーサイドの開発を行っていました。これは「Google App Engine」を使えばインフラ構築が不要なので、1人でも実装できるというメリットにより実現した体制です。現在は4人体制で開発していますが、全員がサーバーサイドエンジニアで、やはりインフラ専任者はジョインしていません。
実際の「メルカリ カウル」の構成は、「Google App Engine」が中心で、一部に「Google Compute Engine」も導入しています。
「Google App Engine」では、「Microservices」を実現するために、「Service」という概念があります。この「Service」は、ひとつずつエンドポイントを持ち、個別にスケーリングの設定をすることも可能です。
「メルカリ カウル」で利用している「Service」としては、まず「API Service」が挙げられます。「メルカリ カウル」では、姉妹アプリ「メルカリ」からの誘導により、負荷が一瞬で2倍以上になることも。そのため、「API Service」のスケーリングには、インスタンス数が自動で可変する「Automatic」を設定しています。
その他には、例えば「『メルカリ』からアイテムが更新された」など、外部サービスからイベントを受け付ける「Webhook Service」、非同期で行う処理を全て請け負う「Management Service」などの「Service」を活用。また、この「Service」は、個別に「Version」を持っています。「『Service』ごとにバージョン管理ができるので、本盤環境からのカナリーリリースやロールバックも簡単に行えます」と主森さんはメリットを説明しました。
さらに「実際の開発においては、セマンティックバージョニングを行うのではなく、開発ブランチごとに『Version』を切っている」と主森さん。各「Version」には固有のサブドメインが発行されるので、並行での機能開発に適しています。
最後に主森さんは、「開発ももちろんだが、運用がとても楽になるので、小さくスタートするなら『Google App Engine』は本当にオススメです。メンテナンスも活発に行われているし、コミュニティの恩恵も受けられます。プロダクトがヒットしても、最小限のコストで『Google Compute Engine』に移行すればOKです」とまとめました。
当日の主森さんのスライドはこちらに公開されています。
次のページ :
BigQueryで解決した2つの困り事