← 概念辨析に戻る

Concept Contrast Fable

サーキットブレーカーとフォールバック:一つはブレーカーを落として電源を切り、一つは明かりを消して窓を開ける

先に結論:システムが落ちたとき、二つの言葉がよく同時に事故報告へ放り込まれる。サーキットブレーカーは、下流サービスが連続して失敗した後に能動的に呼び出しを遮断し、すでに焼けたインターフェースへリクエストを送り続けるのを止める。デグレードは、全体の機能が影響を受けたときに能動的に一部の非中核能力を閉じ、限られたリソースを幹となる業務に残す。一方は外部依存の健全性を見て、一方は自身の機能の取捨を見る——逆にすると間違ったブレーカーを落とす。

システムが落ちたとき、二つの言葉がよく同時に事故報告へ放り込まれる。サーキットブレーカーは、下流サービスが連続して失敗した後に能動的に呼び出しを遮断し、すでに焼けたインターフェースへリクエストを送り続けるのを止める。デグレードは、全体の機能が影響を受けたときに能動的に一部の非中核能力を閉じ、限られたリソースを幹となる業務に残す。一方は外部依存の健全性を見て、一方は自身の機能の取捨を見る——逆にすると間違ったブレーカーを落とす。

寓話

同じビル、二つの異なる対応マニュアル

市中心部の複合商業施設で、運営チームには二つの緊急対応マニュアルがある。最初のマニュアルは対外通路を扱う。地下鉄駅へ通じる連絡通路で煙感知器が作動したら、直ちに連絡通路のシャッターを閉め、同時にその方向へ客流を誘導するのを止める。シャッターを下ろす基準は明確だ。煙センサーが三回連続で作動した場合、または一度の人的確認による火災警報。閉めた後は再試行せず、消防検査が完了するまで再び開けない。

第二の手引きは内部サービスを管理する。もし電力容量が突然40パーセント低下したら、すべての区域が停電するわけではない。まず景観照明、広告スクリーン、予備エレベーターを切り、レジシステム、冷蔵設備、避難通路の照明を優先的に確保する。どの機能を先に放棄し、どれを必ず守るかを、あらかじめ優先順位付けしておく。

ある時、空調システムの故障でフロアの温度が急上昇した。運用チームは同時に二つのアクションを起こした。フロアの消防監視データが異常になり始めたが、煙感知器のしきい値には達しておらず、ゲートは閉まらなかった。一方、空調コンプレッサーの過負荷が全体の電力供給の安定性に影響したため、運用チームは広告スクリーンの半分とすべての景観噴水を止め、負荷を下げた。二つのことは同じ日に起きたが、実行されたのは別々のマニュアルだった。

事後の振り返りで、新しく来た主管が疑問を投げかけました。空調故障の時、温度異常をすでに把握していたなら、なぜ関連フロアの入口ゲートも直接閉めなかったのか?老主管は説明しました。ゲートを閉めるかどうかは、通路のあちら側のセンサーを見るのであって、ビル側の温度計ではありません。地下鉄駅のあちらがすべて正常なら、ゲートを閉めると乗客が地上の交差点に押し寄せ、新たな渋滞を生むだけです。サーキットブレーカーが守るのは「あの依存先にまだ呼び出し続ける価値があるか」であり、「こちらが不快になったらまず切る」ではありません。

別の方向にも誤解があった。ある時、広告スクリーンのシステム自体が落ち、誰かがデグレードの起動を提案した——周辺システムを切ってリソースを節約するというものだ。しかし広告スクリーン自体が非中核機能であり、それが落ちてもレジやコールドチェーンには影響しないため、デグレードは不要だった。デグレードの判断根拠は中核リソースの供給能力であり、どのシステムに問題が起きても他のシステムを切るというわけではない。

後に彼らは壁にフロー図を描いた。外部依存に問題発生→サーキットブレーカーが判断→呼び出しを遮断し、連鎖雪崩を防ぐ。内部リソースが逼迫→デグラデーション戦略が判断→非中核機能を停止し、中核業務のスループットを守る。二つの線はそれぞれにトリガー条件と評価指標を持つが、同じ事故報告書に落とすときは、どちらが発動したかを明記しなければならない。

楼管長は四半期研修で率直にまとめた。サーキットブレーカーは外に対して一つの扉を閉めることで、向こうの火が燃え移るのを恐れている。デグレードは内に対して負荷を一批減らすことで、自分の電気が足りなくなるのを恐れている。どちらの動作も「保護」と呼べるが、保護しているのはまったく別のものである。

サーキットブレーカー

下流サービスの連続失敗が閾値に達したことを検知した後、そのサービスへの呼び出しを能動的に遮断し、失敗リクエストが資源を消費し続けるのを防ぐ。通常、クローズ、オープン、ハーフオープンの三つの状態がある。

降級

システムリソースが不足したり一部機能が異常なとき、非中核機能を自発的に停止または簡素化し、中核業務チェーンを利用可能に保つ。これは自らの能力に向けたリソース調度戦略である。

物語の対応

  • 煙がゲート閉鎖をトリガー:サーキットブレーカー、外部依存のヘルスシグナルに基づいて呼び出しを遮断
  • 電力不足時は広告スクリーンを消してレジを守る:内部リソース容量に基づく機能の取捨選択による降級
  • 空調故障により二つの判断が同時にトリガー:同じイベントがサーキットブレーカーとデグラデーションという二つの異なる意思決定チェーンをトリガーした可能性
  • 広告スクリーンが落ちても降級を起動する必要はない:降級は資源配分の意思決定であり、障害対応ではない
  • 対外的な閉鎖 vs 対内的な負担軽減:両者の保護の方向性は異なり、互いに代替できない

Agent システム設計に落とし込む

アーキテクチャレビューでは、サーキットブレーカーとデグレードを分けて図示する。サーキットブレーカーに設定するのは、下流APIのエラー率しきい値、半開プローブ戦略、復旧条件であり、監視指標は呼び出し失敗率だ。デグレードに設定するのは、機能優先度リスト、トリガーとなるリソース水位線、復旧ステップであり、監視指標はCPU、メモリ、リクエストキューの長さだ。混ぜて設定すると、通常はサーキットブレーカーのしきい値が正しく設定されず、デグレードで間違った機能が削られる。

京ICP备2026014272号