Cloud RunとCloud Functionsの違いとは?初心者向けに特徴・使い分け・選び方をわかりやすく解説
結論として、Cloud Runはコンテナを実行するサービス、Cloud Functionsは特定のイベントや処理を実行するサーバーレス関数です。
どちらもGoogle Cloud(GCP)のサーバーレスサービスですが、用途や運用方法は大きく異なります。IT業務では「新しいWebアプリを公開したい」「ファイルがアップロードされたら自動処理したい」といった場面で利用されるため、違いを理解しておくことは重要です。
Cloud RunとCloud Functionsとは
Cloud Runとは
Cloud Runは、Dockerコンテナで作成したアプリケーションを実行できるサーバーレス実行環境です。
WebアプリケーションやAPI、バックエンドサービスなどをコンテナ化してデプロイできます。サーバー管理が不要で、アクセスがないときはインスタンス数が自動で減るため、コストを抑えられる点が特徴です。
対応言語に制限はほとんどなく、コンテナ化できるアプリケーションであれば実行できます。
Cloud Functionsとは
Cloud Functionsは、特定のイベントをきっかけにプログラムを実行するFaaS(Function as a Service)です。
例えば、次のようなイベントをトリガーとして利用できます。
- Cloud Storageへファイルがアップロードされた
- Pub/Subでメッセージを受信した
- HTTPリクエストを受けた
- Firestoreのデータが更新された
小規模な処理や自動化処理に向いています。
Cloud RunとCloud Functionsの違い
| 比較項目 | Cloud Run | Cloud Functions |
|---|---|---|
| 実行単位 | コンテナ | 関数(Function) |
| 用途 | Webアプリ・API・バックエンド | イベント処理・自動化 |
| 自由度 | 非常に高い | 比較的シンプル |
| Docker | 必要 | 不要 |
| 対応言語 | コンテナ化できれば自由 | Googleが対応する言語 |
| HTTPアクセス | 標準対応 | 対応 |
| イベント処理 | 可能 | 得意 |
| 学習難易度 | やや高い | 初心者向け |
どんな場面で使われるのか
Cloud Runが向いているケース
- REST APIを公開したい
- Webアプリを公開したい
- FlaskやFastAPIを動かしたい
- Node.jsやJavaなど自由な環境を使いたい
- 既存のDockerアプリをそのまま利用したい
Cloud Functionsが向いているケース
- 画像アップロード時に自動でリサイズする
- ログを自動処理する
- メール送信を自動化する
- 定期実行ジョブを作る
- Webhookを受け取る
なぜ違いを理解することが重要なのか
IT現場では「サーバーレスだからどちらでも同じ」と考えてしまう新人が少なくありません。
しかし、設計段階でサービスを間違えると、運用や保守の負担が大きくなることがあります。
例えば、複数のAPIを提供するシステムをCloud Functionsだけで構築すると、関数の数が増え管理が煩雑になるケースがあります。一方、Cloud Runなら1つのコンテナにまとめて管理しやすくなります。
初心者が混乱しやすいポイント
- どちらもサーバーレスである
- どちらもHTTPアクセスできる
- どちらも自動でスケールする
- どちらもGoogle Cloud上で動作する
違いは「何を実行するか」です。
- Cloud Runはコンテナを実行する
- Cloud Functionsは関数を実行する
この違いを覚えておくと理解しやすくなります。
実際のIT現場での利用例
| 業務 | 利用サービス |
|---|---|
| 社内API | Cloud Run |
| 画像変換 | Cloud Functions |
| Slack通知 | Cloud Functions |
| バックエンドシステム | Cloud Run |
| CSV取込システム | Cloud Run |
| 定期データ処理 | Cloud Functions |
現場でよくあるトラブル
Cloud Run
- コンテナが起動しない
- ポート設定が誤っている
- Dockerイメージのビルド失敗
- 権限不足でデプロイできない
Cloud Functions
- イベントが発火しない
- IAM権限不足
- タイムアウト
- メモリ不足
原因の切り分け
| 確認項目 | 確認内容 |
|---|---|
| アプリケーション | エラーが発生していないか |
| IAM | 実行権限があるか |
| ログ | Cloud Loggingにエラーがあるか |
| ネットワーク | 接続制限がないか |
| イベント | 正しく発火しているか |
確認する順番
- Cloud Loggingでエラーを確認する
- デプロイが成功しているか確認する
- IAM権限を確認する
- アプリケーションログを確認する
- イベントやHTTPリクエストが届いているか確認する
ログの確認方法
Google Cloudコンソールから確認できます。
- Google Cloudコンソールを開く
- Loggingを開く
- Logs Explorerを選択する
- Cloud RunまたはCloud Functionsを選択する
- ERRORやWARNINGを確認する
障害発生時は、まずログを確認する習慣を付けましょう。
GUIでの確認方法
- Cloud Runサービス一覧
- Cloud Functions一覧
- Cloud Logging
- Cloud Monitoring
- IAM画面
CUIでの確認方法
Cloud Runのサービス一覧
gcloud run services list
Cloud Functionsの一覧
gcloud functions list
Cloud Runの詳細確認
gcloud run services describe サービス名
Cloud Functionsの詳細確認
gcloud functions describe 関数名
確認結果の見方
- デプロイ成功となっているか
- 最新リビジョンが正常か
- HTTPステータスコードは200番台か
- エラーログが連続していないか
- 権限エラーが発生していないか
ショートカットとして覚えたいポイント
- Cloud Run=コンテナ
- Cloud Functions=イベント処理
- Cloud Logging=ログ確認
- IAM=権限管理
初心者がやりがちなミス
- Cloud RunなのにDockerを理解していない
- Cloud Functionsで大規模アプリを作ろうとする
- ログを確認せず再デプロイする
- IAM設定を確認しない
- エラー内容を読まずに設定変更する
上司へ報告するポイント
- 発生時刻
- 対象サービス名
- Cloud RunかCloud Functionsか
- エラーメッセージ
- ログの内容
- 影響範囲
- 実施した確認内容
エスカレーションするタイミング
- 本番環境に影響がある場合
- IAM変更が必要な場合
- インフラ設定変更が必要な場合
- データ消失の可能性がある場合
- 原因が特定できない場合
現場で評価される確認手順
- 影響範囲を確認する
- Cloud Loggingでエラーを確認する
- デプロイ履歴を確認する
- IAM権限を確認する
- イベントまたはHTTPリクエストの到達状況を確認する
- 必要に応じて上司へ報告・エスカレーションする
筆者の経験談
実際の業務では、HTTP APIをCloud Functionsで多数実装した結果、関数ごとの管理やデプロイが複雑になり、運用負荷が高くなったことがありました。その後、関連するAPIをCloud Runへ集約したことで、コンテナ単位で管理できるようになり、デプロイやバージョン管理がしやすくなりました。一方で、画像変換や通知処理など単機能の処理はCloud Functionsのほうが構成がシンプルで、開発効率が高いケースも多くあります。用途に応じて使い分けることが重要だと感じています。
応用知識
Cloud Functions(第2世代)はCloud Runの実行基盤を利用しています。そのため、従来より性能やスケーリングが向上し、Cloud Runとの共通点も増えています。ただし、利用者は関数単位で開発できるため、イベント駆動型の処理を手軽に実装したい場合には引き続きCloud Functionsが適しています。
関連するIT用語
- Google Cloud
- Docker
- コンテナ
- サーバーレス
- FaaS(Function as a Service)
- Cloud Logging
- Cloud Build
- Artifact Registry
- IAM(Identity and Access Management)
- Pub/Sub
よくある質問(FAQ)
Cloud RunとCloud Functionsはどちらがおすすめですか?
WebアプリやAPIを構築する場合はCloud Run、自動化やイベント処理を実装する場合はCloud Functionsがおすすめです。
Dockerを知らないとCloud Runは使えませんか?
基本的なDockerの知識は必要です。Dockerイメージの作成やコンテナの仕組みを理解しておくと、デプロイやトラブルシューティングがスムーズになります。
Cloud FunctionsでもAPIを公開できますか?
可能です。ただし、複数のAPIや大規模なバックエンドを運用する場合は、Cloud Runのほうが管理しやすいことが多くあります。
料金はどちらが安いですか?
どちらも従量課金制で、利用状況によって異なります。アクセスが少ないシステムではコストを抑えやすい一方、処理内容や実行時間によって料金は変動するため、想定するワークロードに合わせて選択することが大切です。
まとめ
Cloud RunとCloud Functionsはどちらもサーバーレスサービスですが、目的が異なります。
- Cloud Runはコンテナを実行するサービス
- Cloud Functionsはイベントをきっかけに関数を実行するサービス
- WebアプリやAPIはCloud Runが得意
- イベント処理や自動化はCloud Functionsが得意
- トラブル時はCloud Logging、IAM、デプロイ状況の順に確認すると効率的
IT業務では「どちらを選ぶべきか」を判断できることが重要です。まずは「Cloud Run=コンテナ」「Cloud Functions=イベント処理」という基本を押さえ、要件に応じて適切に使い分けられるようになりましょう。
