データベースでのBlue/Greenデプロイを実現 AWS RDS 「Blue/Green Deployments」
最後に紹介するのは、AWS RDSのデータベースの更新、変更をBlue/Greenデプロイする機能「Blue/Green Deployments」です。
Blue/Greenデプロイは、デプロイ手法の一つで、デプロイ前、デプロイ後の2環境を利用して安全に素早くデプロイする手法です。これまで、RDSに対して同じようにデプロイする場合は、ユーザ側でデプロイ後相当となるようなRDSインスタンスを構築し、アプリケーションの接続先DBを切り替える等の対応が必要でした。
今回、Blue/Green Deploymentsの機能がリリースされたことにより、AWSが上記のような機能を管理、実行してくれるようになり、ユーザ側の運用負荷が低減されます。
本機能の主な利点は以下です。
- データベースの変更を本番環境からステージング環境に自動的に複製可能
- Blue/Green間のスイッチオーバは1分以内で実施可能
- スイッチオーバ中のデータ損失を排除
- スイッチオーバにあたり、アプリケーションの変更が不要
AWSコンソールからBlue/Greenデプロイのリソースを作成すると、運用系で動いていたインスタンスがBlue相当としてマークされ、Green相当のインスタンスが新規作成されます。デプロイ時には、Green相当のインスタンスが運用系のBlueインスタンスへ昇格することで、アプリケーションは接続先データベースのことを意識することなく切り替えが完了します。
AWS公式ドキュメントにには、使用にあたり考慮すべき一定の制約事項について紹介されています。一例ですが、以下には注意が必要です。
必要に応じて遅延読み込み処理を実施する必要がある。
Green環境が作成された後、DBインスタンスはバックグラウンドでデータをロードし続けます。ロードされていないデータに対してアプリケーションからアクセスされると、該当データをS3からダウンロードしてロードするため、パフォーマンスに影響が出る可能性があります。アプリケーションからアクセスさせる前に、全表スキャン(`SELECT *`等)を実行しておくことで、事前にすべてのデータをS3からダウンロードし、影響を抑えることが可能です。
Blue/Greenデプロイに限らず、RDSのリストアなどでも同じ対応でパフォーマンスの改善が可能です。
Blue/Greenデプロイ利用時のスキーマ変更は、レプリケーションに互換性のある操作のみを行う必要がある。
カラム名の変更やテーブル名の変更などのレプリケーションに互換性のない操作を行うと、グリーン環境へのレプリケーションが中断されるため、注意が必要です。
次回について
次回以降もAWS re:Invent 2022で発表のあったサービスアップデートを紹介していきます。ぜひご覧ください!
