こんにちは。ソリューション事業部の大島です。
PostgreSQLのマイナーバージョンアップデートのためにBlue/Greenデプロイを行ったので内容を紹介します。

Blue/Greenデプロイ 実行手順

では早速ブルーグリーンデプロイを作成していきます。
ブルーグリーンデプロイを行うRDSを選択し、[アクション] > [ブルー/グリーンデプロイを作成]を押下します。

グリーンデータベースの設定を行います。
ブルー/グリーンデプロイ識別子は任意の名前を付けます。
今回はマイナーバージョンのアップデートのみを行いたいため、エンジンバージョンのみ更新した形でグリーン環境を作成します。

実行すると、コンソールではグリーンデータベースが作成されていることが確認できます。

作成されたブルーグリーンデプロイを選択して、詳細を確認します。
情報として、ブルー環境とグリーン環境の比較をしてくれている部分があり分かりやすいです。

グリーンデータベースのパラメータグループやインスタンスタイプ等を変更したいとなった場合はスイッチオーバーを行う前のこの段階で変更します。

グリーン環境に必要な変更を行った後、ブルーグリーンデプロイのDBを選択し、 [アクション] > [切り替え]を押下します。

次に、切り替えの最終確認を行い、タイムアウトの設定を行います。
※タイムアウトは30秒~1時間の間で設定可能です。設定した時間より切り替えに時間がかかる場合はスイッチオーバーは完了しませんのでご注意ください。

最後に[切り替え]を押下し、グリーン環境へスイッチオーバーを行います。

正常に切り替えができたことを確認します。

古いブルーデータベースには識別子の末尾に「-old1」がつき、グリーンデータベースだったRDSの識別子が旧ブルーデータベースの識別子に変わっています。

これによって、ユーザーはエンドポイントの変更を行うことなく、切り替えを行うことが出来ました。

最後に、EC2などのサーバーからRDSが正常に使用できることを確認します。
以上で、ブルーグリーンデプロイが完了となります。

※古いブルー環境はコストがかかりますので、正常稼働が確認出来たら削除を行ってください。

切り戻し手順

ここまでで、ブルー環境からグリーン環境へ切り替える作業を行いましたが切り戻し手順も確認する必要があるかと思います。

ただし、 現在RDS for PostgreSQLではエンジンバージョンのダウングレードができないため、別の手段で切り戻しを行います。
具体的には、「エンドポイントを元に戻し、サーバーからの向き先を元のRDSに切り替える作業」を行います。

ではまず、古いブルーデータベースを再起動します。
ブルーグリーンデプロイを実施する際に、ブルー環境は書き込みを禁止するため、自動的にRead onlyとなっています。
そのため、このままエンドポイントを戻しても書き込みが出来ずエラーになりますのでご注意ください。

では、再起動が出来たら、新しいブルーデータベースを選択して[変更]を押下します。

DBインスタンス識別子を任意のものに変更します。
DBインスタンス識別子と併せてエンドポイントも変更となっていることを確認します。
変更のスケジュールでは[すぐに適応]を押下してDBインスタンスを変更します。

次に、古いブルーデータベースを選択して[変更]を押下します。

DBインスタンス識別子を元の識別子(ブルーグリーンデプロイ実行前の識別子)に変更します。
DBインスタンス識別子と併せてエンドポイントも元のものになっていることを確認します。
変更のスケジュールでは[すぐに適応]を押下してDBインスタンスを変更します。

以上の作業で、RDSのエンドポイントが元のサーバーに切り替わったため、アプリケーションは古いブルーデータベースを見ている状態になります。
アプリケーション側から状態を確認してメンテナンスモード等の解除行い、終了となります。

さいごに

ブルーグリーンデプロイの機能を活用することで、ユーザーはアプリケーションの変更を行わずにRDSのアップデートを行うことが出来ました。

今後も活用していきたいと思います。
最後までお読みいただきありがとうございました。