デプロイ戦略:バージョン、エイリアス、トラフィックシフティング

AWS Lambda によるサーバーレスアプリケーション

Claudio Canales

Senior DevOps Engineer

デプロイ戦略が重要な理由

  • バグを素早く検出する。
  • 影響範囲を限定する。
  • 迅速に復旧する。

リスクの高いデプロイと安全なデプロイ

AWS Lambda によるサーバーレスアプリケーション

$LATEST と公開バージョンの比較

$LATEST

  • コードを更新するたびに移動します。

バージョン

  • 変更不可能なスナップショットです。
  • ロールバックやトラフィック分割に固定しやすいです。

最新バージョン対公開バージョン

AWS Lambda によるサーバーレスアプリケーション

バージョンは変更不可能なスナップショット

  • バージョンをリリース成果物として扱います。
  • コードと設定の両方を記録します。
  • 公開後は変更されません。
  • いつでも正常な状態に戻れます。

変更不可能なバージョンスナップショット

AWS Lambda によるサーバーレスアプリケーション

エイリアスは安定したポインター

  • 安定したポインターです。
  • バージョンの代わりにエイリアスを呼び出します。
  • 呼び出し元を変えずに向き先を更新できます。

エイリアスがバージョンを指す

AWS Lambda によるサーバーレスアプリケーション

dev と prod のエイリアス

  • 環境の管理に適しています。
  • dev は頻繁に移動します。
  • エイリアスを移動して prod へ昇格します。

dev と prod のエイリアスマッピング

AWS Lambda によるサーバーレスアプリケーション

重み付きエイリアスによるトラフィックシフティング

  • 本番環境でも安全にテストできます。
  • トラフィックの大部分は現行バージョンに流れます。
  • 一部のトラフィックが候補バージョンに流れます。

重み付きエイリアスルーティングの概念

AWS Lambda によるサーバーレスアプリケーション

カナリアステップ 1:90/10

  • 90% は現行バージョンに流れます。
  • 10% は実際の負荷で候補バージョンをテストします。
  • エラーとレイテンシーを監視します。

カナリア 90/10 分割

AWS Lambda によるサーバーレスアプリケーション

カナリアステップ 2:50/50

  • 10% のスライスが問題なければ、重みを増やします。
  • 現行 50%、候補 50%。
  • 50/50 では問題がすぐに現れます。
  • モニタリングが重要です。

カナリア 50/50 分割

AWS Lambda によるサーバーレスアプリケーション

カナリアステップ 3:100% 新バージョン

  • すべてのトラフィックを新バージョンに流します。
  • 旧バージョンはそのまま残ります。
  • ロールバックは簡単です。

カナリア 100% 新バージョン

AWS Lambda によるサーバーレスアプリケーション

ブルー/グリーンのメンタルモデル

  • Blue = 現行の安定バージョン。
  • Green = 新しい候補バージョン。
  • エイリアスを移動して切り替えます。
  • 重み付きルーティングで段階的に切り替えます。

ブルーグリーン切り替え

AWS Lambda によるサーバーレスアプリケーション

ロールバック = エイリアスを元に戻す

  • 再デプロイは不要です。
  • エイリアスを最後に正常だったバージョンへ移動します。
  • 数時間ではなく、数秒で復旧できます。
  • 変更不可能なバージョンと安定したエイリアスが連携します。

エイリアス移動によるロールバック

AWS Lambda によるサーバーレスアプリケーション

シフト中の監視

  • エラーとタイムアウト。
  • 実行時間とテールレイテンシー。
  • 上限を設定している場合はスロットル。
  • 問題があれば素早く一時停止またはロールバック。

デプロイ監視メトリクス

AWS Lambda によるサーバーレスアプリケーション

よくある落とし穴:$LATEST を本番として扱う

  • $LATEST に頼ると予測可能性が失われます。
  • バージョンとエイリアスで実行中の状態が明確になります。
  • ロールバックが安全に行えます。

最新バージョンのドリフト警告

AWS Lambda によるサーバーレスアプリケーション

Ignore

AWS Lambda によるサーバーレスアプリケーション

安全なデプロイチェックリスト

  • バージョンを公開する。
  • エイリアスでトラフィックを段階的にシフトする。
  • 結果を監視する。
  • 各ステップでロールバックできる状態を維持する。

安全なデプロイチェックリスト図

AWS Lambda によるサーバーレスアプリケーション

重要なポイント

  • バージョンで予測可能性が得られます。
  • エイリアスで安定性が得られます。
  • 重み付きルーティングで安全性が高まります。
  • ロールバック = エイリアスを移動する。

デプロイの重要なポイント

AWS Lambda によるサーバーレスアプリケーション

練習しましょう!

AWS Lambda によるサーバーレスアプリケーション

Preparing Video For Download...