Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[re:Invent 2022] Using RDS Blue/Green Deployments

[re:Invent 2022] Using RDS Blue/Green Deployments

A 20 minute presentation I gave at the 28th Japan AWS Users Group in Sapporo (on 2022/12/9) introducing the newly announced RDS Blue/Green Deployments from re:Invent 2022.

https://jawsug-sapporo.doorkeeper.jp/events/146827

(Note: This presentation is only in Japanese, sorry.)

Michael Tedder
PRO

December 09, 2022
Tweet

More Decks by Michael Tedder

Other Decks in Technology

Transcript

  1. re:Invent 2022で発表され
    たRDSのBlue/Green
    デプロイ新機能を
    使ってみた
    第28回 JAWS-UG札幌 勉強会
    2022年12月9日 (金)
    株式会社コールド・フュージョン
    テッダー マイケル
    JAWS-UG札幌支部

    View Slide

  2. $ whoami
    > テッダー マイケル(昭和51年生まれ / 2000年アメリカから日本)
    > 25年以上ゲーム業界でリアルタイム3Dと最適化中心のゲーム開発
      (初代PS 〜 Switchゲーム機 / モバイル端末 / PC / Oculus VR)
    > 10年以上AWSのクラウドアプリケーション開発(現在はサーバーレス / コンテナ)
    > JAWS-UG GameTech+札幌運営 / Tokyo Demo Fest実行委員 / AWSコミュニティビルダー
    > できること: ゲームエンジン開発 / 開発者向けツール開発 / DevOps (CI/CD)
    アプリ+バックエンド開発 / クラウドアーキテクチャ設計
    > 好きな言語: C++17 / GLSL / ASM (x64/ARM/MIPS) / PHP / TypeScript
    > 好きなゲーム: Satisfactory / Final Fantasy XI
    > 好きなAWSサービス: Lambda

    View Slide

  3. 今日お話しすること
    ● はじめに
    ○ Blue/Greenデプロイとは
    ○ RDSでのBlue/Greenデプロイ
    ● 使ってみた
    ○ Blue/Greenデプロイを作成
    ○ ステージング環境の確認
    ○ ステージング環境のスキーマを変更
    ○ 本番環境へのデプロイ
    ● ライブデモ

    View Slide

  4. はじめに

    View Slide

  5. Blue-Green Deploymentは、検証環境
    をそのまま本番環境として利用すること
    で、システムの停止時間を最小にするデ
    プロイ手法です。”

    Blue/Greenデプロイとは
    https://www.iij.ad.jp/svcsol/category/cloud/bp/ra005.html
    - IIJより

    View Slide

  6. Blue/Greenデプロイはなぜ便利か
    ● 現代アプリケーションはローンチが終わりじゃない
    ● ローンチ後、追加要素・新機能増やす必要がある
    ○ コードはもちろん、データ構成変更もよくある
    ● 切り替え作業に時間かかる
    ○ メンテナンス作業でダウンタイム
    ○ 深夜にやる?途中で問題が発生したら...?
    Blue/Greenを使うことで全て解決してくれます!

    View Slide

  7. RDSでのBlue/Greenデプロイ
    ● 本番環境のデータベース(Blue)を
    レプリケーションすることで、
    ステージング環境(Green)が作成
    ● 本番環境のデータ変更(INSERT・UPDATEな
    ど)がステージング環境に
    リアルタイムで同期
    ● ステージング環境のスキーマ変更は可能
    (※ 一部不可能の変更もある)
    ● ステージング環境の作業が終わったら、
    ほぼゼロダウンタイムで本番環境に
    デプロイが可能
    ● アプリケーション側の変更は必要なし

    View Slide

  8. 対応データベース種類(現状)
    ● RDS for MySQL
    ● RDS for MariaDB
    ● Amazon Aurora with MySQL
    MySQL互換性(MariaDBを含む)のRDSかAurora

    View Slide

  9. 使ってみた

    View Slide

  10. サンプルデータの作成(本番環境)

    View Slide

  11. Blue/Greenデプロイを作成
    ● ステージング環境作成には15分程度かかる

    View Slide

  12. ● 本番環境からデータが正常にコピーされたか
    ステージング環境の確認
    本番環境と同じデータ
    ステージング環境のホ
    スト名

    View Slide

  13. ● 本番環境から正常にレプリケーションされるか
    ステージング環境の確認
    本番環境でINSERT ステージング環境に
    リアルタイム同期

    View Slide

  14. いくつか制限がある
    ● テーブルの列を増やす
    ○ DEFAULT必須・テーブルの最後に追加のみ
    ○ 列の順番・名前の変更や削除は不可
    ● テーブルの新規作成
    ● インデックスの新規作成
    ● インデックスの削除
    ステージング環境のスキーマを変更

    View Slide

  15. ステージング環境のスキーマを変更
    ● users テーブルに2列を増やしてみる
    …あれ?

    View Slide

  16. ステージング環境の書き込み有効化
    ● ステージング環境はデフォルト読み取り専用
    ● 書き込み可能に変更するのは可能
    ○ ステージング環境のパラメータグループ変更
    ○ Blue/Greenデプロイ作成時にパラメータ
    グループを指定

    View Slide

  17. パラメータグループ設定変更
    ● read_only という値を {TrueIfReplica } → 0
    ● 書

    View Slide

  18. ステージング環境のスキーマを変更
    ● 改めて users テーブルに2列を増やしてみる
    ステージング環境

    View Slide

  19. ステージング環境のスキーマを変更
    ● 改めて users テーブルに2列を増やしてみる
    本番環境
    (変更されてない)

    View Slide

  20. 変更されたスキーマとのデータ同期
    ● 本番環境にデータ追加
    ● スキーマ変更のステージング環境に同期

    View Slide

  21. 変更されたスキーマとのデータ同期
    ● 本番環境にデータ追加
    ● スキーマ変更のステージング環境に同期
    この時点までは本番環境には一切影響はない。
    途中で何か間違った場合はステージング環境を
    削除し、やり直してもまったく問題ありません。

    View Slide

  22. 本番環境へのデプロイ
    ● RDSコンソールで
    「切り替え」押すだけ
    ● クリックしてから1分以内
    ● 実際検証では たった9秒間
    接続不可状態になってた
    ● アプリケーション側で
    リトライ機能があれば
    ほぼ気づかないかも?

    View Slide

  23. ライブデモ

    View Slide

  24. ご清聴ありがとうございます!

    View Slide