AWSのAuroraについてまとめています。
AWS Auroraは高性能なRDBサービス
AWS Auroraとは、Amazon RDS(データベースサービス)で選べるDBエンジンの一つです。
関連)Amazon Aurora(高性能マネージドリレーショナルデータベース)| AWS
AWS Auroraには、MySQL互換エディションと、PostgreSQL互換エディションがあります。DBMS部分とストレージ部分が完全に切り離されているのが特徴。
Auroraには、データの読み書きをおこなうMaster(プライマリDBインスタンス)と、Masterと同じストレージボリュームに接続して読み取りオペレーションのみをサポートするRead Replicaで構成されます。
関連)Amazon Aurora DB クラスター – Amazon Aurora
このため、変更をおこなうMasterとデータ読み込み時に使われるRead Replicaが同一のストレージにアクセスできます。データベースのレプリケーションのための「Masterでおこなった変更をレプリカに反映させる」という手順が不要になります。結果として、Read Replicaを増やすことで読み込み速度を上げることが可能になります。
参考)Amazon Auroraがなぜ高速か解説する – OthloBlog – オスロブログ –
このため、Amazon Aurora は、エンタープライズデータベースのパフォーマンスと可用性に加えて、OSSベースのデータベースのシンプルさとコストの安さを兼ね備えていることになります。
具体的には、どの程度のパフォーマンスやコストの安さが実現できるのでしょうか?
公式サイトによれば、Amazon Aurora は、標準的な MySQL データベースと比較して最大 5 倍、PostgreSQL データベースと比較して最大で 3 倍高速となっています。それでいて、商用データベースと同等のセキュリティ、可用性、信頼性を実現するためのコストが10 分の 1で済みます。Amazon Aurora は Amazon Relational Database Service (RDS) を使った完全マネージド型サービスなので、ハードウェアのプロビジョニング、データベースのセットアップ、パッチ適用、バックアップといった時間のかかる管理タスクが自動化することができます。
ストレージ容量に関してもDBインスタンスごとに最大128TBまで自動的にスケールされます。Amazon Aurora のストレージシステムは、分散型。耐障害性と自己修復機能を備えています。Amazon Aurora は、最大15個まで持てるリードレプリカにより特にデータ読み出し時のパフォーマンスを発揮します。また、ポイントインタイムリカバリ(スナップショット)、Amazon S3 へのバックアップ、3 つのAZ間でのレプリケーションにより障害発生時の可用性についても期待できます。
AWS auroraのメリット
OSSベースのデータベースである、MySQLやPostgreSQLと互換性を持ち、クラウドならではのパフォーマンス(性能)と、高可用性、安全性を備えている点がメリットです。
このため、既存のMySQLやPostgreSQLの移行先として注目されています。既存のデータベースサーバのパッチ適用や障害時の運用などのコストを大幅に削減できる上、「データベース容量が足りなくなってきた…」という場合でも新規にハードウェアを調達してシステム更改することなく自動的に容量をスケール(最大128TB)できるんですね。
AWSならではのセキュリティの高さもポイントです。Amazon VPC によるネットワーク分離、AWS Key Management Service (KMS) のキーによる保管時の暗号化、転送中データの SSL による暗号化など、安全性についても安心。Amazon Auroraインスタンスでは、基盤ストレージが暗号化され、クラスター内にある自動化バックアップ、スナップショット、レプリカも暗号化されます。
【関連記事】
▶MySQLやPostgreSQLをお使いの方へおススメ!Amazon Aurora
AWS Auroraの料金
AWS Auroraは従量課金制で、初期費用や最低料金設定はありません。
DBインスタンス料金に加え、ストレージ料金とI/O料金がかかります。
DBインスタンスは、スタンダートインスタンスとメモリ最適化インスタンスがあり、インスタンスの種類とリージョンによって料金が異なります。また、インスタンスを用意せずにデータベースクエリをおまかせ実行できるAmazon Aurora Serverlessは、アプリケーションのニーズに沿ってDB容量を自動調整するオンデマンドの Auto Scaling 構成となっていて、別の料金体系が用意されています。
AuroraキャパシティーユニットのACU時間料金がかかるんですね。
AWS auroraとRDSの違い
AWS AuroraはAmazon RDSのサービスの一部です。データベースエンジンを選択する箇所で、選択肢としてMySQLやPostgreSQLと同列にAmazon auroraが出てくるんですね。
参考)DB インスタンスを作成する – Amazon Relational Database Service
RDSでMySQLを選ぶのと、RDSでAmazon Auroraを選びMySQL互換エディションを使うのとでは何が違うのでしょうか? データベースとしてMySQLやPostgreSQLを使う場合、何を基準にRDSかAmazon Auroraかを選べばよいのでしょう?
【関連記事】
▶Amazon RDSでデータベースを簡単に構築できます!
まず、Amazon Auroraは並列クエリによる高性能な点、バックアップ、リストア、リカバリーが早い点がメリットとして挙げられます。デメリットは、対応バージョンが異なる点。RDSでは比較的古いバージョンのMySQLやPostgreSQLにも対応していますが、Auroraでは、最新バージョンか準最新バージョンのみ。アプリケーション等の仕様でデータベースのバージョンが決まっている場合、ケースによってはRDSしか選べないということもあります。
もうひとつはコスト面。インスタンス料金はAmazon Auroraの方が高めです。単純にDBインスタンス1個、他は最低限で良いという場合にはRDSが安くなります。しかし、可用性を持たせるために複数構成にしたり、災害対策で異なる拠点にインスタンスやストレージを起きたい(Multi-AZ)の場合、Auroraの方が安くなるケースがあります。負荷を分散するためにレプリケーションをおこなう場合でも、RDSではレプリケーションのインスタンスを増やすごとにストレージ容量も増えますが、Auroraではリードレプリカのインスタンス料金はかかりませんし、ストレージもプライマリ領域を共有するためストレージ料金もかかりません。
コストを検討する場合には、構成をある程度詰めてから見積もる必要があるんですね。
AWS Auroraのまとめ
- AWS Auroraは、RDSで選べるデータベースエンジンでMySQLとPostgreSQL互換バージョンあり
- Auroraはオリジナルと比べて、MySQLで最大5倍、PostgreSQLで最大3倍高速
- 要件によって、RDS上のMySQLやPostgreSQLと、Auroraとでコストの優位性が逆転する可能性あり