はじめに
現在、ITスクールで学習しながらAWSのインフラ構築をコード化しています。
その中で、より実践的な運用を試すためにBlue/Greenデプロイに挑戦することにしました。
このデプロイ手法は、ダウンタイムを最小限に抑えつつ、新しいバージョンを安全にリリースできるのが特徴です。
本記事では、Blue/Greenデプロイの概要やメリット・デメリット、AWSにおける実装方法について整理していきます。
書こうと思ったきっかけ
詳細は省略しますが、今回は受講しているITスクールで、以下のようなAWSインフラ構成をコード化しています。
その中で時間的に余裕がありますので、追加機能としてBlue/Green デプロイを試したいと思い、現在それに向けてキャッチアップ中になります。
Blue/Green デプロイとは?
Blue/Green デプロイメント は、アプリケーションの新バージョンを安全にリリースするためのデプロイ手法 です。
引用画像:https://aws.amazon.com/jp/blogs/news/bluegreen-deployments-with-amazon-ecs/
この方法では、2つの環境(Blue と Green)を用意し、切り替えることでシームレスに新バージョンをリリース できます。
Blue/Green デプロイの流れ
- Blue 環境(現行バージョン) を本番環境として稼働させる
- Green 環境(新バージョン) をデプロイする(本番にはまだ影響しない)
- Green 環境で動作確認やテストを実施
- 問題がなければ トラフィックを Blue から Green に切り替える
- Blue 環境を削除する or 次のリリース用に残しておく
Blue/Green デプロイのメリット
-
ダウンタイムなし
新バージョン(Green)を準備してから切り替えるため、ユーザーへの影響が最小限。 -
即時ロールバック
もし新バージョンに問題が発生した場合、トラフィックを Blue に戻すだけで元の状態に復旧可能。 -
本番環境と同じ条件でテストできる
Green 環境は Blue 環境と同じ構成なので、本番同等の環境で動作確認できる。 -
A/B テストが可能
Blue と Green の両方を一部のユーザーに振り分け、比較テストを行うことも可能。
Blue/Green デプロイのデメリット
-
コストがかかる
一時的に 2 つの環境を同時に維持するため、リソースコストが増える。 -
データベースの切り替えが難しい
DB のスキーマ変更がある場合、両バージョンで互換性を持たせる工夫が必要。 -
設定・運用が複雑
トラフィックの切り替えやデータの一貫性を保つための仕組みが必要。
AWS での Blue/Green デプロイ
AWS では、以下のサービスを使うことで Blue/Green デプロイを簡単に実現できます。
サービス | 役割 |
---|---|
AWS CodeDeploy | EC2、ECS の Blue/Green デプロイを管理 |
AWS Elastic Beanstalk | デプロイ中のトラフィック管理機能あり |
AWS ECS (Fargate) | タスクセットを使った Blue/Green デプロイが可能 |
AWS Route 53 | DNS レベルでの切り替えが可能 |
AWS ALB (Application Load Balancer) | ターゲットグループを使ったトラフィック分割 |
まとめ
Blue/Greenデプロイは、新しいバージョンを安全にリリースするための強力な手法ですが、コストの増加やデータベースの切り替えなどの課題もあります。
AWSではCodeDeploy・ECS・ALBなどのサービスを活用することで、比較的簡単に導入できます。
今回の学習を通して、より実践的なデプロイ戦略を理解し、今後の開発に活かしていきたいと思います!