🌟

Bigtable: リクエストの優先度を構成する

2023/12/07に公開

はじめに

こんにちは、クラウドエース Data/ML ディビジョン所属の谷口です。
クラウドエースの IT エンジニアリングを担うシステム開発部の中で、
特にデータ基盤構築・分析基盤構築からデータ分析までを含む一貫したデータ課題の解決を専門とするのがデータ ML ディビジョンです。

データ ML ディビジョンでは活動の一環として、毎週 Google Cloud の新規リリースを調査・発表し、データ領域のプロダクトのキャッチアップをしています。その中でも重要と考えるリリースを本ページのように記事として公開しています。

今回紹介するリリースは、Cloud Bigtable のアプリプロファイルにおけるリクエストの優先度についてです。
Bigtable のアプリプロファイルでは、Bigtable に送信されるリクエストの優先度を指定することができます。
本記事では Bigtable に送られるリクエストの優先度と、その使用例について紹介します。

今回のリリース内容について

Cloud Bigtable ではアプリプロファイルを利用し、リクエストの優先度を指定することで
特定のリクエストを他のものよりも先に処理することが可能となりました。
優先度は、使用するアプリプロファイルによって決まります。

リクエストの優先度は、高、中、低を指定できます。
デフォルトのリクエストの優先度は「高」です。

遅延が許されないリクエストに対しては、アプリプロファイルの優先度を高く設定します。
これにより、そのリクエストは他のものよりも早く処理されます。
一方、他の高優先度のリクエストのパフォーマンスを下げずに実行したいリクエストに対しては、
アプリプロファイルの優先度を中または低に設定します。
これにより、重要なリクエストの処理が遅くなることなく、これらのリクエストも適切に処理されます。

アプリプロファイルについて

アプリプロファイルとは、Bigtable がアプリケーションからのリクエストをどのように処理するかを定義した設定です。
これらのプロファイルは複数作成することができ、リクエストごとに利用するプロファイルを切り替えることが可能です。

特に、複数のクラスタを使用するインスタンスでは、アプリプロファイルが重要となります。
これは、トランザクションの整合性に関する設定や、クラスタへのルーティングの方法を定義するためです。

ルーティングとは、例えば業務アプリケーションのトラフィック(データの流れ)と、
分析用のトラフィックに別々のアプリプロファイルを用いて、それぞれを別のクラスタへと導くことです。
これにより、クラスタへの負荷を分散させ、効率的なデータ処理を実現することができます。

リクエストの優先度について

優先度の段階について

アプリプロファイルでは、送られるリクエストの「優先度」を設定することができます。
優先度は、「高」、「中」、「低」の3つから選べます。優先度が高いリクエストは、
優先度が低いリクエストよりも先に処理される可能性があります。

デフォルトのリクエストの優先度は「高」です。

例えば、すぐに結果が欲しい場合や、
遅れが許されない場合(レイテンシの影響を受けやすい)のリクエストには、
優先度を「高」に設定したアプリプロファイルを利用します。

一方、他の重要なリクエストのパフォーマンス(動作の良さ)を下げないように、
時間がかかっても良いリクエストや、一度にたくさんのデータを処理するリクエスト(バッチ読み取り分析)には、
「中」または「低」の優先度を設定したアプリプロファイルを利用します。

利用シーン

遅延に敏感なリクエストには優先度を「高」に設定したアプリプロファイルを、
他の重要なのパフォーマンスを下げずに実行したいリクエストには
優先度を「中」または「低」に設定したアプリプロファイルを使用することで、
各種ワークロードのパフォーマンスを最適化できます。

機能検証

適用方法

新しいアプリプロファイルを優先度を指定して作成する

2023/11/29 現在、リクエストの優先度を指定したアプリプロファイルの作成、更新は gcloud CLI を用いることでのみ可能です。

リクエストの優先度を指定してアプリプロファイルを作成するには、次のコマンドを実行します。

実行前のアプリプロファイルは default という名前のものが存在しています。


ここに、default2 という名前のアプリプロファイルを作成します。

gcloud bigtable app-profiles update default2 \
    --instance=bigtable-instance1 \
    --route-any \
    --priority=PRIORITY_LOW

このコマンドを実行すると、bigtable-instance-1 に default2 という名前のアプリプロファイルが作成されます。

--priority=PRIORITY_LOW の部分は優先度によって以下のように指定することができます。
高の場合: PRIORITY_HIGH
中の場合: PRIORITY_MEDIUM
低の場合: PRIORITY_LOW

既存のアプリプロファイルの優先度を更新する

次に、既存のアプリプロファイルの優先度を更新する方法を紹介します。
デフォルトでは優先度は「高」になっています。

今回は default の優先度を中に変更します。
以下のようなコマンドを実行します。

gcloud bigtable app-profiles update default \
    --instance=bigtable-instance-1 \
    --route-any \
    --priority=PRIORITY_MEDIUM

このコマンドを実行すると、優先度が中に変更されていることが確認できます。

--priority=PRIORITY_MEDIUM の部分は先ほどと同様に、
以下のように優先度を指定できます。
高の場合: PRIORITY_HIGH
中の場合: PRIORITY_MEDIUM
低の場合: PRIORITY_LOW

アプリプロファイルの指定してリクエストを送信

アプリプロファイルの指定をしてリクエストを送信することが可能です。
アプリプロファイルの指定方法はこちらをご覧ください。
指定したアプリプロファイルに対してリクエストが送信できているかどうかは、
Bigtable のモニタリングから確認することができます。

今回私が指定したのは profile という名前のアプリプロファイルだったので、
以下のように表示されています。

まとめ

本記事では、Cloud Bigtableのアプリプロファイルにおける新機能、リクエストの優先度について解説しました。
この機能を活用することで、送信するリクエストの優先度を自由に設定し、
それぞれのリクエストがどのように処理されるかを制御することが可能になります。

具体的な使用例としては、遅延に敏感なリクエストには高い優先度を、
他の重要なリクエストのパフォーマンスを下げずに実行したいリクエストには中または低の優先度を設定することで、
各種ワークロードのパフォーマンスを最適化できます。

Discussion