最近よくうちでAWS Blue GreenがどうのこうのとSlackでよく飛び交ってるからちょっとまとめて仕組みを理解する
これが弊社でも新バージョンのリリースするときに採用されており、概要だけ知っているが内容をちゃんと理解しようと思いちょっとまとめます。
まずBlue-Green Deploymentって?
言葉の通り青と緑の概念で、旧バージョンと新バージョンのデプロイが混在する時にロードバランサーとかのルーティング制御によってトラフィックを切り替えて、動作確認ができたら新バージョンへ環境を変更できるサービスです。
何がいいの?
これまではデプロイしたらダウンタイムが発生してレスポンスが帰ってこない時間帯があり、そのため通常はリリースを深夜に行うのが普通でしたが、このサービスのおかげでダウンタイムなくリリースできるようになります。なぜならblue/greenで向き先を変えるだけだからです。
向き先サーバーだけではなく、greenで新規にURL設定することも可能。
仮にgreenで不具合が検知されて通常に動かないようであれば、blueにロールバックもすぐさま出来ます。
手順はどうなってるの?
新しいバージョンをデプロイするために、新しいgreen環境をセットアップして、両方の環境でアプリケーションが正常に動作していることを確認します。
次にトラフィックの切り替えを行うために、ロードバランサーやDNSを更新、これでトラフィックが現在のblue環境から新しいグリーン環境に移動します。greenを見るようになるんですね。
トラフィックが新しい環境に完全に移行したら、使ってたblue環境を停止します。これでダウンタイムが発生しないんですね。
新しいgreenのバージョンが失敗した場合でも、すぐに前のblueのバージョンに切り戻せて、アプリケーションが止まることなく最小限に抑えられます。
実際にgreenで一部APIレスポンスがとても遅い事象が発生してすぐに戻せていたのですごい便利で必須のサービスなんだなと実感しました。
2022年にはRDSでもスキーマのblue/greenの切り替えができるようになっているとのこと
Discussion