アンチパターン: 割り当てポリシーでカーディナリティの高い ID を使用する

Apigee Edge のドキュメントを表示しています。
Apigee X のドキュメントに移動します。
情報

割り当てポリシーは、API プロキシが受信したリクエストの数をカウントするために使用されます。この機能により、API プロバイダで一定の時間内にアプリで行われた API 呼び出しの数に上限を適用できます。

Quota ポリシーには、各リクエストがカウントされる割り当て「バケット」を識別する identifier 要素を含めることができます。

アンチパターン

割り当てポリシーを使用する場合は、高基数の識別子を使用しないでください。

基数とは、セット内の一意のデータ値の数を指します。カーディナリティの高い識別子には、多数の個別の値が設定される可能性があります。カーディナリティの高い識別子には、API 呼び出しごとに変化する一意のリクエスト ID やセッション ID などがあります。

カーディナリティの高い識別子を使用すると、割り当ての適用効果が大幅に低下する可能性があります。

影響

割り当てポリシーの ID 要素に高カーディナリティ ID を使用すると、次のようになります。

  • 割り当ての適用が有効でない: 一意の識別子はそれぞれ個別のカウンタとして扱われます。すべてのリクエストに新しい一意の ID がある場合、割り当てシステムは API 呼び出しごとに新しい「バケット」を作成します。つまり、全体的な割り当て上限は、制限するリクエストの実際のグループではなく、個々の単一使用カウンタに対して測定されるため、トラフィック制御にポリシーを使用できません。
  • リソース消費の増加: 大量の固有の割り当てカウンタを生成して管理すると、Apigee プラットフォームに不要な負荷がかかり、リソース使用量の増加やパフォーマンスの問題が発生する可能性があります。
  • モニタリングの課題: データが多数の一意の識別子に分散している場合、実際の API 使用量の傾向をモニタリングして把握することが困難になります。どのアプリケーション、デベロッパー、プロダクトが API リソースを使用しているかを確認できなくなります。

ベスト プラクティス

割り当ての適用に安定した意味のあるグループ化を表す、カーディナリティが低いまたは中程度の識別子を選択します。これらは、API の使用状況を効果的に管理し、トラフィックに関する分析情報を取得するのに役立ちます。次に例を示します。

  • developer.app.name
  • client_id
  • apiproduct.name

適切な識別子を使用すると、Quota ポリシーで API トラフィックをより効果的に管理し、意図しない超過を防ぎ、使用パターンに関する明確な分析情報を得ることができます。