APIの制限を防ぐ方法


忙しい夜にお好みのレストランを取る想像してください.ちょうど注文された食物を拾うために、ドアから線がちょうどあります.あなたが右のレジスタに歩くことができれば、それが準備ができている場合は、あなたの食べ物を得るだろう.注文を届けるには自然の遅れがある.そして、キッチンの設備とスタッフによって設定された期間中に調理することができる料理の最大量があります.APIの用語では、このレストランの制限速度があります.彼らは両方のパーティー、両方のレストランやAPIの用語に適しています.
しかし、開発者が消費するAPIの場合、レート制限は扱いにくい.すぐに結果の成功やエラーは、彼らの開発実践に大いにフィットします.レート制限、またはクォータ制限に達すると、サーバーからの応答に基づいてAPI呼び出しを停止する必要があります.このポストでは、APIの制限の目的、さらに開発者の問題をどのように引き起こし、どのようにして失敗するのかを説明します.

クォータとレート制限:定義と目的
APIのクォータと料金制限が開発者のためのそのような痛みであるならば、なぜ、彼らは存在しますか?答えはプロバイダのためです.しかし、レストランと顧客のように、最終的な利益は相互にあります.食物の品質があまりに多くの命令で減少するように、APIの信頼性はその要求を制限する速度に依存しています.
クォータ制限と制限速度はしばしば互換性がありますが、それらはまた少し異なる意味を意味します.
  • クォータ制限は、通常より長い期間にわたって割り当てられた電話番号を参照し、アカウントレベルによって決定される可能性があります.
  • レート制限は、通常、2番目、分、または時間などの短い期間をカバーし、すべてのAPIコンシューマーが成功した要求を持つことができることを保証します.
  • これらがプロバイダーにとって重要である理由は理解できます.あまりにも多くのユーザーが同時にAPIにアクセスしようとすると、それはあまりにも多くの歪みをサーバーに置くことができます.これはサービスを遅くしたり、完全にクラッシュさせる恐れがあります.
    統合が与えられたレート制限より頻繁にAPIを呼ぶしようとするならば、要求は短いメッセージとともに403または429のエラーコードを超えました.
    HTTP/1.1 429 Too Many Requests
    Content-Type: application/json
    Retry-After: 60
    
    この場合、レスポンスは60秒で再び電話を試みることができることを示唆します.かなりの人間が理解するのは簡単ですが、そのような遅延を扱うことができるシステムの建築家とは少し異なります.多くの開発者のために、quotaとrate limitは一時的に壊れた統合に変わります.

    APIがブレークスタックを制限する理由
    近代的なソフトウェアは、完全な制御を持っていないツールのスタックが含まれています.たとえば、クラウドには、見て触れることができる物理的なサーバーではなく、おそらく展開します.あなたはスケールと冗長性の利点のためにそのコントロールを交換します.同様に、開発者はサードパーティ製のAPIでは、それ以外の利用可能な機能を達成するために構築します.あなたも、あなたの顧客が使用する外部ツールに接続することができます.クラウドに頼るように、あらゆる面をコントロールしないとしても、APIは利点をもたらします.
    制御の欠如は、エラー、ダウンタイム、および予期しない応答がいつでも来ることができることを意味します.あなたのソフトウェアは弾力性で構築する必要がありますが、悲しいことに多くのintegrations fail silently.結果はあなたの顧客があなたのアプリが壊れて知っているが、あなたは問題に可視性を持っています.
    APIの制限は、この予期しないエラーの別の型です.前に述べたように、それが不必要であるので、それはエラーのより難しいタイプでもあります.同じAPI呼び出しは、後で繰り返されます.代わりに、多くの開発者は、レート制限を偶発的エラーと同じように扱います.彼らは、同じ結果を持っている再試行を維持することがありますので、あなたはまだあなたのレート制限を超えているでしょう.あるいは、完全に試みるのを止めて、エンドユーザーに一般的なエラーを表示します.
    API制限が開発中に考慮されない理由の1つは、彼らが見えないです.多くのAPIは、ドキュメント内のレートの制限を制限しますが、はるかに彼らに言及しないでください.開発者が制限について知っているかどうかに関係なく、彼らはまだそれらを説明しないかもしれません.開発中に、制限された制限を達成することはありません.これは開発者が見ていないかもしれないエラーです.
    スタックはしばしば複数のサードパーティのAPIを含みます.あなたが外部サービスが壊れる多くの方法に制限を加えるとき、あなたはそれがあなたの全部のスタックを降ろすことができるとわかります.

    API限界失敗を防ぐ方法
    最初のステップはAPI制限が問題であることを認めることです.あなたがそれらを探していないならば、あなたは彼らを扱うために回復力をつくることができません.良いニュースは、クォータとレート制限のエラーを他の種類のために使用することができますとする努力です.あなたの統合を構築するように、成功の例、永続的な失敗、一時的な失敗を含めるようにします.それは成功した呼び出しになることができる不静的エラーです.
    API呼び出しが始まるところで、あなたがそれを扱う1つの方法を決定します.たとえば、tracking HTTP requests in the browserの場合、再試行する前にエンドユーザーにメッセージを提供する必要があります.サーバー側では、ユーザーの経験を中断せずに再試行を処理することができます.
    APIコールリトライアーキテクチャで解決できるエラーの中で
    24579172リトライレスポンスによるレート制限
    毎日の割当てに基づく
  • クォータ制限
    リフレッシュトークン
  • を必要とする
  • 認証エラー
  • の500レベルのステータスコード
  • これを実装するには、API呼び出しを行うすべてのコードで更新を必要とします.
    また、Hossのようなツールを使用して、ハードパーツを処理できます.HoSSを使用すると、信頼性の機能を適用することによって顧客に影響を与えるAPIの制限の問題を防止することができますオートリトライやフェイルオーバーなどの統一、すべての統合の全体.あなたのコードに最小限の更新を使用して、アプリケーションの信頼性と信頼性を高めることができます.
    エラーが起こるのを知るだけでは十分ではありません.synthetic testing and monitoring is not enoughのようなアプローチあなたがエラーに可視性を持っているが、また、サードパーティの統合の弾力性を高める.Try Hoss for freeとAPIの制限からスタックを保存する方法を参照してください.