Cloud Run / App Engine / Cloud Functions の使い分け
Cloud Run / App Engine / Cloud Functions どれを使用すればいいのかの分離を行いました。
Table of contents
author: ryutah
はじめに
こんにちは、技術推進グループのグループマネージャryutahです。
今回は、Google Cloudが提供するサーバレスサービスであるCloud Run、App Engine、Cloud Functionsの使い分けについて解説します。
Cloud Run / App Engine / Cloud Functions とは
Google Cloudが提供するサーバレスサービスは、以下の3つがあります。
- Cloud Run: コンテナベースのサーバレスプラットフォームです。
- App Engine: マネージドなサーバレスプラットフォームで、Webアプリケーションやモバイルアプリのバックエンドとして利用できます。
- Cloud Functions: イベントトリガー型のサーバレスプラットフォームで、特定のイベントが発生した際にコードを実行できます。
それぞれのサービスの特徴を詳しく見ていきましょう。
Cloud Run について
Cloud Runは、コンテナイメージを使用するサーバレスプラットフォームです。 DockerやKubernetesなどのコンテナ技術に精通している開発者にとって、使い慣れた環境で開発できる利点があります。 Cloud Runのセキュリティ対策では、IAPではCloud Load Balancingを使用して行います。ファイヤウォールの設定ではGoogle Cloud Armorを使用して行わないといけないです。 また、Cloud Load Balancingの設定にドメインの取得が必要なため設定には億劫になります。
※まだpreviewですが Cloud Run integrations というものがあります。自動でロードバランサの設定をするので便利です。
主な特徴:
- コンテナベース: Dockerイメージを使ってアプリケーションをデプロイします。
- 自動スケーリング: トラフィックに応じて自動的にスケールアップ/スケールダウンします。
- HTTP リクエスト処理: HTTPリクエストを処理するために設計されています。
- 高い柔軟性: さまざまな言語やフレームワークに対応しています。
- WebSocket対応: Cloud RunではWebSocketに対応しています。
ユースケース:
- HTTPリクエスト処理
- APIバックエンド
- マイクロサービス
App Engine について
App Engineは、Webアプリケーションやモバイルアプリのバックエンドとして利用できるマネージドなサーバレスプラットフォームです。インフラの管理やスケーリングをGoogle Cloudがすべて行うため、開発者はアプリケーションの開発に集中できます。 特にApp Engineの管理画面にて簡単にファイヤウォールの設定ができます。また、 IAP保護も簡単に行えます。
IAPで社内メンバーのみアクセス可能に設定できるので、フロントエンド単一(Next.js,Remix) などが簡単に公開できるためおすすめです。
App Engineのスタンダート環境では対応している言語が少ないですが、多くはカバーできてる考えています。
主な特徴:
- マネージド環境: インフラ管理やスケーリングをGoogle Cloudが担当します。
- 自動スケーリング: トラフィックに応じて自動的にスケールアップ/スケールダウンします。
- 多言語対応: Python、Java、PHP、Go、Node.jsなど、さまざまな言語に対応しています。
- 簡単なセットアップ: すぐにアプリケーションをデプロイできます。
ユースケース:
- Webアプリケーション
- モバイルアプリのバックエンド
- CMS
Cloud Functions について
Cloud Functionsは、特定のイベントが発生した際にコードを実行するイベントトリガー型のサーバレスプラットフォームです。ファイルアップロードやデータベース更新などのイベントをトリガーに実行します。
Google CloudのCloud Functionsのガイドにもある通り、イベントトリガーが設置されているためインフラを気にするこ事なく簡単に処理が行えます。
主な特徴:
- イベントトリガー: ファイルアップロード、データベース更新など、特定のイベントをトリガーとしてコードを実行します。
- シンプル: 開発が非常にシンプルで、コードを記述するだけで利用できます。
- 低コスト: 必要な時だけリソースを使用するため、コストを抑えられます。
ユースケース:
- ファイルアップロード時の処理
- データベース更新時の通知
- IoTデバイスからのデータ処理
まとめ
サービス | 実行環境 | 具体的なユースケース | 特徴 | 備考 |
---|---|---|---|---|
Cloud Run | コンテナ実行 | WebSocket,gRPC などの接続が必要な場合 | 高い柔軟性、スケーラビリティ、コンテナエコシステムの活用 | コンテナ環境で実施できる言語でしたら対応可能です。 |
App Engine | マネージド環境 | 社内向けのWebアプリケーション | 簡単なセットアップ、自動スケーリング、多言語対応 | FrontEnd 単一のフレームワークなど簡単に IAP 保護が可能です。 |
Cloud Functions | イベントトリガー実行 | ファイルアップロード時などのイベント処理の場合 | シンプルな開発、低コスト、イベントドリブン | Cloud Funtions では Docker が使用できないです。そのため、システムライブラリなどを導入する場合は Cloud Run を用いるのがおすすめです。 |
適切なサービスを選択するために考慮すべき点:
- アプリケーションの種類: Webアプリケーション、API、イベント駆動型の処理など
- 開発言語: サポートされている言語
- スケーラビリティ: 必要なリソースの規模
- セキュリティ: 必要なセキュリティ対策
- 開発効率: 開発の容易さ
Cloud Run、App Engine、Cloud Functionsはそれぞれ異なる特徴を持つため、アプリケーションのニーズに合わせて適切なサービスを選択することが重要です。
参考資料
GI Cloudは事業の拡大に向けて一緒に夢を追う仲間を募集しています
当社は「クラウドで日本のIT業界を変革し、世の中をもっとハッピーに」をミッションに掲げ、Google Cloudに特化した技術者集団として、お客様にコンサルティングからシステム開発、運用・保守まで一気通貫でサービスを提供しています。
まだ小規模な事業体ですが、スタートアップならではの活気と成長性に加えて、大手総合商社である伊藤忠グループの一員としてやりがいのある案件にもどんどんチャレンジできる環境が整っています。成長意欲の高い仲間と共にスキルを磨きながら、クラウドの力で世の中をもっとハッピーにしたい。そんな我々の想いに共感できる方のエントリーをお待ちしています。
※本記事は、ジーアイクラウド株式会社の見解を述べたものであり、必要な調査・検討は行っているものの必ずしもその正確性や真実性を保証するものではありません。
※リンクを利用する際には、必ず出典がGIC dryaki-blogであることを明記してください。
リンクの利用によりトラブルが発生した場合、リンクを設置した方ご自身の責任で対応してください。
ジーアイクラウド株式会社はユーザーによるリンクの利用につき、如何なる責任を負うものではありません。