Terraform の RDS のブルー/グリーンデプロイを試してみました

Terraform を使用して、Amazon RDS のブルー/グリーンデプロイを実施し、ダウンタイムを最小限に抑えたデータベースの更新手法を検証しました。

sylvesterFebruary 16, 2024

TLDR

Terraform でやるとブルー/グリーンデプロイのためのインスタンスの作成や古いインスタンスの削除までやってくれます!

背景

RDS の更新でダウンタイムを最初限にしたかったので、ブルー/グリーンデプロイを検討しました。

ただし、AWS のコンソールでポチポチする作業は怖いので Terraform でできないのかなって調べたらまさか対応してくれます!

https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/db_instance#blue_green_update

blue_green_update.enabled = true にするだけでブルー/グリーンデプロイが可能です。

resource "aws_db_instance" "default" {
  db_name = "mydb"
  ...省略
  
  blue_green_update {
    enabled = true
  }
}

検証

早速 terrafrom apply して検証してみました。

Apply した後に、ブルー/グリーンデプロイのためのインスタンスが作成されました。

しばらく経ったら Green 環境が更新されました。

Green の更新が完了したらインスタンスの切り替えが行われます。

先ほど Green だった新環境が今度新しい Blue 環境になりました。

Terraform でやるとちゃんと切り替え完了後に古いインスタンスも削除してくれます。

ブルー/グリーンデプロイのインスタンスの作成や古いインスタンスの削除までやってくれているのですごく便利です!