ITシステムに関係している方であれば、「サーバレスコンピューティングサービス」について調べている方も多いのではないでしょうか?
この記事では、Google Cloud Platform(GCP)のサーバレスコンピューティングサービス、「Cloud Run」についてご紹介します。
自社にGCPを導入しようとお考えの担当者様や、サーバレスコンピューティングサービスをお探しの方はぜひご一読ください。
Cloud Run とは
Cloud RunはGoogle Cloud Platform(GCP)におけるマネージドサーバレスプラットフォームであり、コンテナ化されたアプリケーションをスケール管理なしで簡単にデプロイできるように設計されています。
任意のプログラミング言語でコードを記述してコンテナイメージ化すれば、コンテナイメージを Google Cloud にデプロイするだけでアプリケーションを実行することができようになり、クラスタの作成やインフラの管理は全く必要ありません。
開発者はインフラの管理から解放され、コードの書き込みと更新に集中することができます。
Cloud Runの利用方法
Cloud Run には Cloud Run サービスと Cloud Run ジョブの 2 つの利用形態があります。
Google Cloud プロダクトとして「Cloud Run」があり、その中に「Cloud Run サービス (services)」と「Cloud Run ジョブ (jobs)」が作成できるイメージです。
Cloud Run サービス
Cloud Run サービスでは、コンテナイメージをデプロイするだけで、コンテナの実行環境(コンテナインスタンス)とリクエストを受信する HTTPS エンドポイントが提供されます。
Cloud Run サービスはHTTPリクエストをトリガーとして使用し、ウェブアプリケーションやAPIなど、リクエストごとにコンテナを起動して処理を行います。ステートレスなコンテナとして動作し、利用していないときは0にスケールダウンするため、コスト効率も非常に高いサービスです。リクエストを受けてレスポンスを返す、ウェブサイトや API バックエンドなどのユースケースに用いられます。
Cloud Run ジョブ
Cloud Run ジョブでは、ユーザーが作成したコードを HTTP リクエスト起点ではないジョブとして実行することができます。バッチ処理や定期的なタスク実行など、一回きりの実行やスケジュールされたジョブの実行に適しています。
時間がかかる処理をバックグラウンドで実行し、完了するとリソースを解放する仕組みで、
ジョブは任意のタイミングで実行することができ、コンテナインスタンスを複数組み合わせて実行することにより、60 分以上のジョブ実行や並列処理を実現できます。
Cloud RunとCloud Functionsとの違いは?
Cloud Functionsはイベントドリブンのコード実行に特化しており、コードスニペットをトリガーに応じて実行するのに対し、Cloud Runはコンテナ単位でアプリケーションをデプロイします。
Cloud Functionsはより小規模で単一の機能に特化したアプローチであるのに対し、Cloud Runはより広範なアプリケーションとその依存関係を包括的にデプロイすることが可能です。
Google App Engine(GAE) との違いは?
GAEもまたGoogle CloudのPaaSの一つで、アプリケーションのホスティングに特化していますが、Cloud Runに比べて言語やランタイムの選択が制限されます。
GAEは特定のランタイム環境で最適化されたアプリケーションに適しているのに対し、Cloud Runは任意のコンテナ化されたアプリケーションを実行できる柔軟性を持っています。
Cloud Run の特徴
プログラミング言語・OS ライブラリの制約がない
Cloud Runは任意のプログラミング言語で書かれたアプリケーションをデプロイすることが可能であり、Dockerコンテナとしてパッケージ化されたアプリケーションなら、ほぼどんな言語やライブラリでも実行することができます。
アプリケーションの移行が簡単
既存のアプリケーションをCloud Runに移行するプロセスは、Dockerコンテナを通じて行われ、比較的シンプルです。この移行のしやすさは、多くの企業が既存のインフラからクラウドへ移行する際の大きなメリットとなります。
高速自動スケーリング
Cloud Runはリクエストが来た時点で自動的にコンテナを起動し、処理が終わればすぐにシャットダウンすることで、リソースの使用を最適化します。この高速なオートスケーリングは、トラフィックの変動が激しいアプリケーションに特に有効です。
シンプルなデプロイ
Cloud Runでのデプロイプロセスはシンプルであり、Google Cloudのコマンドラインツールやコンソールから数回のクリックで完了します。これにより、デプロイメントプロセスが迅速化され、開発サイクルが短縮されます。
Cloud Runの料金体系
Cloud Runでは、料金は使用したリソースに対してのみ課金されます(100 ミリ秒単位で切り上げ)。Cloud Run の合計請求額は、無料枠を適用した後、料金表のリソース使用量の合計になります。
また、Cloud Run では リクエストの処理中のみ CPU を割り当てる 場合と、CPU を常に割り当てる 場合で、別々の料金体系が適用されます。
リクエストの処理中のみ CPU を割り当てる Cloud Run サービス
Cloud Runのデフォルトの設定では、リクエストを処理している間のみCPUリソースが割り当てられます。これにより、CPUのアイドル時間に対する課金を回避できます。
・コンテナインスタンスがリクエストを処理している間に割り当てられた CPU とメモリの利用時間について 100 ミリ秒 の粒度で課金されます。
・最小インスタンス数を 1 以上にしている場合のみ、アイドル状態のインスタンスに対しても料金が発生します。
・デプロイした Cloud Run サービスに対するリクエスト数について 100 万リクエスト 単位で課金されます。
CPU を常に割り当てる Cloud Run サービス
一方で、常時CPUリソースが必要なアプリケーションのためのオプションも存在します。この設定では、アイドル状態でもリソースが割り当てられ、それに応じた課金がなされます。
・CPU を常に割り当てる場合、リクエスト単位の課金はなく、CPU とメモリの利用時間についての課金のみとなっています。
・コンテナインスタンスの起動から終了までの間、リソースの利用料金が発生します。
・常時リソースが割り当てられている分、単価は安くなっています。
詳細は、GCP公式サイトの料金表をご確認ください。
https://cloud.google.com/run/pricing?hl=ja
Cloud Run の活用事例
では、Cloud Runはどのような場面で使用されるのでしょうか?いくつか活用事例をご紹介します。
イベント駆動の処理
Google CloudのPub/SubやFirebaseのようなイベント駆動型のサービスと組み合わせることで、メッセージがキューに到着した際にバックグラウンドで処理を行うワーカーとしてCloud Runを利用することができます。
機械学習モデルのデプロイ
機械学習モデルをAPIとしてデプロイし、リアルタイムで予測を提供するバックエンドとして活用することができます。これにより、開発者はモデルのスケーリングやインフラ管理を心配せずに、機械学習モデルを簡単にプロダクション環境に導入することができます。
モバイルアプリのバックエンド
Firebaseと組み合わせて、認証、データベース、その他のバックエンドサービスとして利用されることがあります。Firebaseトリガーによって起動される関数をCloud Runでホストすることもできます。
まとめ
GCPのサーバレスコンピューティングサービスであるCloud Runの基本機能や特徴、料金についてご紹介しましたがいかがでしたでしょうか。
GCPでは、Cloud Run以外にも多種多様な機能・サービスを提要しており、組み合わせることでクラウド上で様々なシステムを構築することが可能です。
無料利用可能なサービスもありますので、ご興味を持たれた方はぜひ一度お試しされてみてはいかがでしょうか。
株式会社KUIXではGCPを用いたシステムの開発やコンサルティングを行っています。本格的なGCP環境の構築・導入をご検討される際は、ぜひ一度ご連絡ください!お問い合わせはこちらから