【AWS】AuroraとRDSの違いチートシート

AWS Certified - Database Specialty(DBS-C01)の勉強をしていたとき、問題集でAuroraやRDSの違いに関する問題をやたらとみかけたので、自分用にメモとしてまとめました。

この記事では、そのメモをベースとした、試験対策やデータベースアーキテクチャ選定の際の参考資料として活用できるチートシートをご紹介します。

# チートシート

| 項目                              | Amazon Aurora                       | Amazon RDS                          |
|-----------------------------------|------------------------------------|------------------------------------|
| インスタンスとストレージの分離   | あり（独立してスケーリング可能）    | なし                                  |
| レプリカ                          | Auroraレプリカ（最大15個まで）     | スタンバイインスタンスとリードレプリカ |
| ストレージの指定と料金            | 指定不要、使用分のみ料金発生       | ストレージタイプと容量を指定、料金はプランによる |
| Aurora Serverless                      | あり（インスタンスタイプ指定なし、自動スケーリング）           | なし                                                            |
| Advanced Auditing                      | あり（Aurora独自の監査機能）                                     | なし（AWS CloudTrailや外部監査ツールを使用）                      |
| クエリの並列化                         | あり（インスタンスとストレージの分離による高速データ処理）     | 一部DBエンジンで可能（パフォーマンスはAuroraより劣る可能性あり） |
| クラスターパラメータグループで設定変更 | あり（バイナリログやS3との連携設定など）                        | あり（DBパラメータグループを利用）                              |
| ゼロダウンタイムパッチ適用 (ZDP)       | あり（データベースパッチ適用時のダウンタイム最小限）           | なし（メンテナンスウィンドウ内でパッチ適用）                    |
| Point-In-Time Recovery (PITR)          | あり（復元時間が5分以内）                                | あり（復元時間が5分以上）                                      |
| SQLクエリ形式でS3へデータをエクスポート | あり（データのバックアップや外部システムへの移行が容易） | 一部DBエンジンで可能（機能はAuroraより限定的かも）   |
| CloudWatchメトリクス                   | あり（豊富なメトリクスで運用監視が容易）                 | あり（Auroraほどのメトリクスは提供されていない可能性あり） |
| 障害挿入クエリ                         | あり（システムの耐障害性を試験的に確認）                 | なし                                                           |
| データベースアクティビティストリーム   | あり（Kinesis Data Streamsとリアルタイム連携）          | 一部DBエンジンで可能（機能はAuroraより限定的かも）   |
| Aurora MySQLからLambda関数を呼び出す | あり（データベースとサーバーレスアーキテクチャの統合）   | 一部DBエンジンで可能（機能はAuroraより限定的かも）   |
| 機械学習サービスとの連携           | あり（Amazon SageMakerやAmazon Comprehendと連携可能）   | 一部DBエンジンで可能（機能はAuroraより限定的かも）   |

# 補足説明
各項目について、簡単に補足します。

## インスタンスとストレージの分離
Amazon Auroraでは、インスタンス（計算能力）とストレージ（データ保存）が分離されています。この設計により、インスタンスとストレージのスケーリングが独立して行われ、リソース使用率が最適化されます。また、ストレージの自動拡張機能があり、利用量に応じて容量が自動的に増減されるため、ストレージ管理が容易になります。

## レプリカ
Auroraレプリカは、Amazon RDSのスタンバイインスタンスとリードレプリカを兼ねており、読み取り専用のインスタンスとして機能します。これにより、リードトラフィックを複数のインスタンスに分散させることができ、パフォーマンスの向上が期待できます。また、最大15個のAuroraレプリカを作成できるため、大規模な読み取り負荷にも対応できます。

## ストレージの指定と料金
Auroraでは、ストレージタイプと容量を指定する必要がありません。料金は使用分のみ発生します。

## Aurora Serverless
Aurora Serverlessは、インスタンスタイプを指定せずに自動的にCPUやメモリをスケーリングするオプションです。これにより、データベースの容量プロビジョニングやスケーリングに関する運用負荷が軽減され、コスト効率が向上します。

## Advanced Auditing
Advanced Auditingは、Aurora独自の監査機能で、データベースのアクセスや操作に関する詳細なログを取得できます。これにより、セキュリティ監査や運用監視が容易になります。

## クエリを並列化
Auroraでは、インスタンスとストレージが分離されていることから、クエリの並列処理が可能になります。これにより、高速なデータ処理やレスポンスが実現され、パフォーマンスが向上します。

## クラスターパラメータグループで設定変更
Auroraでは、DBクラスターパラメータグループを利用して、バイナリログやS3との連携設定などのデータベース設定を変更できます。これにより、データベースの挙動を柔軟にカスタマイズすることができます。

## ゼロダウンタイムパッチ適用(ZDP)
Auroraでは、ゼロダウンタイムパッチ適用（ZDP）という機能があります。これにより、データベースのパッチを適用する際に、システムのダウンタイムを最小限に抑えることができます。これにより、システムの可用性が向上し、運用負荷が軽減されます。

## Point-In-Time Recovery（PITR）
Auroraでは、Point-In-Time Recovery（PITR）を利用して、データベースを特定の時点まで復元することができます。AuroraのPITRは、復元時間が5分以内と短く、RDSの5分よりも高速に復元を行うことができます。これにより、データ損失のリスクを最小限に抑えることができます。

## SQLクエリ形式でS3へデータをエクスポート
Auroraでは、SQLクエリ形式でデータをS3にエクスポートすることができます。これにより、データのバックアップや外部システムへの移行が容易になります。

## CloudWatchメトリクス
Auroraでは、Amazon CloudWatchメトリクスを利用して、データベースのパフォーマンスやリソース使用状況を監視できます。クラスターメトリクス（ストレージ使用量、IOPS）やインスタンスメトリクス（CPU/メモリ使用率）など、豊富なメトリクスが提供されており、運用監視が容易になります。

## 障害挿入クエリ
Auroraでは、障害挿入クエリを使用して、インスタンスやストレージの障害を意図的に発生させることができます。これにより、システムの耐障害性を試験的に確認することができます。

## データベースアクティビティストリーム
データベースアクティビティストリームを利用することで、データベースのアクセスや操作に関する情報をリアルタイムでAmazon Kinesis Data Streamsに連携できます。これにより、セキュリティ監査や運用監視がより効率的に行えます。

## Aurora MySQLからLambda関数を呼び出す
Aurora MySQLでは、Lambda関数を呼び出すことができます。これにより、データベータベースとサーバーレスアーキテクチャを統合し、柔軟なアプリケーション開発が可能になります。Aurora MySQLを使用することで、データベースからAWS Lambda関数を直接呼び出すことができます。これにより、データベースのイベントやトリガーに基づいてサーバーレスアーキテクチャを利用したアプリケーション開発が容易になります。

## 機械学習サービスとの連携
Auroraは、Amazon SageMakerやAmazon Comprehendなどの機械学習サービスと連携が可能です。これにより、データベース内のデータを活用して、機械学習モデルの学習や推論を行うことができます。データ分析や予測など、機械学習を活用したアプリケーション開発が容易になります。

# 参考資料

https://amzn.asia/d/d7Ytq3v