# Retry Strategies

> 外部APIや分散システムの一時的障害に対して、リトライ・タイムアウト・サーキットブレーカーを組み合わせた回復戦略を設計し、実装まで導くスキル。 失敗特性の分類、指数バックオフとジッター、隔離（Bulkhead）などの適用判断を整理し、過剰リトライや雪崩障害を避ける。 Anchors: • Designing Data-Intensive Applications / 適用: 分散システムの障害特性と復旧設計 / 目的: 失敗モードに合わせた戦略選定 • Release It! (Michael T. Nygard) / 適用: Circuit Breaker・Bulkhead・Timeout / 目的: 耐障害パターンの適切な適用 • AWS Architecture Blog - Exponential Backoff and Jitter / 適用: リトライ待機とジッター / 目的: 負荷集中の回避 Trigger: Use when designing retry policies, tuning timeouts, introducing circuit breakers or bulkheads, or validating resilience for external API calls. retry, backoff, jitter, circuit breaker, bulkhead, timeout, transient failure, resilience

- Skill: `majiayu000/retry-strategies` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds add majiayu000/retry-strategies`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/retry-strategies/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: DevOps & Infra
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/majiayu000/retry-strategies

---


# Retry Strategies

## 概要

外部APIや分散システムの一時的障害に対して、再試行の方針と耐障害パターンを設計し、実装・検証・運用設計までの判断材料を整理するスキルです。

## ワークフロー

### Phase 1: 障害特性アセスメント

**目的**: 依存関係と失敗モードを整理し、リトライ対象と制約を明確化する

**アクション**:

1. 依存先、SLA、過去障害の情報を収集
2. エラーを恒久/一時/部分失敗に分類
3. 再試行可能性（べき等性、予算、上限）を整理
4. 監視指標と制約条件を定義

**Task**: `agents/assess-failure-profile.md` を参照

### Phase 2: リトライ/耐障害ポリシー設計

**目的**: 失敗特性に適合するリトライと保護パターンを設計する

**アクション**:

1. バックオフ曲線とジッター方式を選定
2. Circuit Breaker/Bulkhead/Timeoutの組み合わせを決定
3. しきい値、リトライ予算、上限値を設計
4. 設定パラメータと適用範囲を文書化

**Task**: `agents/design-retry-policy.md` を参照

### Phase 3: 実装検証と運用設計

**目的**: 実装の妥当性を検証し、運用監視の設計を固める

**アクション**:

1. `scripts/analyze-retry-config.mjs` で設定を分析
2. テストシナリオと失敗注入条件を整理
3. 監視指標、アラート、ロールバック手順を定義

**Task**: `agents/validate-rollout.md` を参照

## Task仕様ナビ

| Task                   | 起動タイミング | 入力                         | 出力                               |
| ---------------------- | -------------- | ---------------------------- | ---------------------------------- |
| assess-failure-profile | Phase 1開始時  | 依存関係と障害情報           | 障害特性プロファイル               |
| design-retry-policy    | Phase 2開始時  | 障害特性プロファイル         | リトライ/耐障害ポリシー設計書       |
| validate-rollout       | Phase 3開始時  | 実装コードと設定             | 検証レポート・運用設計ドラフト     |

**詳細仕様**: 各Taskの詳細は `agents/` ディレクトリを参照

## ベストプラクティス

### すべきこと

| 推奨事項                           | 理由                                       |
| ---------------------------------- | ------------------------------------------ |
| 失敗モードを恒久/一時で分類する    | 不要な再試行を避け、成功率を上げる         |
| リトライ予算と上限を明示する       | 雪崩障害と過剰負荷を防ぐ                   |
| 指数バックオフにジッターを入れる   | 同時リトライによる負荷集中を避ける         |
| しきい値は計測値に基づいて設計する | 障害の検知精度と復旧速度を両立する         |
| タイムアウトをSLAに合わせて設計する | 失敗検知の遅延と待ち過ぎを防ぐ             |

### 避けるべきこと

| 禁止事項                             | 問題点                                   |
| ------------------------------------ | ---------------------------------------- |
| 無限リトライや過度な再試行            | 依存先の障害を拡大させる                 |
| 固定間隔リトライのみの設計            | サンダリングハードを誘発する             |
| エラー種別を区別しない一律リトライ    | 永続障害で無駄な負荷をかける             |
| タイムアウトを未設定のまま運用        | 障害検知が遅れ、回復判断ができない       |
| Circuit Breakerを導入せず外部依存を増やす | 障害の連鎖と復旧遅延を招く           |

## リソース参照

### references/（詳細知識）

| リソース                     | パス                                                                     | 読込条件                     |
| ---------------------------- | ------------------------------------------------------------------------ | ---------------------------- |
| 基礎知識                     | [references/Level1_basics.md](references/Level1_basics.md)               | Phase 1の整理時              |
| 実務判断の整理               | [references/Level2_intermediate.md](references/Level2_intermediate.md)   | Phase 2の設計時              |
| 応用パターン                 | [references/Level3_advanced.md](references/Level3_advanced.md)           | 複雑なケース検討時           |
| エッジケース                 | [references/Level4_expert.md](references/Level4_expert.md)               | 例外条件の調整時             |
| Exponential Backoff          | [references/exponential-backoff.md](references/exponential-backoff.md)   | バックオフ設計時             |
| Circuit Breaker              | [references/circuit-breaker.md](references/circuit-breaker.md)           | しきい値設計時               |
| Bulkhead Pattern             | [references/bulkhead-pattern.md](references/bulkhead-pattern.md)         | 隔離戦略検討時               |
| Timeout Strategies           | [references/timeout-strategies.md](references/timeout-strategies.md)     | タイムアウト設計時           |

### scripts/（決定論的処理）

| スクリプト                           | 機能                                     |
| ------------------------------------ | ---------------------------------------- |
| `scripts/analyze-retry-config.mjs`   | リトライ/CB/タイムアウト設定の静的分析   |
| `scripts/validate-skill.mjs`         | スキル構造と参照リンクの検証             |
| `scripts/log_usage.mjs`              | スキル使用ログの記録                     |

### assets/（テンプレート）

| アセット                               | 用途                                 |
| -------------------------------------- | ------------------------------------ |
| `assets/circuit-breaker-template.ts`   | Circuit Breaker実装の雛形            |
| `assets/retry-wrapper-template.ts`     | リトライラッパーの再利用テンプレート  |

## 変更履歴

| Version | Date       | Changes                                                           |
| ------- | ---------- | ----------------------------------------------------------------- |
| 2.0.0   | 2026-01-02 | 18-skills.md仕様に合わせて再設計、Task仕様書追加、構成を整理       |
| 1.1.0   | 2025-12-31 | 18-skills.md仕様に合わせてagents/とEVALSを追加                    |
| 1.0.0   | 2025-12-24 | 仕様整合と必要成果物の追加                                        |

