AWS Elastic BeanstalkでBlue-Green Deployment

こんにちは、サイオステクノロジー技術部 武井です。今回は、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バンザーイ。

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

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

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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です