カナリアデプロイとリニアデプロイ

AWS でのデプロイの自動化

Dunieski Otano

Amazon Web Services Solutions Architect

一つの不具合リリースが、全ユーザーに影響

分割

  • 決済ロジックの変更が、トラフィックの100%に即時デプロイされます
  • 本番負荷下でバグが発生し、すべてのチェックアウトが失敗します
  • 10%のカナリアデプロイなら、5分で検知できたはずです
  • カナリアデプロイを省略したコストは、実際の金銭的損失です
AWS でのデプロイの自動化

カナリアデプロイとは

カナリア

  • まず新バージョンに トラフィックの一部 を送信します
  • 一定の待機時間 の間、メトリクスを監視します
  • 問題がなければ、残りを一括で 切り替えます
  • 一般的なパターン: 10%を5分間、その後100%
AWS でのデプロイの自動化

リニアデプロイとは

リニア

  • トラフィックを 均等な増分 で切り替えます
  • 各ステップの間に待機します
  • 例: 1分ごとに10% ずつ、10分間
  • カナリアより滑らかですが、全体的に時間がかかります
AWS でのデプロイの自動化

カナリアとリニアの比較

  • カナリア: 一部分、その後全体
  • リニア: 多くの小さなステップ
  • カナリアは問題を早期に検知し、リニアは段階的に拡大します
  • どちらも ロールバックが実行される と一時停止します

トラフィック

AWS でのデプロイの自動化

Lambda用のCodeDeploy設定

  • CodeDeployDefault.LambdaCanary10Percent5Minutes: 10%を5分間、その後100%
  • CodeDeployDefault.LambdaLinear10PercentEvery1Minute: 1分ごとに+10%
  • CodeDeployDefault.LambdaAllAtOnce: 即時に全トラフィック
  • ECSには、ECSプレフィックスの対応する設定があります

ラベル

AWS でのデプロイの自動化

CloudWatchアラームによる自動ロールバック

  • デプロイグループに CloudWatchアラーム を関連付けます
  • 一般的なアラーム: エラー、処理時間、5xx
  • アラームが ALARM 状態になると、デプロイが停止します
  • CodeDeployは以前のバージョンに ロールバック します

ラベル

AWS でのデプロイの自動化

適切な設定の選択

選択

  • 低リスクの定型パッチ → AllAtOnce
  • 高リスクな本番変更 → Canary
  • 滑らかで段階的な展開が必要な場合 → Linear
  • 自動ロールバックのため、常に アラーム と組み合わせます
AWS でのデプロイの自動化

練習しましょう!

AWS でのデプロイの自動化

Preparing Video For Download...