BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース キューレベルのルーティング設定とBufferTask APIによるHTTPリクエストのバッファリングの簡素化

キューレベルのルーティング設定とBufferTask APIによるHTTPリクエストのバッファリングの簡素化

原文リンク(2023-05-_1)

Googleは最近、Cloud Tasksにキューレベルのルーティング設定とBufferTask APIの 2つの新機能をパブリックプレビューで追加した。この2つの新機能を組み合わせることで、Tasksクライアントライブラリを必要とせず、HTTPタスクの作成とキューへの追加を可能にする。

Cloud Tasksは、Google Cloud Platform上のフルマネージドサービスであり、App Engineや任意のHTTPエンドポイントに対する多くのタスクの実行、ディスパッチ、非同期配信を管理する。例えば、開発者はこのサービスを利用して、HTTPリクエストなどのスタンドアローンタスクをキューに追加し、App Engineアプリケーションや任意のHTTPエンドポイントから非同期で実行されるまでキューに留まらせる。さらに、タスクの重複排除、配信保証、レートやリトライのコントロールなど、回復力を高める機能も備えている。

ただし、HTTPタスクには注意点があり、Cloud Tasksのクライアントライブラリは、HTTPリクエストをタスクにラップしてキューに追加する必要がある。このため、呼び出し側とCloud Tasksクライアント・ライブラリとの間に依存関係が生じる。Googleのデベロッパー アドボケイトであるMete Atamel氏は、Googleブログの投稿でこう書いている。

タスクを作成する負担は、本当は呼び出し元よりもターゲットサービスにあるべきで、ターゲットサービスはキューから利益を得るものだからだ。新しいキューレベルのルーティング設定とBufferTask APIはこの問題に対処し、より簡単にタスクを作成する方法を提供する。

キューレベルのタスクルーティング設定機能により、開発者は、すべての新規タスクと保留タスクについて、キュー全体のHTTPタスクルーティングを変更できる。これにより、HTTPターゲットをタスクレベルで設定する必要がなくなるため、タスクの作成がより管理しやすくなる。さらに、コントロールはサービスプロバイダーに移り、キュー内のすべてのタスクの目的を定義するのに適している。例えば、オリジナルのバックエンドが利用できない場合、サービスプロバイダーはトラフィックを別のバックエンドにリダイレクトできる。

出典: https://cloud.google.com/blog/products/serverless/buffer-http-requests-with-cloud-tasks

BufferTask APIはCloud Tasksのもう一つの機能で、開発者はHTTP URL、ヘッダー、権限などのタスク仕様を入力せずにHTTPタスクを生成できる。その代わり、標準的なHTTPリクエストをBuffer APIに送り、Buffer APIはリクエストをキューレベルのルーティング設定内のデフォルト設定を利用したHTTPタスクにパッケージする。

キューがBufferTask APIを利用するためには、Target URIの設定が必要である。これは、BufferTask APIを利用する前提として、キューレベルのルーティング設定機能を有効にする必要があることを意味する。


var BufferTaskApiUrl = $"https://cloudtasks.googleapis.com/v2beta3/projects/{ProjectId}/locations/{Location}/queues/{Queue}/tasks:buffer"; using (var client = new HttpClient()) { client.DefaultRequestHeaders.Add("Authorization", $"Bearer {AccessToken}"); var response = await client.GetAsync(BufferTaskApiUrl); var content = await response.Content.ReadAsStringAsync(); Console.WriteLine($"Response: {content}"); }

これらの機能を使う開発者にどんなメリットがあるのか、InfoQが尋ねたところ、Atmel氏は次のように答えている。

バッファリングは、トラフィックや負荷の急増からサービスを保護したい場合に有効だ。例えば、サービスが1秒間に5つのリクエストしか処理できない場合、1秒間に100のリクエストを送り、サービスに負荷をかけても意味はない。その代わりに、サービスの前にキューを追加し、サービスが許容できる速度でキューからリクエストを排出できる。

さらに、こうも付け加えた。

これらの機能により、サービスの呼び出し側はもうタスクを作る必要はなく、通常のHTTPリクエストを送るだけで、あとはCloud Tasksのキューがキューイング、ドレイン、レートリミッティングで処理する。

最後に、Cloud Tasksの価格詳細については、価格ページで確認できる。さらに、新機能の詳細とガイダンスは、GitHubのCloud Tasks samples repohands-on code labで入手可能である。

作者について

この記事に星をつける

おすすめ度
スタイル

BT