はじめに
こんにちは!TechBull 運営メンバー SREのこうじゅん(@kouzyunJa)です。先日、RDSのブルーグリーンデプロイを活用して、Auroraのバージョンアップを行う機会がありました。そこで今回は、初めてのブルーグリーンデプロイという内容で記事を書いてみたいと思います。
RDS ブルーグリーンデプロイとは
https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/blue-green-deployments-overview.html
RDSブルーグリーンデプロイとは、AWSが提供するマネージドなRDSのデプロイ機能です。
既存のRDS(=ブルー環境)とは別に、新しいバージョンや設定を適用したRDS(=グリーン環境)を用意し、その2つの環境を切り替えることで、安全にバージョンアップや構成変更を行うことができます。これにより、アップグレード中のダウンタイムを最小にして切り替えることができます。
-
ブルー環境(現在の本番環境)
現在ユーザーに提供されている稼働中のRDS環境
-
グリーン環境(新しい環境)
新しい設定やバージョンを適用したRDS環境
RDSブルーグリーンデプロイでは、AWSがこの 「ブルー」と「グリーン」2つのクラスターを用意して、切り替えポイントを制御してくれます。
RDS ブルーグリーンデプロイを試してみる
今回は Aurora MySQL を使用しており、8.0.mysql_aurora.3.08.2 → 8.0.mysql_aurora.3.09.0へのマイナーバージョンアップを行うというシンプルな想定で、RDSのブルーグリーンデプロイをハンズオン形式で試してみます。
構成は以下の通りです:
- bg-deployment-1(ブルーグリーンデプロイ構成のトップ)
- Blue(現行環境)
- クラスター:dg-deploy-database-1
- バージョン:8.0.mysql_aurora.3.08.2
- インスタンス:dg-deploy-database-1-instance-1
- クラスター:dg-deploy-database-1
- Green(新環境)
- クラスター:dg-deploy-database-1-green
- バージョン:8.0.mysql_aurora.3.09.0
- インスタンス:dg-deploy-database-1-instance-1-green
- クラスター:dg-deploy-database-1-green
- Blue(現行環境)
💡 補足
ブルーグリーンデプロイを利用するには、使用するパラメーターグループに binlog_format = ROW が設定されている必要があります。今回はこの設定をすでに適用済みという想定で進めます。
ブルーグリーンデプロイを実施するAuroraクラスターは構築済みの状態からハンズオンは進めたいと思います。①右上の [アクション] → [ブルー/グリーンデプロイの作成] を選択します。
②エンジンバージョンの設定画面で、[Aurora MySQL 3.09.0] を選択します。
→ これがグリーン環境に適用されるバージョンになります
→ 設定後、[次へ] をクリック
③ブルーとグリーンの構成差分が表示されるので確認します。
→問題がなければ [作成] を押下。
④しばらく待つと、ブルーグリーンデプロイの環境が作成されます。
→ 作成後に、アクションから[切り替え]を押下するとブルーグリーンデプロイが実際に開始されます。
⑤切り替え前の最終確認を行い、問題がなければ 切り替えを実行します。
⑥しばらく待つと「スイッチオーバーに成功しました」と表示されます。
→ ブルーグリーン環境のクラスターが切り替わり、元のクラスターには -old の表記が付与されていることを確認できます。これで、新しいクラスターが本番クラスターとして扱われるようになります。
おわりに
以上で、RDSのブルーグリーンデプロイを使ったAurora MySQLのバージョンアップの流れは完了です。実際の運用では、切り替え前に十分な検証や接続テストを行った上で、切り替えを実施することとなります。検証方法は以下、Zennで書いていますので、ぜひ参考にしてみてください!
最後まで読んでいただき、ありがとうございました!

1995年生まれのFindy/SRE。未経験からエンジニアへキャリアチェンジしエンジニア歴としては4年目となる。SESにて様々なAWS案件に携わる。SRE領域の知識を身につけるためTechBullコミュニティへ参画。元運用監視オペレーターという立場からAWSエンジニアやSREへキャリアアップした経験やクラウド関連の記事を執筆しつつ、コミュニティの技術フォローと1on1を実施し、現在はSREとして、Datadogでのオブザーバビリティ強化やTerraformでのIaC環境の整備、コスト削減施策の実施などを行っている。