えぇ？ Aurora＆RDSがBlue/Greenデプロイをフルマネージドで提供してくれるように!?

まだ[re:Invent 2022](https://reinvent.awsevents.com/)開催直前ですが、フライング気味にいくつものAWSアップデートが早くも発信され始めています。
今回はその中でも **「Aurora＆RDSにおけるフルマネージドなBlue/Greenデプロイ」** を日本語で先行紹介してみます。

https://aws.amazon.com/jp/blogs/aws/new-fully-managed-blue-green-deployments-in-amazon-aurora-and-amazon-rds/

# アナウンス概要

### 背景

- データベースを更新する際、リスクとダウンタイムを極小化するためにBlue/Greenデプロイが有効な戦略となる。ただしBlue/Green双方のDBを常時同期しておかないと、安全なB/Gデプロイが出来ない
- AuroraやRDSではこれまでもクローン機能やリードレプリカ昇格機能を組み合わせてセルフサービスでB/Gデプロイを実現することができたが、手順が複雑でコストも掛かるため対応が後回しにされがちだった

### 新機能概要

- Aurora（MySQL互換）、RDS（MySQL/MariaDB）が対象
- 少ない手順で本番DBのコピーをステージングとして分離作成＆同期してくれる
- 1分以内にステージング→本番へのDB昇格が可能。データ損失なし

### 想定ユースケース

- DBのメジャー＆マイナーVerアップ
- DBスキーマの修正
- その他、OSや保守系のアプデ対応

### 制約

- 対象DBエンジンであればバージョン制約は無し
- 中国以外の全リージョンに対応

ドキュメントはこちらです。

https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/blue-green-deployments.html


# 実際に触ってみ（ようとし）た

すでに（中国以外の）全リージョンでGAされています。AWSブログを見ながら実際に触ってみましょう。
まずは実験用のAuroraクラスターを作成。
![コメント 2022-11-28 162122.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1633856/75545118-c5ba-cd9b-6aed-03f5337cd2e8.jpeg)

B/Gデプロイを有効にするには、DBクラスターでバイナリーロギングを有効にしておく必要があるようなので、RDSコンソールのパラメーターグループで `binlog_format` の値を `MIXED` にしたグループを作成しておき、実験対象のAuroraクラスターに適用しておきます。
![コメント 2022-11-28 163016.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1633856/ee2eccec-d159-c6ca-5079-4374b9e3769b.jpeg)

クラスターを選択して「アクション > ブルー/グリーンデプロイの作成」を実行。
　※GAされてますが、"ベータ"と付いてます。笑
![コメント 2022-11-28 162213.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1633856/8b6fdb80-0f8a-4806-1e54-c7df57408473.jpeg)

すると…残念ながら謎のエラーになってしまいました。
サポートに問い合わせたいと思いますが、原因不明なので以降は公式ブログのスクリーンショットを追いかけていくことにします。。
![コメント 2022-11-28 163338.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1633856/2f789170-ab5a-6445-7b9c-6df165a1436e.jpeg)

B/G設定画面に進んだあとは、今回のデプロイ自体の識別子を命名し、Green側（アップデート後）のエンジンバージョンやパラメーターグループを指定します。
![画像](https://d2908q01vomqb2.cloudfront.net/da4b9237bacccdf19c0760cab7aec4a8359010b0/2022/11/16/2022-rds-blue-green-deployments-2.jpg)

B/Gデプロイが作成できたら、「アクション」から「スイッチオーバー」を実行すれば本番クラスターがBlue（現行バージョン）からGreen（新バージョン）に切り替わってくれるようです。
コンソール上でBlue/Greenのラベルが付いていて、分かりやすいですね！
![画像](https://d2908q01vomqb2.cloudfront.net/da4b9237bacccdf19c0760cab7aec4a8359010b0/2022/11/16/2022-rds-blue-green-deployments-3.jpg)

切り替え前にはスイッチオーバーの確認画面を表示してくれます。
![画像](https://d2908q01vomqb2.cloudfront.net/da4b9237bacccdf19c0760cab7aec4a8359010b0/2022/11/16/2022-rds-blue-green-deployments-4.jpg)

切り替え後も旧クラスター（Blue面）は削除されず、残り続けます。
![画像](https://d2908q01vomqb2.cloudfront.net/da4b9237bacccdf19c0760cab7aec4a8359010b0/2022/11/16/2022-rds-blue-green-deployments-5.jpg)

# まとめ
AuroraやRDSで定期的に必要になるDBエンジンのアップデート対応、インプレースで実施すると事故った際に怖いので、B/Gデプロイをお手軽に実施できるのは大変ありがたいですね！
特にDBレイヤーはB/Gするのに同期やデータロストのケアが必要になるので、マネージドでやってくれるのは嬉しい限りです。

※AWS Well-Architected Frameworkでも「インフラはイミュータブルにデプロイしようね！」と推奨されていますね。

https://docs.aws.amazon.com/ja_jp/wellarchitected/latest/reliability-pillar/rel_tracking_change_management_immutable_infrastructure.html

早く東京リージョンでも「ちゃんとしたGA」を待ちたいのと、Aurora Postgres互換やRDS for Oracleでも利用可能になってくれるのを楽しみにしたいと思います。

ちなみに「ブルー/グリーンって何だっけ？」という方は、手前味噌ですがこちらの記事もご覧ください。

https://qiita.com/minorun365/items/3c92187cb251abbd92bc