Google Cloud Platform

どの GCP サービスを選ぶ? 正しい選択のための決定木

Google Cloud Platform(GCP)で新しいプロジェクトを立ち上げるときに、早い時期に決めておくべきことは、Google Compute Engine、Google Container Engine、Google App Engine、あるいは Google Cloud Functions と Firebase のうち、どのサービスを使用するかということです。

GCP は、完全な管理権をユーザーに提供するものから(例 : Compute Engine)、高度に抽象化されたものまで(例 : Firebase と Cloud Functions)、管理や運用をどの程度 Google に委ねるかに応じてさまざまな選択肢を提供しています。

32245.png

私たちのブログを長く愛読されている方であれば、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 をどのようにでも構成、管理できる最大限の自由を提供します。

以上の問いをまとめると、次のようなフローチャートになります。

knexN0PdP-BCJSRxt7Nhnmz5_-1gVjyMo2IYEGUHVmeECdg7SCyVIlKamisqyksxdIWuVCqHKcPmG88RxGmwf9G5xDeElWhDFokbHhWlNjJhqSXiyLDl9w-9LmLYyK3imBbW8qThyf02.PNG

これは決して網羅的な決定木ではありませんし、個々の 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