🚀 Elastic Beanstalk ブルー/グリーンデプロイ

Swap Environment URLsで安全なデプロイを実現!

🍽️ レストランで理解するブルー/グリーンデプロイ

ブルー/グリーンデプロイを、レストランの例で分かりやすく説明します!

🏪

ブルーレストラン(本店)

現在お客様が利用している本店。安定してサービスを提供中。これが「本番環境」です。

🏗️

グリーンレストラン(2号店)

新しいメニューや内装をテストする2号店。お客様には公開前の「ステージング環境」です。

💡 ポイント: ブルー/グリーンデプロイでは、2つの同じような環境を用意して、新しいバージョンをテストしてから本番に切り替えます。まさにレストランの本店と2号店のような関係です!

🔄 Environment URL Swapの仕組み

B

ブルー環境

prod-app.region.elasticbeanstalk.com

現在の本番環境

バージョン: v1.0

➡️
G

グリーン環境

staging-app.region.elasticbeanstalk.com

新バージョンをテスト

バージョン: v2.0

🔀 URL Swap(看板の付け替え)

レストランで例えると、本店と2号店の看板を瞬時に交換するようなものです!

Swap前

🔵 prod-app → v1.0

🟢 staging-app → v2.0

🔄

Swap後

🔵 prod-app → v2.0

🟢 staging-app → v1.0

📋 デプロイの手順

1

🏗️ グリーン環境の準備

新しいアプリケーションバージョンをグリーン環境にデプロイ。まるで2号店で新メニューを準備するようなものです。

2

🧪 テストの実行

グリーン環境で動作確認とテスト。お客様に提供する前に、スタッフがしっかり味見をする段階です。

3

🔄 URL Swap実行

問題がなければ、ボタン一つでURL Swapを実行。看板を瞬時に交換して、お客様を新店舗に案内開始!

4

📊 監視と確認

本番稼働後の監視。何か問題があれば、すぐに元の環境にSwap Backできます。

⚙️ Elastic Beanstalkでの実装

# 1. 新しいアプリケーションバージョンを作成 $ eb create staging-environment --version v2.0 # 2. グリーン環境でテスト $ eb open staging-environment # 3. AWSコンソールまたはCLIでURL Swap実行 $ eb swap prod-environment staging-environment
🎯 重要: Elastic BeanstalkのURL Swapは、環境のURLを交換するだけです。実際のEC2インスタンスやLoad Balancerは移動しません。まさに看板だけを付け替える感覚です!

✨ ブルー/グリーンデプロイのメリット

瞬時の切り替え

URL Swapは数秒で完了。ダウンタイムほぼゼロでデプロイできます。

🛡️

安全なロールバック

問題があれば即座に元の環境に戻せます。まるで保険付きのデプロイ!

🧪

本番同等テスト

本番環境と同じ構成でテストできるため、デプロイ後の問題を未然に防げます。

👥

ユーザー影響最小

サービス停止なしでアップデート。お客様は気づかないうちに新機能を利用開始!

🔄 CodeDeploy vs Elastic Beanstalk ブルー/グリーンデプロイ

🏪

Elastic Beanstalk方式

「店舗まるごと切り替え」

✅ 本店と2号店を完全に用意
✅ 看板だけ付け替え(URL Swap)
✅ 簡単だが店舗コストは2倍

👨‍🍳

CodeDeploy方式

「スタッフ入れ替え」

✅ 同じ店舗で新スタッフを段階的に配置
✅ 古いスタッフと新スタッフが共存
✅ コスト効率良く細かい制御が可能

項目 Elastic Beanstalk CodeDeploy
🏗️ アプローチ 環境全体の切り替え アプリケーションレベルの置換
💰 コスト 高い(2つの環境が必要) 低い(既存インフラを活用)
⚙️ 複雑さ 簡単(ボタン一つ) やや複雑(設定が必要)
🎯 対象 Beanstalk管理アプリのみ EC2、Lambda、ECS対応
🔧 柔軟性 低い(Beanstalkの機能範囲) 高い(カスタム設定可能)
⏱️ 切り替え時間 瞬時(数秒) 段階的(数分〜数十分)

🤔 どちらを選ぶべき?

🏪

Elastic Beanstalkを選ぶ場合

✅ 簡単にデプロイしたい
✅ Webアプリケーション中心
✅ 運用コストより開発スピード重視
✅ AWS初心者

⚙️

CodeDeployを選ぶ場合

✅ コストを抑えたい
✅ 細かい制御が必要
✅ 既存EC2インフラを活用
✅ マイクロサービス構成

🎯 レストランの例で使い分け:

🏪 Elastic Beanstalk方式が向いているケース:

「新しい店舗を丸ごと作って、看板だけ付け替えたい。簡単で確実だが、家賃は2倍かかってもOK」

👨‍🍳 CodeDeploy方式が向いているケース:

「同じ店舗で、スタッフを段階的に新しい人に入れ替えたい。コストは抑えたいが、管理は少し複雑になってもOK」

👨‍🍳 CodeDeployのブルー/グリーンデプロイ詳細

1

🍳 新スタッフ準備

既存のEC2インスタンスに新しいアプリケーションバージョンをデプロイ準備。料理人が新レシピを覚える段階。

2

⚖️ 段階的切り替え

Load Balancerで徐々にトラフィックを新バージョンに流す。お客様を少しずつ新スタッフのテーブルに案内。

3

📊 ヘルスチェック

新バージョンの動作を監視。問題があれば自動で旧バージョンに戻す。スタッフの様子を見ながら調整。

4

🎯 完全切り替え

問題なければ全トラフィックを新バージョンに。全てのお客様が新スタッフのサービスを受ける状態。

# CodeDeployでのブルー/グリーンデプロイ設定例 { "applicationName": "MyApp", "deploymentGroupName": "MyDeploymentGroup", "deploymentConfigName": "CodeDeployDefault.BlueGreen", "blueGreenDeploymentConfiguration": { "terminateBlueInstancesOnDeploymentSuccess": { "action": "TERMINATE", "terminationWaitTimeInMinutes": 5 }, "deploymentReadyOption": { "actionOnTimeout": "CONTINUE_DEPLOYMENT" } } }

🎯 まとめ

🏪 レストランの例で覚えよう:

  • Elastic Beanstalk = 店舗まるごと切り替え(簡単・高コスト)
  • CodeDeploy = スタッフ段階的入れ替え(複雑・低コスト)
  • URL Swap = 看板の瞬時付け替え(Beanstalk)
  • Traffic Shifting = お客様の案内先を徐々に変更(CodeDeploy)

用途に応じて適切なデプロイ手法を選択し、安全で確実なアプリケーションデプロイを実現しましょう!🚀

Created by SSuzuki1063

AWS SAP Learning Resources