まだre:Invent 2022開催直前ですが、フライング気味にいくつものAWSアップデートが早くも発信され始めています。
今回はその中でも 「Aurora&RDSにおけるフルマネージドなBlue/Greenデプロイ」 を日本語で先行紹介してみます。
アナウンス概要
背景
- データベースを更新する際、リスクとダウンタイムを極小化するためにBlue/Greenデプロイが有効な戦略となる。ただしBlue/Green双方のDBを常時同期しておかないと、安全なB/Gデプロイが出来ない
- AuroraやRDSではこれまでもクローン機能やリードレプリカ昇格機能を組み合わせてセルフサービスでB/Gデプロイを実現することができたが、手順が複雑でコストも掛かるため対応が後回しにされがちだった
新機能概要
- Aurora(MySQL互換)、RDS(MySQL/MariaDB)が対象
- 少ない手順で本番DBのコピーをステージングとして分離作成&同期してくれる
- 1分以内にステージング→本番へのDB昇格が可能。データ損失なし
想定ユースケース
- DBのメジャー&マイナーVerアップ
- DBスキーマの修正
- その他、OSや保守系のアプデ対応
制約
- 対象DBエンジンであればバージョン制約は無し
- 中国以外の全リージョンに対応
ドキュメントはこちらです。
実際に触ってみ(ようとし)た
すでに(中国以外の)全リージョンでGAされています。AWSブログを見ながら実際に触ってみましょう。
まずは実験用のAuroraクラスターを作成。
B/Gデプロイを有効にするには、DBクラスターでバイナリーロギングを有効にしておく必要があるようなので、RDSコンソールのパラメーターグループで binlog_format
の値を MIXED
にしたグループを作成しておき、実験対象のAuroraクラスターに適用しておきます。
クラスターを選択して「アクション > ブルー/グリーンデプロイの作成」を実行。
※GAされてますが、"ベータ"と付いてます。笑
すると…残念ながら謎のエラーになってしまいました。
サポートに問い合わせたいと思いますが、原因不明なので以降は公式ブログのスクリーンショットを追いかけていくことにします。。
B/G設定画面に進んだあとは、今回のデプロイ自体の識別子を命名し、Green側(アップデート後)のエンジンバージョンやパラメーターグループを指定します。
B/Gデプロイが作成できたら、「アクション」から「スイッチオーバー」を実行すれば本番クラスターがBlue(現行バージョン)からGreen(新バージョン)に切り替わってくれるようです。
コンソール上でBlue/Greenのラベルが付いていて、分かりやすいですね!
切り替え前にはスイッチオーバーの確認画面を表示してくれます。
切り替え後も旧クラスター(Blue面)は削除されず、残り続けます。
まとめ
AuroraやRDSで定期的に必要になるDBエンジンのアップデート対応、インプレースで実施すると事故った際に怖いので、B/Gデプロイをお手軽に実施できるのは大変ありがたいですね!
特にDBレイヤーはB/Gするのに同期やデータロストのケアが必要になるので、マネージドでやってくれるのは嬉しい限りです。
※AWS Well-Architected Frameworkでも「インフラはイミュータブルにデプロイしようね!」と推奨されていますね。
早く東京リージョンでも「ちゃんとしたGA」を待ちたいのと、Aurora Postgres互換やRDS for Oracleでも利用可能になってくれるのを楽しみにしたいと思います。
ちなみに「ブルー/グリーンって何だっけ?」という方は、手前味噌ですがこちらの記事もご覧ください。