カナリアリリース

新バージョンを少数のユーザーに先行公開し、問題がないことを確認してから全体に展開するデプロイ手法

デプロイ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% に展開
→ 各段階でアラームが発火したら自動ロールバック

詳しくは関連書籍を参照。

関連用語