この記事の概要
Amazon RDS ブルー/グリーンデプロイの実践ガイド
Amazon RDS(Relational Database Service)におけるブルー/グリーンデプロイメントは、通常、論理レプリケーションを使用して行われます。ブルー/グリーンデプロイメントでは、新しいリリース(グリーン)が本番環境(ブルー)と同時に実行され、切り替えることで本番環境への影響を最小限に抑えることが目的です。
Amazon RDSにおける論理レプリケーションは、マスターデータベースからスレーブデータベースへのデータの非同期転送を指します。ブルー/グリーンデプロイメントにおいて、新しいリリースをデプロイするためには、以下の一般的な手順があります
Amazon RDS ブルー/グリーンデプロイ手順
- 新しいデータベースの作成: 新しいデータベースリソース(例: RDSインスタンスまたはクラスター)を作成します。
- スキーマの準備: 新しいデータベースには、新しいアプリケーションリリースに必要なスキーマやテーブルを準備します。
- 論理レプリケーションの設定: マスターデータベースから新しいデータベースへの論理レプリケーションを設定します。これにより、データの非同期転送が開始されます。
- アプリケーションの切り替え: 新しいデータベースが論理レプリケーションによって本番データベースと同期していることを確認したら、アプリケーションのトラフィックを新しいデータベースに切り替えます。
- テストと確認: アプリケーションが正常に動作していることを確認し、必要に応じてテストを行います。
- 古いデータベースの後始末: 古いデータベースを廃止するか、保管しておくかを決定し、不要なリソースを解放します。
Amazon RDS ブルー/グリーンデプロイにおける論理レプリケーションは、コミットログレコード単位で実行されます。つまり、ブルー環境で実行されたすべてのデータ変更は、コミットログレコードに記録され、グリーン環境に同期されます。
スポンサーリンク
Amazon RDS ブルー/グリーンデプロイにおける論理レプリケーションされるデータの詳細
- コミットログ: データベースへの変更を記録するトランザクションログ。
- コミットログレコード: コミットされたトランザクションの詳細情報を含むログエントリ。
- 同期されるデータ: DMLステートメント(INSERT、UPDATE、DELETE)によるデータ変更、データ定義言語(DDL)ステートメント(CREATE TABLE、ALTER TABLE など)によるスキーマ変更。
- 同期されないデータ: 大きなオブジェクト(LOB)、pg_cron 拡張機能によるスケジュール設定、RDS プロキシによる接続設定。
- レプリケーションのタイミング: コミットログレコードが生成されると、すぐにグリーン環境に送信され、グリーン環境では受信したコミットログレコードが適用され、データが更新されます。
- 遅延: ネットワークの遅延や処理負荷の影響により、ブルー環境とグリーン環境の間でデータにわずかな遅延が発生する場合があります。
ブルーグリーンデプロイの論理レプリケーション(データ同期)はどの時点までされる?
ブルーグリーンデプロイにおける論理レプリケーションの適用範囲は、以下の3つの時点によって区別されます。
1. グリーン環境へのレプリケーション
- 開始時点: ブルー環境のデータベーススナップショットからグリーン環境が作成された時点
- 終了時点: グリーン環境がデプロイされ、本稼働環境になるまで
この期間中、グリーン環境は常にブルー環境の最新状態と同期されます。具体的には、以下のデータがレプリケーションされます。
- データベーススキーマ
- データ
- トランザクションログ
2. デプロイ時
- 開始時点: グリーン環境へのデプロイが開始された時点
- 終了時点: デプロイが完了し、グリーン環境が本稼働環境になるまで
この期間中は、以下のレプリケーションが発生します。
- ブルー環境で発生した新しいトランザクションは、グリーン環境にレプリケーションされます。
- グリーン環境へのデプロイに伴うスキーマ変更やデータ更新は、ブルー環境にレプリケーションされません。
3. グリーン環境が本稼働環境になった後
- 開始時点: グリーン環境が本稼働環境になった時点
- 終了時点: 次回のデプロイまで
この期間中は、グリーン環境は独立した本稼働環境として運用されます。レプリケーションは発生しません。
補足
- ブルーグリーンデプロイでは、論理レプリケーションを使用して、ブルー環境からグリーン環境へのデータ同期を行います。
- 論理レプリケーションは、データの変更内容を逐次伝送するため、遅延が発生する可能性があります。
- デプロイ時にデータの整合性を確保するため、デプロイ前にブルー環境とグリーン環境のデータ差異を確認することをお勧めします。
スポンサーリンク
注意事項
- すべての変更が同期されるわけではありません。同期されないデータの例については上記を参照してください。
- レプリケーションの遅延は、アプリケーションの要件によっては問題になる可能性があります。
情報元: