deployment-strategies
本番環境へのデプロイメント戦略に関するスキルです。ブルーグリーンデプロイメント、カナリアデプロイメント、ローリングアップデート、リクリエイトなどの手法に対応します。ダウンタイムなしでのデプロイメント、ロールバック手順、データベースマイグレーションの調整、デプロイメント自動化を実現できます。 【このスキルを使用する場合】ユーザーが「ブルーグリーン」「カナリアデプロイメント」「ローリングアップデート」「ゼロダウンタイム」「デプロイメント戦略」「ロールバック」「デプロイパイプライン」などに言及した場合。 【このスキルを使用しない場合】CI/CDパイプラインの構文(GitHub Actionsを使用)、コンテナオーケストレーション(Kubernetesを使用)、Infrastructure as Code(Terraformを使用)。
description の原文を見る
Production deployment strategies. Blue-green, canary, rolling update, recreate. Zero-downtime deployments, rollback procedures, database migration coordination, and deployment automation. USE WHEN: user mentions "blue-green", "canary deployment", "rolling update", "zero-downtime", "deployment strategy", "rollback", "deploy pipeline" DO NOT USE FOR: CI/CD pipeline syntax - use `github-actions`; container orchestration - use `kubernetes`; IaC - use `terraform`
SKILL.md 本文
デプロイメント戦略
戦略の比較
| 戦略 | ダウンタイム | リスク | ロールバック速度 | リソースコスト |
|---|---|---|---|---|
| リクリエート | あり | 高 | 遅い(再デプロイ) | 低 |
| ローリングアップデート | なし | 中 | 中程度 | 低 |
| ブルーグリーン | なし | 低 | 即座(切り替え) | 2倍のリソース |
| カナリア | なし | 非常に低 | 高速(ルート変更) | +10-20% |
ブルーグリーンデプロイメント
┌─── Blue (v1) ← 現在のトラフィック
Load Balancer ──────┤
└─── Green (v2) ← ここにデプロイ、テスト、切り替え
AWS (ALB Target Groups)
// ブルーからグリーンへトラフィックを切り替え
await elbv2.modifyListener({
ListenerArn: listenerArn,
DefaultActions: [{
Type: 'forward',
TargetGroupArn: greenTargetGroupArn, // グリーンをポイント
}],
});
// ロールバック: ブルーに戻す
await elbv2.modifyListener({
ListenerArn: listenerArn,
DefaultActions: [{
Type: 'forward',
TargetGroupArn: blueTargetGroupArn,
}],
});
カナリアデプロイメント
# Kubernetes: Argo Rollouts
apiVersion: argoproj.io/v1alpha1
kind: Rollout
spec:
strategy:
canary:
steps:
- setWeight: 5 # カナリアへ5%のトラフィック
- pause: { duration: 5m }
- setWeight: 20
- pause: { duration: 10m }
- setWeight: 50
- pause: { duration: 10m }
- setWeight: 100 # 完全なロールアウト
analysis:
templates:
- templateName: error-rate
startingStep: 1 # ステップ1からチェック開始
ローリングアップデート (Kubernetes)
apiVersion: apps/v1
kind: Deployment
spec:
replicas: 4
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1 # 最大1つのポッドがダウン
maxSurge: 1 # 最大1つの余分なポッド
データベースマイグレーション調整
1. v2コード(v1スキーマとの後方互換性あり)をデプロイ
2. フォワードマイグレーション実行(追加のみ:新しいカラム、テーブル)
3. v2が正常に動作することを確認
4. 次のリリースで消去マイグレーション実行(古いカラムを削除)
拡張・契約パターン
-- リリース1: 拡張(新しいカラムを追加)
ALTER TABLE users ADD COLUMN full_name TEXT;
UPDATE users SET full_name = first_name || ' ' || last_name;
-- リリース2: コードがfull_nameを使用し、first_name/last_nameへの書き込みを停止
-- リリース3: 契約(古いカラムを削除)
ALTER TABLE users DROP COLUMN first_name, DROP COLUMN last_name;
ロールバックチェックリスト
# 1. 問題を検出(自動または手動)
# 2. トラフィックを前のバージョンに戻す
kubectl rollout undo deployment/my-app
# 3. ロールバックが成功したことを確認
kubectl rollout status deployment/my-app
# 4. DBマイグレーションが実行された場合、バックワードマイグレーション実行
# (マイグレーションが後方互換性があった場合のみ)
アンチパターン
| アンチパターン | 修正方法 |
|---|---|
| デプロイとマイグレーション同時実行 | デプロイとマイグレーションを分離 |
| 破壊的なDBマイグレーション | 拡張・契約パターンを使用 |
| レディネスチェックなし | レディネスプローブを設定 |
| 自動ロールバックトリガーなし | エラー率の閾値を設定 |
| 手動デプロイ | CI/CDパイプライン経由で自動化 |
本番環境チェックリスト
- ゼロダウンタイム戦略を選択(ローリング/ブルーグリーン/カナリア)
- ヘルスチェック設定(ライブネス+レディネス)
- ロールバック手順がドキュメント化され、テスト済み
- データベースマイグレーションが後方互換性あり
- エラー率スパイク時の自動ロールバック
- チームへのデプロイメント通知
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- claude-dev-suite
- ライセンス
- MIT
- 最終更新
- 2026/5/10
Source: https://github.com/claude-dev-suite/claude-dev-suite / ライセンス: MIT