
目次
はじめに
コンテナ運用を効率化するためには、 Cloud Run が有効なサービスの一つになります。実際に多くの企業が Cloud Run を活用し、自社の業務効率化や生産性向上に繋げています。
Cloud Run とは、 Google のパブリッククラウド「 Google Cloud 」に内包されているサービスであり、フルマネージドで提供されているコンテナの実行環境です。なお、コンテナとはアプリケーションや設定用ファイル、ライブラリなどを OS 上にまとめたものを意味します。
なお、 Cloud Run でコードを実行する際には、
- Cloud Run サービス
- Cloud Run ジョブ
という 2 種類から好きなものを選択して利用できます。
Cloud Run の概要や仕組みに関しては以下の記事で詳しく解説していますので、関心のある方はぜひご参考いただければと思います。
本記事では、 Cloud Run の具体的な 8 つのユースケースと組み合わせて使用できる Google Cloud サービス、活用の注意点を一挙にご紹介します。 Cloud Run の導入を検討されている方は、ぜひ最後までご覧ください。
Cloud Run のユースケース 8 選
本章では、 Cloud Run のユースケースを 8 つに厳選してご紹介します。自社で Cloud Run を活用する際の参考になると思いますので、ぜひ内容を理解しておきましょう。
バッチジョブと非同期処理の実行
Cloud Run は、バッチ処理や非同期ジョブの実行に適したプラットフォームです。
バッチ処理を行う際には、 Cloud Run のコンテナを使用してスケーラブルに処理を実行できるため、処理の大規模な並列化やリソースの効率的な利用が可能になります。例えば、大規模なデータセットをもとにした複雑なレポート作成などを Cloud Run のバッチ処理で効率化できます。
また、非同期処理を行う場合には、 Cloud Run のイベント駆動型の性質を活用することにより、必要なトリガーに応じた処理を設定できます。そのため、 SNS ログ(ユーザー投稿)のリアルタイムな分析など、リアルタイム性の高い処理や、外部のイベントに対するリアクションを容易に実現することが可能です。
イベント駆動型ワークフローの実行
イベント駆動型のワークフローとは、特定のイベントが発生した際に、自動的に特定の処理を実行してくれる仕組みのことです。そして、 Cloud Run を使えば、イベント駆動型のワークフローをシームレスに実行できます。
例えば、 Cloud Run を Pub/Sub ( Google Cloud のメッセージングサービス)や Google Cloud Storage ( Google Cloud のストレージサービス)などのイベントソースと統合することで、イベント駆動型のアプリケーションを開発可能になります。これにより、イベント駆動型のアーキテクチャを構築でき、柔軟性の高いシステム構築に繋がります。
具体的な利用シーンとしては、ログ監視・アラートの仕組みの実装や、ファイルがアップロードされた時の自動処理などが挙げられます。また、 EC サイトでの注文完了イベントをトリガーとして設定すれば、 Cloud Run で注文確認メールを自動送信したり、在庫管理システムを自動更新したりするような使い方も考えられます。
マイクロサービスアーキテクチャに基づいたアプリケーション開発
Cloud Run は、マイクロサービスアーキテクチャに基づいたアプリケーション開発にも適しています。マイクロサービスを個々のコンテナとして展開することで、それぞれのサービスを独立してスケーリングし、管理することができます。
マイクロサービスの具体例としては、
- 画像処理マイクロサービス:ユーザーがアップロードした画像に対して、特定の処理(リサイズ、フィルター処理、顔検出など)を行う
- データ処理マイクロサービス:ログデータやセンサーデータなどの大量のデータを処理して集計・分析を行う
- API ゲートウェイとしてのマイクロサービス:複数の内部マイクロサービスに対して統一された API インターフェースを提供する
などが挙げられます。
そして、 Cloud Run を活用すれば、これらをマイクロサービスとして独立的にデプロイ・スケーリング可能になります。また、マイクロサービス化することで、複数のサービスを仕組みとして使い回せるようになるため、ログから取得したデータを画像処理マイクロサービスにわたして自動処理を行うなど、マイクロサービス間の連携自動化にも繋がります。
なお、 Cloud Run でマイクロサービス間の通信を実装するためには、 gRPC や RESTful API などが用いられます。 gRPC はマイクロサービス間やクライアント・サーバー間の通信を行うためのオープンソースのフレームワークであり、効率的にデータをやり取りできる点が特徴です。また、 RESTful API は Web アーキテクチャの設計原則の一つであり、リソース(ユーザー情報や商品情報など)を一意の URI ( Uniform Resource Identifier :統一資源識別子)で識別し、 HTTP メソッド( GET 、 POST 、 PUT 、 DELETE など)を使って、そのリソースに対する操作(取得、作成、更新、削除など)を行う仕組みのことです。
加えて、 Cloud Run はコンテナベースのアプリケーションをホストするためのサーバーレスなプラットフォームです。そのため、自社によるインフラ管理が不要な点も大きな魅力となっています。
このように、マイクロサービスアーキテクチャに基づいたアプリケーション開発を行う場合には、 Cloud Run が有効な選択肢の一つになると言えるでしょう。
サーバーレス CI / CD パイプライン
Cloud Run を使用することで、サーバーレスな CI / CD パイプラインを構築することができます。なお、 CI / CD パイプラインとは、継続的インテグレーションと継続的デリバリを組み合わせ、コーディングやテスト、展開などのソフトウェアのデリバリを自動化するものです。
開発者はコンテナイメージをビルドすることで、 Cloud Run にデプロイするためのパイプラインを設定できます。これにより、アプリケーションの変更を素早く反映し、迅速なデプロイメントを実現することが可能なほか、 Cloud Run のサーバーレスな性質により、リソースの効率的な利用やコストの最適化にも直結します。
システムの負荷分散の実現
Cloud Run はサービス単体でもシステムの負荷分散を実現することが可能であり、シンプルで使いやすい操作性やコスト効率、サーバーレスで提供されている点などがメリットとして挙げられます。そのため、小規模なアプリケーションや単一リージョンでの運用、シンプルな負荷分散要件などに該当する場合は、 Cloud Run 単体の負荷分散で問題なく運用することが可能です。
また、 Cloud Run は Cloud Load Balancing ( Google Cloud に搭載されている負荷分散サービス)と連携することで、さらに高度な負荷分散を実現できます。 Cloud Load Balancing との連携により、グローバルな負荷分散やヘルスチェックの拡張、静的 IP アドレスの割り当てなどが可能になるため、大規模な Web アプリケーションや複数リージョンでの運用、複雑な負荷分散要件にも対応できるようになります。
なお、一般的なロードバランサーでも負荷分散を行うことは可能ですが、自動スケーリングの機能が完全には自動化されていないことがあります。加えて、基盤となるインフラストラクチャの設定・管理が必要であり、特定のプラットフォームに依存する可能性があるため、手間なく効率的に負荷分散を行うためには、 Cloud Run が有効な選択肢になると言えるでしょう。
機械学習モデルのデプロイ
機械学習モデルのデプロイを行いたい場合、 Cloud Run が心強い武器になります。 Cloud Run は TensorFlow や PyTorch などで作成されたモデルを簡単にコンテナ化して展開可能なため、モデルのバージョン管理やスケーリングを手間なく実現できます。
また、機械学習モデルのデプロイに求められる必要最低限のリソースのみを使用できる点も嬉しいポイントです。自社で AI を活用しており、機械学習モデルを効率的にデプロイしたいと考えているのであれば、 Cloud Run の導入を検討してみてください。
ただし、機械学習モデルは通常サイズが大きいため、コールドスタートの遅延が問題になることがあります。 Cloud Run は最小インスタンス数やコンテナ管理などを細かく設定できるため、極力モデルを軽量化できるように工夫することが重要なポイントになります。
アプリケーション開発に集中するための環境整備
Cloud Run は、開発者がアプリケーション開発に集中できるような環境を整備するのに大きく役立ちます。 Cloud Run は 100 % クラウドで提供されており、サーバーレスの仕組みを採用しているため、インフラストラクチャを自社で管理する必要はありません。
また、柔軟にスケーリングできる点も Cloud Run の大きな特徴であり、物理サーバーなどのインフラリソースを気にすることなく、使用量を自由に調節できるため、開発者はコードの品質や機能の開発に注力できるようになります。さらに、 Cloud Run はアプリケーションのランタイム環境の管理も自動化することが可能なため、開発者の業務効率化や生産性向上に繋がります。
手間のかからないシステム運用の実現
システムを運用する際には、運用・保守にかかる工数が課題になることが一般的です。その点、 Cloud Run はフルマネージドサービスで提供されているため、システムインフラの管理業務や運用業務を最小限に抑えられます。
また、 Cloud Run には自動スケーリングや自己修復などの機能が備わっているため、アプリケーションの可用性や信頼性を担保しながら、運用コストを削減することが可能です。このように、システム運用における手間を削減し、安全な環境でコンテナを運用したい場合には、 Cloud Run が有効なツールであると言えるでしょう。le Cloud のアカウントと連携して権限制御をしたりするなど、ビジネスシーンで便利に使える機能が多数備わっています。
Cloud Run と組み合わせて利用できる Google Cloud サービス
Cloud Run は単体でも便利なサービスですが、他の Google Cloud サービスと組み合わせることで、さらなる利便性向上に繋がります。本章では、 Cloud Run と組み合わせて利用できる Google Cloud サービスを 3 つご紹介します。
Cloud Build
Cloud Build とは、サーバーレスで提供されている Google Cloud の CI / CD サービスです。 実行したいステップを YAML (ヤメル:プログラミング言語の一種)で定義することで、コンピューティングサービスに対するビルドやデプロイなどを実行できます。
そして、 Cloud Run には Cloud Build と統合するための機能が搭載されており、 Git リポジトリを指定すれば、 Cloud Build によるビルドやデプロイ構成などを自動でプロビジョニングすることが可能になります。このように、 Cloud Run と Cloud Build を組み合わせて使うことで、 CI / CD パイプラインの効率的な構築に繋がります。
Cloud Storage
Cloud Storage とは、 Google Cloud に搭載されているストレージサービスです。この Cloud Storage と Cloud Run を組み合わせれば、様々なシーンで便利に使えるようになります。
例えば、 Cloud Run のコンテナ環境を利用することで、 Cloud Storage に保存されているデータをリアルタイムで処理するアプリケーションを作成できます。具体例としては、画像処理アプリケーションやデータ解析ツールなどが該当します。
また、 Cloud Run アプリケーションが処理したデータやユーザーからのアップロードを Cloud Storage に保存することで、データの安全性や永続性、スケーラビリティの確保に繋がります。
Cloud Functions
Cloud Functions とは、 Google Cloud で提供されているサーバーレスコンピューティングサービスであり、指定したイベントを契機に関数を実行できます。前述した Cloud Storage と同様、 Cloud Functions を Cloud Run と組み合わせることで、自社の業務効率化や生産性向上に繋がります。
例えば、 Cloud Run と Cloud Functions を組み合わせることで、複雑なワークフローを効率的に構築することが可能になります。例えば、 Web フォームからのデータ受け取りを Cloud Functions で処理し、その結果を Cloud Run に渡すような使い方が考えられます。
さらに、 Cloud Run から Cloud Functions を呼び出すことで、特定のイベントや条件が発生した際に処理をトリガーできます。これにより、新しいデータがストレージへアップロードされた時に、そのデータを処理するための Cloud Function を呼び出すなど、より柔軟な運用を実現可能になります。
なお、 Cloud Run と Cloud Functions は、どちらもジョブを効率的に実行できる点は共通していますが、厳密には様々な違いが存在します。例えば、 Cloud Run はコンテナ単位でジョブを実行するのに対して、 Cloud Functions は個別の関数単位での実行になります。また、両サービスとも自動スケーリングの機能が搭載されていますが、 Cloud Functions の方がより細かい粒度でスケールできます。
加えて、 Cloud Functions は短時間(イベントドリブン関数の場合は最大 540 秒)の処理に最適化されていますが、 Cloud Run はさらに長時間の処理が可能になります。このように、 Cloud Run と Cloud Functions はそれぞれ異なる特徴を持っているため、自社の状況に合わせて、適切に使い分けることが大切です。
Cloud Run の活用事例
企業向けの各種 IT サービスを展開する Sansan 株式会社では、インボイス管理サービスである Bill One を提供しており、そのオプションサービスとして位置付けられる「 Bill One ビジネスカード」の開発・運用インフラに Google Cloud を採用しています。
Bill One ビジネスカードとは、アップロードされた証憑と利用明細を自動で照合し、金額が異なる場合にアラートを表示する機能の付いた法人向けクレジットカードです。カード決済後は利用者に対して証憑提出の依頼メールを自動で配信してくれるため、証憑の回収からチェックまでの一連のプロセスを自動化できます。
そして、このサービスの開発・運用インフラとして Google Cloud が選ばれた理由は、
- 運用負荷を低減して開発に集中する
- マルチクラウドを推進する
- 先進技術にチャレンジする
の 3 点であり、これらを実現するための手段として、 Cloud Run を導入・活用したのです。
インフラの基本構成としては、Web アプリケーションファイアウォール( WAF )とロードバランサーの後ろに Backends For Frontends ( BFF :フロントエンドのために API をコールしたり、 HTML を生成したりするサーバー)があり、その後ろに Cloud Run によるバックエンドサービスが並ぶ構成となっています。
また、各サービスがマイクロサービスとして構成されており、サービス間は非同期の連携になっているため、それぞれがデータベースを保有している点が大きな特徴です。そして、カードサービスの処理は Cloud SQL 、ペイメント処理は AlloyDB 、細かな部分は Cloud Functions 、ストレージは Cloud Storage など、シーンや用途に合わせて、様々な Google Cloud サービスを使い分けて運用しています。
インフラ部分に Cloud Run を採用することで、エンジニアの運用負荷の低減を実現しただけでなく、 Cloud Run に搭載されている自動スケーリングの機能により、突発的な処理の増加にも対応できるようになりました。さらに、 Cloud Run を AlloyDB と組み合わせて使うことで、高い可用性を実現でき、ダウンタイムの低減にも繋げています。
結果として、 Bill One ビジネスカードの開発には約 30 名のエンジニアが参加しましたが、開発作業の開始からわずか半年間という短い期間で本番リリースを迎えることができました。また、リリース後もシステムは問題なく安定稼働しており、社員がアプリケーション開発に集中できる環境整備に繋がっています。
このように、新サービスの開発・運用に Cloud Run を活用し、自社の業務効率化や生産性向上を実現した好事例だと言えるでしょう。
Cloud Run を利用する際の注意点
Cloud Run はとても便利なサービスですが、利用時に注意すべきポイントがいくつか存在します。本章では、 Cloud Run を利用する際の注意点を 3 つご紹介します。
状況に合わせて使うサービスを選択する
Google Cloud には、 Cloud Run 以外にも様々なコンピュートサービスが存在します。
以下、代表的なサービスを表にまとめます。
Google Cloud サービス名 | 概要 | ユースケース |
---|---|---|
Google Compute Engine ( GCE ) | コンピュートリソースを仮想マシン上で利用できるサービス | 開発・テスト環境の構築、 Web ホスティングとコンテンツ配信、 ETL 処理やレポート作成など |
App Engine | Web アプリケーションを開発できるプラットフォーム | Web アプリケーションの開発とホスティング、マイクロサービスの展開、モバイルアプリのバックエンドとしての利用など |
Anthos | クラウドネイティブアプリケーションを構築・実行できるプラットフォーム | クラウドネイティブアプリケーションの開発、ハイブリッドクラウドの管理、マルチクラウド環境でのデータ分析など |
このように、サービスごとに特徴やユースケースは異なるため、自社の状況に合わせて最適なものを選択することが大切です。 Cloud Run の利用が適しているユースケースは前章でご説明していますので、確実に内容を理解しておきましょう。
なお、特定のサービスのみを使うのではなく、組み合わせて利用するハイブリッドアプローチも有効な選択肢になります。例えば、カスタム設定が必要なデータベース( MongoDB など)を Google Compute Engine で運用し、フロント部分に Cloud Run を活用するなど、複数サービスを組み合わせることで、利便性をより向上させることができます。
セキュリティ強化のための工夫を施す
Cloud Run をビジネスで利用する場合には、セキュリティの強化を忘れてはいけません。セキュリティを疎かにした場合、自社の貴重なデータが消失・漏洩してしまうリスクがあります。
例えば、各種認証やアクセス制限、 VPC 連携など、 Cloud Run を安全に利用するためのセキュリティ対策を実施してください。これにより、様々なリスクを低減し、安心して Cloud Run を使うことができます。
事前にコストシミュレーションを行う
Cloud Run は使用量に応じて料金が変動する従量課金制を採用しています。そのため、無計画にサービスを使い続けた場合、想定外の高額請求が発生する可能性があります。
これを防ぐためには、事前に使用リソース量を見積もり、発生料金をシミュレーションしておくことが大切です。また、 Google Cloud には利用料金が一定額に達した場合に、ユーザーに対して自動通知(アラート)を送る「予算アラート」という仕組みが用意されているため、コストが不安な方は積極的に活用するとよいでしょう。
Google Cloud の予算アラートについては以下の記事で詳しく解説しています。
まとめ
本記事では、 Cloud Run の基礎知識や利用時の注意点を解説しつつ、具体的な 8
つのユースケースを一挙にご紹介しました。
企業が Cloud Run を活用することで、イベント駆動型ワークフローの実行や機械学習モデルのデプロイなど、様々なユースケースに対応できます。この記事を読み返して、具体的な内容を理解しておきましょう。
当社センティリオンシステム 大阪事業所はこれまでの多くのクラウド開発を支援してきた知見を活かし、クラウドを活用した内製化に取り組まれるお客様を全力でサポートします。
以下のような課題をお持ちの方は、ぜひお気軽にご相談ください。
- クラウド活用を推進するための開発体制作りが進まない
- 既存資産をどのようにクラウド移行するか検討する知見が不足している
- 内製化するためのクラウド開発スキルを持った人材が不足している
- コスト削減の実現方法に悩んでいる
- SRE を実現したい
貴社の状況に合わせて、体制づくり支援や開発計画支援、クラウド開発スキルアップ支援など、様々な支援メニューを提供しています。
無料で相談できるため、まずは問い合わせフォームからご連絡いただければと思います
本記事を参考にして、 Google Cloud の導入および Cloud Run の活用を検討してみてはいかがでしょうか?