circuit-breaker-pattern について
外部システムに依存するサービス向けに、サーキットブレーカーの実装方法をまとめたスキルです。障害処理、フォールバック、監視と言語別の例を扱います。
主な機能
- 01サーキット状態としきい値
- 02フォールバックとタイムアウトの指針
- 03状態変化の監視
- 04TypeScript、Python、Java のガイド
活用シーン
- 01外部 API 呼び出しの保護
- 02マイクロサービスやデータベース障害への対応
- 03障害の連鎖の抑制
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ aj-geddes/ useful-ai-prompts --skill circuit-breaker-patternインストール後、Claude Code で/circuit-breaker-patternを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/circuit-breaker-with-monitoring.mdopossum-style-circuit-breaker-nodejs.mdpython-circuit-breaker.mdresilience4j-style-java.mdtypescript-circuit-breaker.mdscripts/validate-api.shtemplates/api-scaffold.yaml詳細
サーキットブレーカーパターン
目次
概要
サーキットブレーカーパターンを実装して、依存先の障害時に連鎖的な障害を防ぎ、適切に機能を縮退させます。
使用する場面
- 外部 API 呼び出し
- マイクロサービス間の通信
- データベース接続
- サードパーティサービスとの統合
- 連鎖的な障害の防止
- フォールバック機構の実装
- レート制限による保護
- タイムアウト処理
クイックスタート
最小限の動作例:
enum CircuitState {
CLOSED = "CLOSED",
OPEN = "OPEN",
HALF_OPEN = "HALF_OPEN",
}
interface CircuitBreakerConfig {
failureThreshold: number;
successThreshold: number;
timeout: number;
resetTimeout: number;
}
interface CircuitBreakerStats {
failures: number;
successes: number;
consecutiveFailures: number;
consecutiveSuccesses: number;
lastFailureTime?: number;
}
class CircuitBreaker {
private state: CircuitState = CircuitState.CLOSED;
private stats: CircuitBreakerStats = {
failures: 0,
// ... (see reference guides for full implementation)
リファレンスガイド
詳細な実装は references/ ディレクトリにあります:
| ガイド | 内容 |
|---|---|
| TypeScript Circuit Breaker | TypeScript サーキットブレーカー |
| Circuit Breaker with Monitoring | モニタリング機能付きサーキットブレーカー |
| Opossum-Style Circuit Breaker (Node.js) | Opossum スタイルのサーキットブレーカー(Node.js) |
| Python Circuit Breaker | Python サーキットブレーカー |
| Resilience4j-Style (Java) | Resilience4j スタイル(Java) |
ベストプラクティス
✅ 推奨事項
- ユースケースに適したしきい値を設定する
- フォールバック機構を実装する
- サーキットブレーカーの状態を監視する
- 妥当なタイムアウトを設定する
- 指数バックオフを使用する
- 状態遷移を記録する
- 頻繁に作動した場合にアラートを出す
- サーキットブレーカーの動作をテストする
- 依存先ごとにブレーカーを使用する
- ヘルスチェックを実装する
❌ 禁止事項
- すべての依存先で同じブレーカーを使用する
- 非現実的なしきい値を設定する
- フォールバックの実装を省略する
- オープン状態のサーキットブレーカーを無視する
- リセットタイムアウトを過度に短く設定する
- 監視を忘れる
コメント
Markdown 対応