AI活用の教科書

サーキットブレーカー

Circuit Breakerさーきっとぶれーかー

ひとことで言うと

調子の悪い相手への呼び出しを一時的に止めて、障害が広がるのを防ぐ仕組みです。

📖 もうちょい詳しく

何が新しいの?

いまのシステムは、たくさんの小さなプログラムがお互いを呼び合って動くことが多くなりました。すると、どこか1つが遅くなったり止まったりするだけで、それを待つ側まで次々に巻き込まれてしまいます。サーキットブレーカーは、この「故障の連鎖」を止めるために生まれた考え方です。

どうやって動いてるの?

呼び出しが失敗した回数を数えておき、その割合がある基準を超えると、ブレーカーが「開いた」状態になります。開いている間は、相手を呼ばずにすぐエラーを返します。少し時間がたつとお試しで1回だけ呼んでみて、うまくいけば元の状態に戻し、まだ駄目なら再び止めます。この「閉じる・開く・お試し」の3つの状態を行き来します。

何ができるの?

反応のない相手をいつまでも待たずに済むので、待ち時間で自分まで重くなる事態を防げます。相手が直るまでそっと呼び出しを控え、回復したら自動でまたつなぎ直します。利用者には、固まったまま無反応になるかわりに「いま混み合っています」と早めに返せます。

🌱 身近なたとえ

家庭の分電盤にあるブレーカーで例えると分かりやすいです。電気を使いすぎると、ブレーカーが自動で落ちて、それ以上電気が流れないようにします。おかげで配線が焼けたり、家全体が危なくなったりするのを防げます。サーキットブレーカーも同じで、危ない呼び出しを途中で遮断して、被害が全体に広がる前に食い止めます。

✅ まず覚えるポイント

  • 調子の悪い相手への呼び出しを、一時的に止める仕組みです
  • 「閉じる(通常)・開く(遮断)・お試し」の3つの状態を行き来します
  • 失敗が一定の割合を超えると、自動で遮断に切り替わります
  • 待ち時間で自分まで巻き込まれる「障害の連鎖」を防ぎます
  • 相手が回復すると、自動でまた呼び出しを再開します

🧭 よくある勘違い

エラーをなくしてくれる仕組みなの?

そうではありません。サーキットブレーカーは故障を直すものではなく、故障した相手への呼び出しを賢く控えるものです。むしろ、開いている間は「いまは呼べません」とすぐにエラーを返します。狙いは、無駄な待ち時間をなくして全体を守ることにあります。

一度開いたら、ずっと止まったままなの?

止まりっぱなしにはなりません。一定時間がたつとお試しで呼び出してみて、相手が直っていれば自動的に元の通常状態へ戻ります。人が手で操作しなくても、回復を見はからって自然につなぎ直してくれることが多いです。

リトライ(再試行)があれば要らないの?

役割が違います。リトライは「もう一度だけやってみる」ですが、相手が落ちているときに繰り返すと負荷を増やしかねません。サーキットブレーカーは「しばらく呼ぶのをやめる」判断をする層で、リトライと組み合わせて使うのが一般的です。

🧩 関連して覚えると楽な言葉

  • マイクロサービス: 機能ごとに小さく分けたプログラムが呼び合う作り。故障が連鎖しやすい現場
  • フェイルオーバー: 片方が落ちたら、待機していた予備へ自動で切り替える仕組み
  • ヘルスチェック: 相手が元気に動いているかを定期的に確認すること
  • レートリミット: 単位時間あたりの呼び出し回数に上限を設け、出しすぎを抑えること

🏁 ひとことでまとめ

弱った相手を呼び続けて共倒れする前に、しばらく呼び出しを遮断し、回復したらまたつなぐ「安全装置」がサーキットブレーカーです。