Google App EngineとCloud Runのどちらを選択すべきかGoogle Cloudチートシート(6)

「Google App EngineとCloud Runのどちらを使おうか」と迷ったことはないでしょうか。本記事ではGoogle App Engineのスタンダード環境とフレキシブル環境、Cloud Runの3つを比較し、選択のコツを示します。

» 2024年09月27日 05時00分 公開
[高田麻実ジーアイクラウド株式会社]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

 本連載「Google Cloudチートシート」では、Google Cloudを活用する上でのさまざまなコツを、できるだけ分かりやすく、簡潔に紹介しています。

 Google Cloudには、アプリケーションをデプロイするためのサーバレスサービスが幾つかあります。その中で、「Google App Engine」(以下、App Engine)と「Cloud Run」には類似点が多く、どちらを選択すればよいのか迷うことがあるかもしれません。本記事では、この2つのサービスの選択基準について解説します。

解決できる課題

  • アプリケーションの要件やユースケースに応じて、Cloud RunとApp Engine(スタンダード環境・フレキシブル環境)のどちらが適しているかを判断するための知識が欲しい
  • 両サービスの課金モデルと、使用頻度や稼働時間に基づいて最適なコスト効率を実現する方法が分かる

GoogleCloudのコンピューティング(実行環境)サービスは多様

 コンピューティング(実行環境)サービスとは、アプリケーションコードを動かすプロダクト群です。以下はGoogle Cloudにおけるコンピューティングサービスの一覧です。

コンピューティングサービスの分類。Cloud Runはコンテナを扱うため、Container as a Service (CaaS)にも分類されるが、マネージドサービスとしての提供や自動スケーリングによって、Platform as a Service (PaaS) に近いといえる

参考リンク:PaaS、IaaS、SaaS、CaaS の違い

 上記の図でPlatform as a Service(PaaS)に分類されているCloud RunとApp Engineは、どちらもフルマネージドのプラットフォームであり、アプリケーションのデプロイとスケーリングを容易にする強力なツールです。どちらを選択すべきかは、アプリケーションの要件やユースケースによって変わります。

App Engineとは?

 App Engineは、コードのみをデプロイしてスケーリングやインフラ管理を自動化することができます。特定のランタイム(Python、 Java、 PHP、 Goなど)で動作するスタンダード環境と、任意のDockerコンテナを使用するフレキシブル環境の2つの環境があります。

Cloud Runとは?

 Cloud Runは、任意のプログラミング言語やフレームワークを使用して作成されたDockerコンテナをデプロイすることができるフルマネージドサービスです。リクエストに応じて自動的にゼロからスケーリングし、使用した分だけ課金されるため、コスト効率が高いのが特徴です。

App EngineとCloud Runの比較

 App Engineのスタンダード環境とフレキシブル環境、Cloud Runの3種のサービスの特徴を、表にまとめました。

App Engineのスタンダード/フレキシブル、Cloud Runの比較

参考リンク:App EngineとCloud Runの比較

App EngineとCloud Runの選択ポイント

 それでは、App Engineのスタンダード環境とフレキシブル環境、Cloud Runのうち、どれをどういった場合に選ぶべきかについて解説します。選択で考慮すべきポイントとしては、「開発の柔軟性と制約」「コストと課金モデル」「運用と管理」などがあります。

開発の柔軟性と制約

 App Engineスタンダード環境は、Java、Python、PHP、Goなどの特定の言語に最適化されています。サーバレスなアプリケーションフルマネージドサービスで、自動スケーリングを提供します。ただし、ネイティブライブラリの使用やローカルファイルシステムへの書き込みには制約があります。

 App Engineフレキシブル環境は、Dockerコンテナを使って任意のランタイムやライブラリを利用できます。自動スケーリングや永続的なディスクストレージの使用が可能で、インフラの設定も調整できます。これにより、高度なカスタマイズが可能です。

 Cloud RunはDockerコンテナを使用し、任意の言語やライブラリを用いたアプリケーションをデプロイできます。トラフィックに応じてゼロから自動スケーリングし、スタートアップスクリプトの設定も自由です。高いポータビリティがあり、外部サービスとの連携も容易です。

コストと課金モデル

 App Engineのスタンダード環境は、頻繁なトラフィックスパイクがない場合、コストを抑えやすいです。社内の業務アプリケーションなど、使用ユーザー数が限られており、トラフィックが安定しているアプリケーションに最適です。

 App Engineのフレキシブル環境は長時間稼働するアプリケーションやバックグラウンドタスクに対する料金が明確であり、従量課金制に基づいて効率的にリソースを利用できます。

 Cloud Runは短期間のリクエストに対して迅速にスケールし、リクエストがないときは自動的にスケールダウンします。従量課金制のため、利用が少ない場合にはコストを抑えやすいです。このことから、「Cloud Pub/Sub」 や「Cloud Storage」 などのイベントにトリガーされるアプリケーションに最適です。

運用と管理

 App Engineのスタンダード環境は、完全に自動化されたインフラ管理を提供します。コードをアップロードするだけでデプロイが完了し、サーバやオペレーティングシステムの管理は不要です。

 App Engineのフレキシブル環境は、Dockerコンテナを使用して任意のランタイムやフレームワークをサポートします。インフラ管理は不要ですが、コンテナのビルドと管理が必要です。スタンダード環境に比べて高いカスタマイズ性を提供しますが、コンテナ管理の知識が求められます。

 Cloud Runは完全サーバレスの環境で、Dockerコンテナを使用して任意のアプリケーションをデプロイできます。インフラ管理は完全に抽象化されており、コンテナイメージをデプロイするだけでアプリケーションが稼働します。App Engineと比較して、より高い柔軟性とポータビリティを提供しますが、コンテナの管理とDockerの知識が必要です。

その他の選択ポイント

IAP認証を使う場合

 App EngineはIAP(Identity-Aware Proxy)を簡単に設定できる環境を提供します。App Engineの設定画面から数クリックでIAPを有効にできます。Cloud RunでもIAPを設定することは可能ですが、サーバレスネットワークエンドポイントグループ (NEG)を使用したロードバランサの設定が必要になります。

突然大量のリクエストが発生する場合

 Cloud Runはコンテナベースのため、インスタンスの起動が迅速であり、急激なトラフィックの増加に対して即座に対応できます。App Engineも迅速なスケーリングを提供しますが、Cloud Runほどのスピードは期待できない場合があります。

さまざまな地域からトラフィックがある場合

 App Engine ではサーバインスタンスの場所を決定する必要がありますが、Cloud Runではロードバランサを使用してユーザーから最も近い Cloud Runサービスがリクエストを処理することができます。また、App Engineは設定したリージョンを変更することができません。

コスト効率を重視する場合

 Cloud Runは、リクエストがないときにはインスタンスをゼロまでスケールダウンするため、使用した分だけの課金となり、コスト効率が非常に高いです。特に、使用頻度が少ないサービスやイベント駆動型アプリケーションでは、従量課金制の利点が際立ちます。また、Cloud Runは短期間のリクエストに対して迅速にスケールし、リクエストがないときは自動的にスケールダウンするため、予算の限られたプロジェクトでも効果的に運用できます。

Cloud Functionsとの統合のメリット

 「Cloud Functions」は最近、「Cloud Run functions」とリブランドされ、Cloud Run上で動く第2世代が登場しました。これにより、Cloud Functionsの利便性とCloud Runの柔軟性が一体化しました。Cloud Runは今後もますます利便性が向上し、幅広いユースケースに対応できるようになると期待されています。

まとめ

 Cloud RunとApp Engineは、それぞれ異なる強みを持つサーバレスプラットフォームです。アプリケーションの要件に応じて、最適なプラットフォームを選択することが重要です。それぞれの特性を理解し、適切な選択を行うことで、Google Cloudの利点を最大限に活用していきましょう。

Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。