継続は力なり

タイトル通り定期的な更新を心掛けるブログです。

RDS Blue/Green Deployment を使って Aurora MySQL 5.7 → 8.0 に移行を試した

タダです.

Aurora MySQL 5.7 のサポート期限が今年の10月末に迫っているため,データベースエンジンのバージョンアップを進めています.そんな中で RDS Blue/Green Deployment を使って開発環境のバージョンアップを行ったのですが,その時に感じた良さをまとめてみます.

RDS Blue/Green Deployment の概要

RDS Blue/Green Deployment は最小限のダウンタイムでデータベース環境の更新や移行を実現するための機能です.Blue/Green で2つの完全に独立したデータベース環境を用意して Blue が移行元の環境で Green が移行先の環境なのですが,Blue → Green にはデータがレプリケーションされているためタイミング合わせて切り替えを行います.

docs.aws.amazon.com

RDS Blue/Green Deployment の良さ

データベースエンジンバージョンアップがボタン1つでできてしまう手軽さ

データベースエンジンバージョンアップは以前だとむちゃくちゃ大変なイメージが有りましたが,RDS Blue/Green Deployment はそのイメージを払拭してくれました.というのもボタン1つで今回の Aurora MySQL 8の環境ができあがり,環境切り替えまでのデータレプリケーションも張り続けてくれ,切り替えもボタン一発で切り替えられました.事前準備や検証は一定ありましたが,実際の移行はむちゃくちゃ簡単でした.

関連記事

aws.amazon.com

docs.aws.amazon.com

環境移行後の Aurroa エンドポイントは引き継がれる

次の良さは Aurora のエンドポイントは Blue 環境から Green 環境に引き継がれます.当然といえば当然なのかもしれませんが,エンドポイントが引き継がれるおかげでアプリケーションの環境変数DNS で登録してるレコードに影響を与えません.これは運用上ありがたい機能でした.

Terraform の後追いを行う必要がほぼない

Aurora エンドポイントが引き継がれる点と関連しますが,Terraform で Aurora を管理してると移行後にどれくらい差分が出るのかが気になっていました.実際,データベースエンジンのバージョン以外はほぼ移行後の差分はでませんでした.差分として出たのは1つ目が Aurora AutoScaling の設定がなくなっていたことです.Green 環境にはその設定が引き継がれてないため,新規追加のリソースとして差分がでました.もう1つは DB クラスターパラメーターグループとパラメーターグループでした.これは family のパラメータを変数でデータベースエンジンのバージョンを渡していたからだったんですが,5.7と8のパラメーターグループを別々で作って family の値を固定値にすれば差分はでないため,Terraform の影響もほぼなくてありがたかったです.

関連記事

registry.terraform.io

registry.terraform.io

まとめ

RDS Blue/Green Deployment を Aurora MySQL のバージョンアップを行った時に感じた良さをまとめました.