バックエンド・API・データ · 上級
負荷:レート制限と自己保護
一行でいうと: 健全なシステムは早く明確に拒否し、支えられない負荷の下でゆっくり崩壊するのではない。
レート制限
消費者ごと、ルートごと、リソースで。適切なステータスコードといつリトライするかを言うヘッダーを返す。文書化されていない制限は説明なしに壊れる統合を生む。
乱用からの保護を容量管理から分離する。前者は鋭く、後者は柔軟だ。
コアを保護する
最大長のキュー、早期の負荷シェディング、遅いルートがすべての接続を排出しないリソース分離。重いレポートルートがログインルートを窒息させられるなら、アーキテクチャの問題であり容量の問題ではない。
後ではなく前にテストする
本番に似た環境で負荷テストを実行し、応答時間が爆発するポイントを見つける。そのポイントがあなたの容量であり、マーケティングキャンペーンがあなたのためにそれを発見する前に知る価値がある。
さらに深く
段階的な動作を定義する:まず副次的な機能をオフに、次にキャッシュのみから提供、そして最後に拒否。縮む方法を知るシステムは、機能するか倒れるかしか知らないシステムを倒す負荷を生き延びる。