導入
自分で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は高可用性(障害対策)のため、リードレプリカは性能(読み取り拡張)のため」——目的が違うことを区別して覚えておくと、試験の選択肢を判別しやすくなります。