どの GCP サービスを選ぶ? 正しい選択のための決定木
Google Cloud Japan Team
Google Cloud Platform(GCP)で新しいプロジェクトを立ち上げるときに、早い時期に決めておくべきことは、Google Compute Engine、Google Container Engine、Google App Engine、あるいは Google Cloud Functions と Firebase のうち、どのサービスを使用するかということです。
GCP は、完全な管理権をユーザーに提供するものから(例 : Compute Engine)、高度に抽象化されたものまで(例 : Firebase と Cloud Functions)、管理や運用をどの程度 Google に委ねるかに応じてさまざまな選択肢を提供しています。
私たちのブログを長く愛読されている方であれば、GCP のさまざまなサービスについて次のようにお考えではないでしょうか。
- VM の管理に慣れていてクラウドでも同じようにしたいとき → Compute Engine
- コンテナを使いつつ、ソリューション内で複数のコンテナをコーディネートする必要があり、必要な管理オーバーヘッドの一部を抽象化したいとき → Container Engine
- コードの開発に専念し、インフラストラクチャにかかわりたくないとき → App Engine
- コードの開発に専念し、ほかのアプリケーションが使える API エンドポイントを提供するマイクロサービスを作りたいとき → Firebase と Cloud Functions
1. あなたが作ろうとしているのは、処理の重い部分をクライアントで行うモバイル アプリか HTML アプリですか?
同期やストレージだけをバックエンドに任せるシック クライアントを作ろうとしているなら、Firebase を選ぶのがよいでしょう。
Firebase を使用すれば、iOS や Android、JavaScript 用の使いやすい API とクライアントにより、複雑な NoSQL ドキュメント(またはそういったものをオブジェクトと考えるならオブジェクト)やファイルを格納できます。ほかのプラットフォームからアクセスできるようにする REST API もあります。
2. あなたが作ろうとしているのは、ユーザーの操作というよりもイベントによって動くシステムですか? 言い換えれば、ファイルのアップロードや、他のアプリへのログインをきっかけとして動くアプリですか?
“サーバーレス” や “Functions as a Service” のソリューションはご覧になりましたか。これはもう Cloud Functions 以外に選択肢はありません。
Cloud Functions を使えば、Node.js 上で動作し、Cloud Vision や Translate、Cloud Storage、その他 100 種以上の API を呼び出す JavaScript 関数を書くことができます。システムをメンテナンスしたり、1 つにまとめる作業を行ったりすることなく、Google のあらゆるサービスを利用でき、マイクロサービスとして外部コードから呼び出せる複雑な関数を作れるのです。
3. ソリューションはすでにどこか別の場所にありますか? ライセンスが必要なソフトウェアを含んでいますか? HTTP/S 以外のものが必要ですか?
答えがノーなら App Engine を検討してみてください。App Engine は Google のインフラストラクチャの上でアプリを実行するサーバーレス ソリューションであり、その料金は使った分だけで済みます。需要に基づくスケーリングは Google が行います。App Engine からはすべての Google SDK にアクセスできるので、Google Cloud エコシステムをフルに活用できます。
4. コンテナ ベースのシステムを構築しようとしていますか? オーケストレーションは必要ですか?
マルチコンテナ ソリューションを構築する場合はオーケストレーションを考慮しましょう。コンテナ オーケストレーションは、コンテナのデプロイや冗長性、負荷分散に対応するサービスです。そうしたサービスの中で最も成熟し、人気も高いのは Kubernetes です。
GCP で Kubernetes を使うことを検討しているのであれば、Container Engine を選択するのがよいでしょう(Kubernetes を実行する場合は必ず検討すべきです)。Container Engine により、Kubernetes ソリューションの構築はワンクリックに単純化されます。
また、Container Engine は Kubernetes クラスタのメンバを自動的にスケーリングするので、需要に応じてスケールアップ / ダウンする Kubernetes ソリューションを作ることができます。
5. ステートフル システムを使おうとしていますか? GPU を使うことを検討していますか? Kubernetes 以外のコンテナをベースとするソリューションを作ろうとしていますか? 既存のオンプレミス ソリューションをクラウドにマイグレートしようとしていますか? ライセンスが必要なソフトウェアを使っていますか? カスタム カーネルや任意の OS を必要としますか? ニーズに合うソリューションがほかに見つかりませんか?
これらの問いに対する回答に 1 つでもイエスがあれば、おそらく Compute Engine 上の仮想マシンでソリューションを実行する必要があります。Compute Engine は GCP の中で最も柔軟性の高いサービスです。VM をどのようにでも構成、管理できる最大限の自由を提供します。
以上の問いをまとめると、次のようなフローチャートになります。
これは決して網羅的な決定木ではありませんし、個々の GCP サービスはここに示されているものよりも広範のユース ケースをサポートします。しかし、初期段階での検討時には役に立つはずです。
コンピューティング ソリューションの詳細は、こちらのクラウド コンピューティング サービスのページをご覧ください。そして、サインアップ時に提供される 300 ドル分の無料クレジットを使って、GCP をぜひお試しください。
充実したシステム構築を!
* この投稿は米国時間 7 月 5 日、Developer Advocate である Terrence Ryan と、Product Marketing Manager である Adam Glick によって投稿されたもの(投稿はこちら)の抄訳です。
- By Terrence Ryan, Developer Advocate and Adam Glick, Product Marketing Manager