コンテンツに移動
サーバーレス

Cloud Run for Anthos で Kubernetes マイクロサービスにイベント機能が実現

2020年10月2日
Google Cloud Japan Team

※この投稿は米国時間 2020 年 9 月 24 日に、Google Cloud blog に投稿されたものの抄訳です。

Google Kubernetes Engine(GKE)でマイクロサービスを構築すると、アプリケーションを構築する際に高い柔軟性が得られるうえ、Google Cloud が提供するスケールとツールセットのメリットも引き続き享受できます。しかし、優れた柔軟性には大きな責任が伴います。マイクロサービスのオーケストレーションは難しく、メッセージング システムの複雑な実装、カスタマイズ、メンテナンスが必要になる場合があります。

Cloud Run for Anthos には、Google Cloud 上でイベント ドリブン システムを簡単に構築できるイベント機能が含まれるようになりました。現在ベータ版の Cloud Run for Anthos では、イベント機能がイベント インフラストラクチャの実装と管理を担当するため、ユーザーが実装や管理を行う必要はありません。

Cloud Run for Anthos のイベントの特長

  • パブリック HTTP エンドポイントを公開せずに GKE クラスタでサービスをトリガーする機能

  • Cloud Audit Logs を介した Google Cloud Storage、Cloud Scheduler、Pub/Sub、60 以上の Google サービスのサポート

  • 標準化されたイベント インフラストラクチャを介して、サービス間でシグナルを送るためにコードから生成されるカスタム イベント

  • ソースに関係なくすべてのイベントが CloudEvents 標準に準拠することで得られる一貫したデベロッパー エクスペリエンス

Cloud Run for Anthos のイベントは、次のようなさまざまなユースケースに使用できます。

  • Cloud Storage イベントを使用してデータ処理パイプラインをトリガーし、最小限の労力で疎結合システムを作成します。

  • BigQuery 監査ログイベントを使用して、データの読み込みが完了するたびにプロセスを開始し、サービスが書き込むデータを使ってサービスを疎結合します。

  • Cloud Scheduler イベントを使用して、バッチジョブをトリガーします。これにより、ジョブのスケジュールではなく、そのジョブが実行しているコードに集中できます。

  • マイクロサービス間で直接シグナルを送るカスタム イベントを使用し、サービスの非同期調整すべてに対して同じ標準化されたインフラストラクチャを活用します。

Video Thumbnail

仕組み

Cloud Run for Anthos を使用すると、GKE の能力を活用してサーバーレス ワークロードを Kubernetes で実行できます。この新しいイベント機能も同じように、イベントフローを管理するための標準化されたインフラストラクチャを提供するため、優れたアプリケーションの構築に専念できます。このソリューションはオープンソース プロジェクト(Knative)を基盤としており、Google が管理するソリューションの利便性を提供しながら、ベンダー ロックインを回避します。

実際にイベントを見てみましょう。このデモアプリは、スケジュールに基づいてデータセットをクエリし、データからグラフを作成した後、SendGrid を介してユーザーに新しいグラフについて通知する BigQuery 処理パイプラインを構築します。このデモは github で検索できます。
https://storage.googleapis.com/gweb-cloudblog-publish/images/BigQuery_processing_pipeline.max-900x900.jpg

上記の例を見ると、サービスは互いに直接通信していないことがわかります。その代わりに、Cloud Run for Anthos のイベントを使用して、これらのサービス間の調整を次のように「関連付け」ます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/events_on_Cloud_Run_for_Anthos.max-900x900.jpg

このデモを詳しく見てみましょう。

ステップ 1 - クエリランナー用のトリガーを作成する: まず、Cloud Scheduler のジョブに基づいて、クエリランナー サービスをターゲットとするトリガーを作成します。

https://storage.googleapis.com/gweb-cloudblog-publish/original_images/Signal_the_notifier_service_based_on_a_GCS_event.gif

ステップ 2 - コードでイベントを処理する: この例では、トリガーで提供される詳細が必要です。詳細は、HTTP ヘッダーとリクエストの本文から提供され、CloudEvent SDK とライブラリを使用して簡単にマーシャリングを解除できます。この例では C# を使用します。

CloudEvent SDK を使用してイベントを読み取ります。

読み込んでいます...

C# 用の Google Events ライブラリを使って CloudEvent データを解析する:

読み込んでいます...

ステップ 3 - カスタム イベントを使って Chart Creator にシグナルを送る: カスタム イベントを使用すると、バックエンドを維持する必要がなく、ダウンストリーム サービスに簡単にシグナルを送信できます。この例では、次のタイプのイベントを発生させます。dev.knative.samples.querycompleted

読み込んでいます...

次に、このカスタム イベントが発生したときに起動する Chart Creator サービスのトリガーを作成します。この例では、次の gcloud コマンドを使用してトリガーを作成します。

読み込んでいます...

ステップ 4 - GCS イベントに基づいて Notifier サービスにシグナルを送る: Cloud Storage トリガーを作成するだけで、グラフがストレージ サービスに書き込まれたら Notifier サービスをトリガーできます。

https://storage.googleapis.com/gweb-cloudblog-publish/original_images/Create_the_Trigger_for_Query_Runner.gif

これで完了です。この例から、Cloud Run for Anthos のイベントを使用すると、基盤となるインフラストラクチャを管理する必要がなく、標準化されたイベントベースのアーキテクチャを簡単に構築できることがわかります。詳細を確認して利用を開始するには、次の方法があります。


-デベロッパー アドボケイト Mete Atamel

-プロダクト マネージャー Bryan Zimmerman

投稿先