コンテンツにスキップ

RDS

1. サービス概要

Amazon RDS(Relational Database Service)は、AWS が提供するフルマネージドなリレーショナルデータベースサービスである。
MySQL、PostgreSQL、MariaDB、Oracle、Microsoft SQL Server、Amazon Aurora など、複数のデータベースエンジンを選択でき、データベースのセットアップ・管理・スケーリングを簡素化する。

主なユースケースとして、

  • Web アプリケーションのメインデータベース
  • 社内システムのリフト&シフト(オンプレからの移行)
  • 開発/テスト環境

などが挙げられる。
インフラ管理を AWS に任せることで、開発チームはアプリケーションロジックに集中できる。

2. 主な特徴と機能

2.1 マネージドで簡易的な運用

RDS は OS や DB ソフトウェアのインストール、パッチ適用、バックアップ、自動フェイルオーバーなどを AWS が自動化して管理する。
手動でのアップデート作業や冗長化構成の構築が不要になるため、運用負荷を大幅に削減できる。

2.2 バックアップとリカバリ

スナップショットおよびポイントインタイムリカバリをサポートし、バックアップウィンドウを自動スケジュールできる。
自動スナップショットの保持期間を設定し、過去の任意時点までデータベースを巻き戻せるため、障害時のリカバリが容易である。

2.3 マルチ AZ 配置とレプリケーション

マルチ AZ オプションを有効にすると、プライマリ DB の変更が同期的に別 AZ のスタンバイ DB へレプリケーションされ、障害時には自動的にスタンバイが昇格してフェイルオーバーする。
また、リードレプリカを作成し、読み込み負荷を分散する構成も可能である(エンジンによって異なる)。

2.4 スケーラビリティ

需要の増減に合わせて、DB インスタンスタイプやストレージ容量を変更できる。
手動スケールアップ/ダウンはコンソールや CLI から行い、自動ストレージスケーリング機能をサポートするエンジン(Aurora など)も存在する。

2.5 多彩なエンジンサポート

RDS は多様な RDB エンジンを提供し、既存の SQL 知識やツールを活かした移行が容易である。
例: MySQL、MariaDB、PostgreSQL、Oracle Database、SQL Server、Aurora など。

3. アーキテクチャおよび技術要素

  1. RDS インスタンス(プライマリ)を作成し、VPC やセキュリティグループを設定
  2. マルチ AZ オプションを有効にすると、スタンバイインスタンスが自動作成される
  3. 読み取り性能の拡張が必要な場合、リードレプリカを追加(MySQL、PostgreSQL 等対応エンジン)
  4. 自動バックアップやスナップショットが定期的に取得され、障害時には Point-in-Time リカバリ
  5. フェイルオーバーやメンテナンスは AWS によってマネージドされる

このように、オンプレミスで必要だった多くの運用作業(ハードウェア調達、OS 管理、ソフトウェアパッチ等)を AWS に任せつつ、高可用性とスケーラブルな RDB を利用できる。

4. セキュリティと認証・認可

RDS では以下のセキュリティモデルを利用できる:

  • VPC 内配置: インスタンスをプライベートサブネットで保護し、セキュリティグループで通信を制御
  • 暗号化: KMS を利用した暗号化をオプションとして有効化し、スナップショットやバックアップも含めた保護
  • AWS IAM 連携: IAM Database Authentication(MySQL、PostgreSQL 対応)で IAM ユーザーを DB 認証に利用可能
  • ログ監査: エンジンごとのエラーログ、スロークエリログなどを CloudWatch Logs に転送し、監査しやすくする

5. 料金形態

RDS の料金は以下に基づく:

  • インスタンスタイプ: 選択する CPU/メモリ性能と稼働時間の従量課金
  • ストレージ: プロビジョンド IOPS、汎用 SSD などのタイプと容量に応じた課金
  • IOPS: 高速ストレージモードを選択時、指定した IOPS に応じて追加コスト
  • データ転送料: リージョン外への転送やクロスリージョンレプリカで発生する通信料金

6. よくあるアーキテクチャ・設計パターン

RDS を活用するアーキテクチャ上のパターンは下記の通りである:

  • マルチ AZ で高可用性: プライマリ&スタンバイ構成でフェイルオーバー対応
  • リードレプリカで読み込み分散: 運用報告ダッシュボードや分析クエリをレプリカへ振り分け
  • サーバーレスアプリ: Lambda や API Gateway から RDS へ直接接続(VPC 内)し、小規模アプリを構築
  • オンプレとのハイブリッド: Direct Connect や VPN を使い、オンプレシステムの DB を RDS へ移行またはレプリケーション

7. 設定・デプロイ手順(ハンズオン例)

  1. AWS コンソールで「RDS」を開き、「データベースの作成」をクリック
  2. データベースエンジンを選択(例: MySQL、PostgreSQL など)、テンプレート(Dev/Test、Production)を指定
  3. インスタンスタイプやストレージサイズを選択し、マルチ AZ オプションを ON にするか決める
  4. VPC、サブネットグループ、セキュリティグループを設定し、パブリックアクセスの可否を指定
  5. DB インスタンス識別子、マスターユーザー名/パスワードを入力して「作成」
  6. 作成後、エンドポイントが発行されるのでクライアントやアプリケーションから接続テスト

8. 試験で問われやすいポイント

8.1 マルチ AZ とリードレプリカの違い

  • マルチ AZ: 同期的にスタンバイへレプリケーションし、障害時のフェイルオーバーを提供
  • リードレプリカ: 非同期的にレプリケーションし、読み取り負荷を分散。障害時の自動昇格はエンジンによって異なる

8.2 セキュリティグループとネットワーク構成

  • VPC 内: パブリックアクセスをオフにすると安全性向上
  • セキュリティグループ: アプリサーバのみが DB ポートにアクセスできるよう制限
  • IAM DB 認証: 各ユーザー固有の IAM 認証で、DB ユーザー管理を簡素化

8.3 バックアップとリストア

  • 自動バックアップウィンドウ: 指定時間にスナップショットを取得
  • Point-in-Time リカバリ: 障害発生時に過去の任意時点へロールバック
  • 手動スナップショット: 特定の状態を保持するためのスナップショット

8.4 スケーリングと性能調整

  • インスタンスタイプ変更: CPU/メモリ性能をアップダウン
  • ストレージ増加: スナップショット無しで拡張が可能(エンジンによるが拡張が容易)
  • パラメータグループ: DB 固有の設定(例: max_connections など)を一括管理

8.5 料金とコスト最適化

  • リザーブドインスタンス: 長期利用なら 1 ~ 3 年の予約でコスト削減
  • Auto Scaling Storage: Aurora など一部エンジンでは容量を自動調整し、過剰プロビジョニングを防ぐ
  • リードレプリカ最適化: 不要なレプリカを作りすぎないように管理

8.6 試験で頻出となる具体的な問われ方と答え

  • Q: RDS で高可用性を実現するには?
  • A: マルチ AZ 配置を有効にして、プライマリ障害時にはスタンバイへ自動フェイルオーバー。
  • Q: 読み取り負荷を分散したい場合は?
  • A: リードレプリカを作成し、アプリ側で読み込みトラフィックを分散。
  • Q: バックアップで過去に戻すには?
  • A: ポイントインタイムリカバリ(PITR)を使い、指定日時の状態に復元。
  • Q: パブリックアクセスを有効にするリスクは?
  • A: インターネットから直接 DB にアクセス可能になるため、基本的には安全な VPC 内運用を推奨。
  • Q: MySQL/PostgreSQL で IAM Database Authentication を使うメリットは?
  • A: DB ユーザー管理を IAM で一元管理でき、パスワードローテーションも容易。