カナリアリリース
新バージョンを少数のユーザーに先行公開し、問題がないことを確認してから全体に展開するデプロイ手法
デプロイDevOps
カナリアリリースとは
カナリアリリースは、新バージョンを少数のユーザー (1〜10%) に先行公開し、エラー率やレイテンシに問題がないことを確認してから全体に展開するデプロイ手法である。炭鉱のカナリアが由来。
カナリア vs Blue/Green
| 観点 | カナリア | Blue/Green |
|---|---|---|
| トラフィック | 段階的に移行 | 一括切り替え |
| リスク | 低い (少数に限定) | 中 (全体が切り替わる) |
| ロールバック | トラフィックを戻す | DNS/ALB を切り替え |
| 検証期間 | 数時間〜数日 | 即座 |
| タイプ | 説明 |
|---|---|
| Canary10Percent5Minutes | 10% に 5 分間公開、問題なければ 100% |
| Canary10Percent30Minutes | 10% に 30 分間公開 |
| Linear10PercentEvery1Minute | 1 分ごとに 10% ずつ増加 |
| AllAtOnce | 一括デプロイ (カナリアなし) |
アラームが発火すると、CodeDeploy が自動的に旧バージョンにロールバックする。
CloudFront でのカナリア
Distribution:
Properties:
DistributionConfig:
CacheBehaviors:
- PathPattern: /api/*
TargetOriginId: api
# Lambda@Edge で Cookie ベースのルーティング
カナリアの監視項目
| メトリクス | 閾値の例 |
|---|---|
| エラー率 | 旧バージョンの 2 倍以上で異常 |
| P99 レイテンシ | 旧バージョンの 1.5 倍以上で異常 |
| ビジネスメトリクス | コンバージョン率の低下 |
カナリアの進め方
1. 新バージョンをデプロイ (トラフィック 0%)
2. 1% に公開 → 5 分間監視
3. 10% に拡大 → 30 分間監視
4. 50% に拡大 → 1 時間監視
5. 100% に展開
→ 各段階でアラームが発火したら自動ロールバック
詳しくは関連書籍を参照。