【ばるくへっどぱたーん】
バルクヘッドパターン とは?
最終更新:
💡 リソースを区画に分け、障害の波及を抑える
アプリケーションのリソースやサービスを区画に分け、一部の過負荷や障害が他の区画へ波及するのを抑える設計パターン。接続プールやスレッドプール、実行環境などを分離する。船の隔壁に由来する。
📌 このページのポイント
- 呼び出し先や利用者などに応じてリソースを分ける
- 一部が使い尽くしても、別区画の余力を残す設計
- 分離の強さと費用・性能・管理の負担を考える
- サーキットブレーカーなど、別の障害対策と組み合わせる
バルクヘッドパターンって、船の話みたいだね?
システムでは、何を防ぐの?
例えば決済と検索が同じ接続プールを使うと、決済の遅延で接続が埋まり、検索も接続を使えなくなるおそれがあるよ。呼び出し先ごとにプールを分ければ、決済が検索用の接続まで使い尽くすのを防げるんだ。
具体的にはどう分けるの?
サーキットブレーカーとは違うの?
バルクヘッドはリソースを分離して、影響の広がりを抑えるもの。サーキットブレーカーは障害が続く呼び出しを一時的に止める仕組みだよ。役割が違うので、必要に応じて組み合わせられるんだ。
分けたら、他の機能は必ず動き続ける?
まとめ:ざっくりこれだけ覚えればOK!
「バルクヘッドパターン」って出てきたら「リソースを区画に分け、障害の波及を抑える」と思えばだいたいOK!
📖 おまけ:英語の意味
「Bulkhead Pattern」 = 隔壁パターン
💬 bulkheadは船の区画を仕切る隔壁だよ。一部の浸水が他へ広がるのを抑える発想を、アプリケーションの障害対策へ応用しているんだ。