本文へスキップ
BecomeCoder

AWSコース · 第5章 データベース · レッスン25

マネージドデータベースとRDS

導入

自分でEC2にMySQLをインストールして運用すると、バックアップ、パッチ適用、障害時の切り替えまで、すべて自分の仕事になります。データベースの「面倒な運用」をAWSに任せられたら、と思ったことはありませんか。

説明

マネージドサービス(managed service)とは、サーバーの構築・パッチ適用・バックアップ・冗長化といった運用作業をAWS側が代行してくれるサービス形態です。利用者は「サーバーをどう保守するか」ではなく「どんなデータをどう使うか」に集中できます。

Amazon RDS(Relational Database Service)は、リレーショナルデータベース(表形式でデータを管理し、SQLで操作するデータベース)のマネージドサービスです。MySQL・PostgreSQL・MariaDB・Oracle・SQL Serverなど、主要なデータベースエンジンを選んで使えます。

RDSには高可用性・拡張性のための仕組みが備わっています。

  • マルチAZ配置 … 稼働中のデータベース(プライマリ)とは別のアベイラビリティーゾーンに、常に同期された待機用のコピー(スタンバイ)を自動的に用意する仕組み。プライマリに障害が起きると自動的にスタンバイへ切り替わる(フェイルオーバー)。
  • リードレプリカ … 読み取り専用のコピーを複数作成し、読み取り(SELECT)のアクセスを分散させる仕組み。書き込みが集中するプライマリの負荷を減らせる。
flowchart LR
    App["アプリケーション"] -->|読み書き| Primary["プライマリ(AZ-a)"]
    Primary -->|同期レプリケーション| Standby["スタンバイ(AZ-c)"]
    Primary -->|非同期レプリケーション| Replica["リードレプリカ"]
    App -->|読み取りのみ| Replica

「サーバーのお守り」をAWSに任せ、自分たちはデータとアプリケーションのロジックに集中できるのがRDSの最大の価値です。

具体例

社内のEC2にMySQLを自前でインストールして運用していた会社が、RDSへ移した後の変化を見てみましょう。

  • 移行前 … バックアップは深夜に手動スクリプト、セキュリティパッチ当ては担当者が手作業、DBサーバーが落ちたら復旧まで数時間サイトが止まる、という綱渡り。
  • 移行後(RDSのマルチAZ) … ある夜、プライマリDBのあるAZ-aで障害が発生。しかしRDSが自動でAZ-cのスタンバイにフェイルオーバーし、数分でサービスが復帰。担当者は朝の通知で気づいたほどでした。バックアップもパッチもAWSが自動実行。
  • さらにリードレプリカ … 経営陣が見る売上ダッシュボードが重い読み取りを大量に投げていたので、リードレプリカを1台追加し、その分析クエリはレプリカへ。書き込みを担うプライマリの負荷が下がり、注文処理が軽くなった。

「障害に自動で耐える=マルチAZ」「読み取りの負荷を逃がす=リードレプリカ」——目的が違う2つを、この1社の物語で区別できます。

読んでみよう

「マルチAZは高可用性(障害対策)のため、リードレプリカは性能(読み取り拡張)のため」——目的が違うことを区別して覚えておくと、試験の選択肢を判別しやすくなります。

次のレッスンへ →