RDS Multi-AZのメリットを正しく理解する — 高可用性とフェイルオーバーの仕組み
RDS Multi-AZを有効にしたのに「パフォーマンスが上がるはず」と期待して、後から「何も変わっていない」と気づく — これは本番環境でよく見かける誤解だ。Multi-AZはパフォーマンス機能ではなく、 高可用性とフェイルオーバー のための機能であり、その設計思想を正しく理解しないと、コストと効果のバランスを見誤る。 TL;DR — RDS Multi-AZの要点 観点 Multi-AZの動作 目的 高可用性・自動フェイルオーバー スタンバイインスタンス 読み取り/書き込みトラフィックを受け付けない(通常時) レプリケーション 同期レプリケーション(プライマリ → スタンバイ) フェイルオーバー所要時間 通常1〜2分(DNSエンドポイント切り替え) 読み取りスケールアウト 対象外(Read Replicaが別途必要) コスト シングルAZ比でインスタンス料金が約2倍 RDS Multi-AZの仕組み — 有効化する前に理解すべきこと Multi-AZを有効にすると、RDSはプライマリインスタンスとは 別のアベイラビリティゾーン にスタンバイインスタンスを自動的にプロビジョニングする。プライマリへの書き込みはすべて同期的にスタンバイへレプリケートされる。つまり、プライマリがコミットを返す前にスタンバイへの書き込みも完了していることが保証される。 この同期レプリケーションが、Multi-AZがパフォーマンス向上に寄与しない理由でもある。書き込みレイテンシはスタンバイへの往復時間分だけ増加する可能性がある。アプリケーションからは単一のDNSエンドポイントしか見えず、スタンバイインスタンスへの直接アクセスは通常時は不可能だ。 graph TD App["アプリケーション"] -->|"単一DNSエンドポイント"| Primary["プライマリインスタンス (AZ-A)"] Primary -->|"同期レプリケーション (コミット前に完了)"| Standby[...