Dataverse サービス保護のAPI制限について
市民開発者の方へ
今回の内容は主にプロ開発者向けの内容です。市民開発者レベルの利用用途ではまず発生しないと思われますので、ご安心ください。もしそれっぽいことが発生したら、お近くのプロ開発者に相談してみましょう。
権利の制限とサービス保護のAPI制限について
よく Power Platform の利用可能な制限について話題に上がるのは、24時間で要求可能な Power Platform 要求の数についてかとおもいます。こちらは、ライセンスごとに付与された権利の制限になります。
API 制限の概要 (Microsoft Dataverse) - Power Apps | Microsoft Learn
今回話題に挙げているのは権利の制限とは異なるもので、ライセンスを買えば解決!というような類のものではありません。
サービス保護のAPI制限と呼ばれるもので、文字通り一部のユーザーによる異常なリクエストを制御し、全体の利用を妨げないようにするための制限となっています。
API 制限の概要 (Microsoft Dataverse) - Power Apps | Microsoft Learn
制限があることによって不便に感じるかもしれませんが、この制限がないと、例えば1人のユーザーによる異常なリクエストによって、テナントの Dataverse の負荷が過剰に上がってしまい、最終的にテナント全体が停止する、なんてことになってしまうかもしれません。
この制限があることによって、多くのユーザーが快適にサービスを利用できるようにしているわけです。ありがたや。
サービス保護のAPI制限ってどんな制限があるの?
サービス保護のAPI制限には、以下の3つがあります。
・5分間の中で要求しすぎると制限される。
・5分間の中で時間のかかる処理を要求しすぎると制限される。
・同時実行の要求をしすぎると制限される。
どの程度要求すると制限されるか数値を出したいところですが、この辺りは環境により異なるようです。ただ、普通にしていればそうそう制限にかかることはないと思われます。のちに記載するページに参考値が記載されていますが、許容値の変動要素としては
・環境に割り当てられたサーバーの数により許容値が変動する
・サーバーの数は購入したライセンス数や、その他の要因で変動する
・試用版環境は1つのサーバーが割り当てられている
・制限の内容は変更される可能性がある
などが記載されています。
注意点としては、検証で利用することの多いであろう試用版環境はWebサーバーの割り当ては1つ固定であることです。実際の運用時と制限内容が異なる可能性があるので、留意しておきましょう。
参考値として、サーバー1台当たりの制限を記載します。
制限項目 |
サーバ1台当たりの許容値 |
要求数の制限 |
6000回 / 5分 |
実行時間の制限 |
合計20分かかる処理 / 5分 |
同時実行数の制限 |
52の処理まで |
※環境のサーバーの数やその他の要因により、制限は変動します。最新の情報は下記のページを参照してください。
サービス保護 API の制限 (Microsoft Dataverse) - Power Apps | Microsoft Learn
制限されるとどうなる?
しばらくの間、新しい要求ができなくなります。制限解除までの時間は429エラーメッセージに含まれていますが、どの程度制限を超過したかにより異なるようです。一般的な対策ではありますが、その時間分待機を挟んで再度要求を投げるように実装しましょう。
また、制限を超過したときに影響を受けるのは、超過したユーザーのみです。他のユーザーには影響しないので、やらかしてしまった場合でもテナント全体への影響は少なそうです。
API要求数の制限への対策
バッチを使って一度に複数の処理を要求する
バッチを使うと、最大で1000の操作を1度に要求できます。これにより、API要求数を減らすことが可能です。
※ちなみに、残念ながら権利の制限はバッチで回避できません。
毎月から毎日、毎時、リアルタイム実行へ
ため込んで処理を行うと、1度に多くの処理をしなくてはなりません。なるべくリアルタイムで処理できるのであればリアルタイムで処理するようにしましょう。
UIを持つアプリで発生する場合には、アプリの作りを改善する
リストの表示数を減らしたり、データをキャッシュするなど要求数をなるべく減らすように作り替えることで、回避できるはずです。
実行時間の制限への対策
重いバッチ処理を同時実行しない
そもそも重い処理ということがわかっている場合には、制限を考慮して構築しましょう。
プラグインやリアルタイムワークフローを軽量化したり、データ移行のため一時的に無効化する
1つ1つの処理を軽くすることで、処理時間の低減を図りましょう。
同時実行数の制限への対策
52を超えて同時実行しないようにする
軽い処理であっても、同時実行数を増やしすぎないようにしましょう。10程度から始めて、ほかの要素を加味しながら制限を超えない値を探っていく方法が推奨されています。
まとめ
以上、サービス保護のためのAPI制限についてでした。あまりこの制限に引っかかることはないかもしれませんが、存在だけでも知っておくと何かあった時に気が付きやすいかと思います。
プロ開発者の方は、処理の重いバッチやデータ処理が無造作に実行されないよう気を付けましょう。
今回は実際にエラーを出すとこまで書けなかったので、そのうち実験してみたものを記事にしようと思います。
参考リンク
サービス保護 API の制限 (Microsoft Dataverse) - Power Apps | Microsoft Learn
API 制限の概要 (Microsoft Dataverse) - Power Apps | Microsoft Learn
Web APIを使用したバッチ処理の実行 (Microsoft Dataverse) - Power Apps | Microsoft Learn
この記事は Microsoft Power Automateのカレンダー | Advent Calendar 2022 - Qiita に参加しています。