AWS Elastic BeanstalkでBlue-Green Deployment

★★★ お知らせ ★★★

◆ 6月のPS Liveは決済サービスStripeのデモ!◆
決済サービスのStripeでサブスクリプションの支払い機能を作ってみた
Stripeの機能の一部を切り出して、簡単なサブスクリプションを作るとどうなるのかを、デモをまじえてご紹介します。
⇒ 詳細はこちらから

◆【セミナー開催】 可視化ツールGrafana~初めてのダッシュボード作成◆
デモンストレーション付き!
本セミナーでは、売上データを用いて、4種類のパネル作成方法をお見せします。
⇒ お申込みはこちらから

◆ エンジニア業務環境アンケート結果 ◆
エンジニアが自分の働き方にどういったことで満足していて、不満を感じているのか、働きたい会社像として何を求めているのか、業務環境調査を実施しました。ぜひご覧ください。
⇒ アンケート結果はこちらから

こんにちは、サイオステクノロジー技術部 武井です。今回は、Elastic BeanstalkによるBule-Green Developmentを実践してみたいと思います。

Blue-Green Deploymentとは?

以下のように本番環境(図中ではProduction)とステージング環境(図中ではStaging)があるとします。文字通り本番環境では、現在ユーザーが利用中の本番向けのアプリ(Ver1.0.0)が稼働しているものとします。ステージング環境は次期バージョン(Ver2.0.0)が稼働しているものとします。そして、ステージング環境は十分にテストを重ねてリリースが可能となったものとします。

Screen Shot 2019-09-16 at 23.19.34

 

アプリケーションのエンドポイントURLはそのままに、ProductionとStagingをひっくり返します。すると下図のようになり、ユーザーはその後、Ver2.0.0のステージング環境にアクセスするようになります。このときから今までステージング環境だったものは実質上本番環境になります。これが、Blue−Green Deploymentです。

Screen Shot 2019-09-16 at 23.19.59

 

本番環境とステージング環境をひっくり返す手法は、DNSのCNAMEを変更するものだったり、色々あります。

Blue-Greenデプロイメントのメリットは以下のとおりです。

  • 本番環境に近いステージング環境でリリース前に十分テストできる。
  • リリースに伴うダウンタイムがほとんどない。
  • ステップバックが簡単にできる。(もう一度ひっくり返せばよい)

Elastic BeanstalkでBlue-Green Deployment

本来であれば、このBlue-Green Deploymentは、DNSのCNAMEを変更したりと何らかの複雑な作業をする必要がありますが、Elastic Beanstalkの場合、ものすごーく簡単に出来ます。これを実践してみたいと思います。

まず、以下のような2つのPHPのソースコード(hogeと表示するものとfugaと表示するもの)を作成して、同じアプリケーションの中に2つの環境を作成します。環境の作成方法は、「さくっとすぐに始めるAWS Elastic Beanstalk入門 」を参考にして下さい。

<?php
echo "hoge";
?>
<?php
echo "fuga";
?>

以下のようになるはずです。環境名「BlueGrenn-env1」がhogeと表示する方(先の図でいうところのProduction)、「BlueGrenn-env2」がfugaと表示する方(先の図でいうところのStaging)とします。ProductionとStagingを入れ替えてみましょう。期待値としては、BlueGrenn-env1にアクセスするとfugaと表示されるはずです。

Screen Shot 2019-09-16 at 23.20.35

 

2つの環境を表示させた状態で、画面右上の「アクション」をクリックし、さらに「環境URLのスワップ」をクリックします。

Screen Shot 2019-09-16 at 23.20.45

 

「環境に関する詳細」の「環境名」にはProductionに相当する環境名選択します。「スワップする環境の選択」の「環境名」にはStagingに相当する環境名選択します。最後に「スワップ」をクリックします。

Screen Shot 2019-09-16 at 23.21.10

 

すると一瞬でProductionとStagingが切り替わります。試しに環境名BlueGrenn-env1のURLにアクセスすると、fugaと表示されるはずです。

まとめ

本来なら手間のかかるBlue-Green Deploymentがこんなに簡単にできるなんてElastic Beanstalkすごいですね。Elastic Beanstalkバンザーイ。

アバター画像
About 武井 宜行 251 Articles
Microsoft MVP for Azure🌟「最新の技術を楽しくわかりやすく」をモットーにブログtech-lab.sios.jp)で情報を発信🎤得意分野はAzureによるクラウドネイティブな開発(Javaなど)💻「世界一わかりみの深いクラウドネイティブ on Azure」の動画を配信中📹 https://t.co/OMaJYb3pRN
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる