カナリアデプロイとリニアデプロイ
AWS でのデプロイの自動化
Dunieski Otano
Amazon Web Services Solutions Architect
一つの不具合リリースが、全ユーザーに影響
決済ロジックの変更が、トラフィックの100%に即時デプロイされます
本番負荷下でバグが発生し、すべてのチェックアウトが失敗します
10%のカナリアデプロイなら、5分で検知できたはずです
カナリアデプロイを省略したコストは、実際の金銭的損失です
カナリアデプロイとは
まず新バージョンに
トラフィックの一部
を送信します
一定の待機時間
の間、メトリクスを監視します
問題がなければ、
残りを一括で
切り替えます
一般的なパターン:
10%を5分間
、その後100%
リニアデプロイとは
トラフィックを
均等な増分
で切り替えます
各ステップの間に待機します
例:
1分ごとに10%
ずつ、10分間
カナリアより滑らかですが、全体的に時間がかかります
カナリアとリニアの比較
カナリア:
一部分、その後全体
リニア:
多くの小さなステップ
カナリアは問題を早期に検知し、リニアは段階的に拡大します
どちらも
ロールバックが実行される
と一時停止します
Lambda用のCodeDeploy設定
CodeDeployDefault.LambdaCanary10Percent5Minutes
: 10%を5分間、その後100%
CodeDeployDefault.LambdaLinear10PercentEvery1Minute
: 1分ごとに+10%
CodeDeployDefault.LambdaAllAtOnce
: 即時に全トラフィック
ECSには、ECSプレフィックスの対応する設定があります
CloudWatchアラームによる自動ロールバック
デプロイグループに
CloudWatchアラーム
を関連付けます
一般的なアラーム:
エラー、処理時間、5xx
アラームが
ALARM
状態になると、デプロイが停止します
CodeDeployは以前のバージョンに
ロールバック
します
適切な設定の選択
低リスクの定型パッチ →
AllAtOnce
高リスクな本番変更 →
Canary
滑らかで段階的な展開が必要な場合 →
Linear
自動ロールバックのため、常に
アラーム
と組み合わせます
練習しましょう!
AWS でのデプロイの自動化
Preparing Video For Download...