Cloud Functions と Cloud Run: それぞれの使いどころ
Google Cloud Japan Team
※この投稿は米国時間 2022 年 11 月 12 日に、Google Cloud blog に投稿されたものの抄訳です。
サーバーレス アーキテクチャを採用することで、従来のアプローチよりも管理上のオーバーヘッドを削減し、ソリューションをより迅速に低費用で市場に投入できます。Google Cloud の Cloud Functions と Cloud Run は、そうした特徴をもつ 2 つのサーバーレス コンピューティング プロダクトです。「Cloud Functions または Cloud Run をそれぞれより効果的に使用できる場面を教えてください」という質問がお客様からよく寄せられます。
Commerzbank AG はそうしたお客様の一例です。同社は、サーバーレス ワークロードのデプロイ先と管理方法を決定する際に役立つフレームワークを開発しています。Commerzbank AG の Cyber Center of Excellence のセンター長であり、ビッグデータと高度アナリティクスの責任者である Christian Gorke 氏は、次のように述べています。「将来を見据えたビジネスの中心基盤を提供するために、当社はクラウドネイティブ サービスを採用して、スケーラビリティやセキュリティにおける優れた面やサーバーレスといった利点を活用しています。各サービスには独自のメリットがありますが、それらを組み合わせてマッチングさせることで当社のビジネスニーズは満たされています。」
概して、サーバーレス ワークロードは、「プラットフォームの接続」または「サービスの実行」のいずれかに該当する傾向があることがわかっています。「プラットフォームの接続」においては、通常、単一のタスクを実行する個別のコードを記述する必要があります。このコードはシンプルであることがメリットになります。他方で、「サービスの実行」においては、カスタム サーバー構成に柔軟性があり、複数のタスクを実行できることがメリットになります。
この投稿では、Cloud Functions と Cloud Run の概要を説明し、ワークロードに最適なオプションを選択するうえで役立つフレームワークを提供します。
サーバーレス プロダクトの選択
Cloud Functions と Cloud Run はどちらもゼロからスケールして、非常に高い需要にまで対応できます。ただし、シンプルさと柔軟性の点で、この 2 つの間にはトレードオフの関係があります。
サーバーレス プロダクトを使用してプラットフォームを接続している場合、ウェブサーバーまたは言語ランタイムを制御するためにコンテナを構成する必要はないかもしれません。こうしたケースでは、Cloud Functions が開発者に代わってその構成を管理するため、開発者はビジネスの核心的な部分に集中できるようになります。他方で、サービスの実行では、ウェブサーバーや言語ランタイムの選択など、コンテナをより細かく制御する必要があります。こうしたユースケースでは、Cloud Run を使用することで開発者によるコンテナの柔軟な構成が可能となり、Cloud Run はそれ以外を開発者に代わって管理します。
Cloud Functions を使用してプラットフォームを接続する
Cloud Functions を使用すると、プラットフォームの接続がシンプルになり、簡単に保守できるようになります。気にかける必要があるのはコードだけです。コーディングの知識があるメンバーがチームにいれば、コードをパッケージ化することなくソリューションを作成できます。また、7 つの一般的な言語から選択することもできます。たとえば、データ サイエンティストなら、インフラストラクチャの知識があまりなくても、Python スクリプトをクラウドで実行できます。
Cloud Functions は、各ファンクションを独立したコンポーネント(関数)にすることで、生産性を高く保ち、運用コストを低く抑え、他のワークロードに直接影響を与えないようにします。1 つの関数を変更したり更新したりしても、別の関数に影響する可能性はほとんどありません。
Cloud Functions を活用して、Cloud Storage、Eventarc、Pub/Sub などの他のシステムからトリガーされる短期間のイベントベースのアクション(データ パイプラインの自動化など)を処理しています。
Commerzbank AG
Cloud Functions は、オブジェクトが Cloud Storage バケットに追加されたときに関数を呼び出すために使用されることが多いです。この関数により、画像のサムネイルを生成したり、テキスト ファイルの感情分析を実行したりすることができます。お客様が Cloud Functions を選択する例は他にも多くあります。
データを変換して BigQuery に読み込む
サードパーティ(GitHub)によって呼び出される Webhook を作成する
ML API を使用して、データベースまたはストレージ バケットに追加されたデータを分析する
Cloud Run でサービスを実行する
Cloud Run では、業界基準のコンテナを活用することで、サービスを簡単かつシンプルにスケーリングし、保守することができます。また、既存のツールと知識を活用してサービスをパッケージ化したものを Cloud Run にデプロイし、ランタイム インフラストラクチャのホスティングとスケーリングを Google Cloud に管理させることができます。
Cloud Run は幅広いアプリケーションに適しています。Cloud Run を利用すれば、コンテナ化された単一のアプリでサービスをデプロイできます。また、アプリケーションを実行するときに、任意の言語、ライブラリ、バイナリを使用できます。さらに、3 層構造の Java アプリケーションなどのコンテナ化された以前のワークロードについても、Google がサーバーの管理やスケーリングを行います。
Cloud Run は、AI モデルを埋め込んだり、複数のインターフェースを長期間提供したりする必要がある場合など、一歩踏み込んだカスタマイズが必要な場合に役立ちます。
Commerzbank AG
Cloud Run を使用するのに適しているものとして、販売商品を一覧表示する e コマース ウェブサイトが挙げられます。ただし、Cloud Run を使用できるアプリケーションの例は他にも多くあります。
ウェブベースのワークロード
モバイルアプリやゲーム用の REST API または gRPC API
社内で使用するバックオフィス用のカスタム アプリ
Cloud Functions と Cloud Run を併用する
Cloud Functions と Cloud Run は、マルチワークロード環境で互いに補完し合うことができます。
両方のサービスを組み合わせることで、アプリケーション チームは、インフラストラクチャとその依存関係を Google Cloud に任せ、ビジネス コードに集中できるため、生産性が大幅に向上します。
Commerzbank AG
以上の説明は、ワークロードに最適なプロダクトを探しているお客様を対象とする一般的なガイドラインですが、考慮すべき要因が多くあります。お客様は自分たちのチームの既存のツールと専門知識を活用したいと思われているかもしれません。あるいは、すでに特定の Google Cloud プロダクトの使用が承認されているかもしれません。
第 2 世代の Cloud Functions は Cloud Run の強化されたインフラストラクチャ上に構築されているため、使用するプロダクトを選択する際に悩む必要がありません。シンプルなコードを記述して Cloud Functions にすばやくデプロイすることで、すぐに生産性を高めることができます。その後、余分な制御を非常に簡単に解除できる Cloud Run にそのコードを移行することで、より複雑なウェブサービスに進化させることができます。
サーバーレス プロダクトを選択する際には、こうした要因を考慮することが有用であると思われます。それにより、シンプルさと柔軟性のバランスを適切に保ってワークロードをデプロイできるため、保守とスケーリングが容易なソリューションを迅速に提供できます。Google Cloud でサーバーレス プロダクトの利用を開始するにあたって、Cloud Run クイックスタートまたは Cloud Functions Codelab をお試しください。
- Google Cloud プロダクト マネージャー Jaisen Mathai
- シニア デベロッパーリレーションズ エンジニア Sara Ford