Auroraか(非Auroraな)RDSか。比較した上でどちらを使う?
目次
Amazon RDSの概要
Amazon RDSとは、AWS(Amazon Web Services)が提供しているデータベースサービスです。正式名称は「Amazon Relational Database Service」と言い、その文字通り、リレーションデータベースを提供しているサービスです。Oracle DatabaseやMicrosoft SQL Serverなどの商用RDBMSや、MySQLやPostgreSQLなどのオープンソースRDBMSを選択することができます。
さらに、Amazon RDSでは、AWSが独自に再設計したRDBMSである「Amazon Aurora」が利用可能です。この2種類のサービスにおいて、それぞれどのようなメリットや違いがあるのかを、記載していきます。
マネージドデータベースを活用して運用コストを引き下げるスタイルズのAWS導入・移行サービスはこちら→
(非Auroraな)RDSのメリット
一般的に「データベース」というと、サーバーにミドルウェアとしてインストールし、稼働させるケースが考えられますが、Amazon RDSは、データベースをあらかじめセットアップされた状態で提供しており、パッチ適用やバックアップもAWSがユーザーの代わりに運営(マネージ)してくれます。
このようなクラウド提供業者によりある程度運用管理が代行されているサービスをマネージドサービスといいます。マネージドサービスとしてのデータベースのメリットとは、『データベースの難しい運用をAWSに所属する凄腕エンジニアに委任できる』ということにつきます。
一般的にデータベースの運用は、データのバックアップや容量の拡張・予測、レプリケーションの設定・運用など、様々なコストがかかります。マネージドサービスを使うことによって、このようなデータベースの運用において困難な部分に対してコストをかけること少なくすることができるだけでなく、データベースの安定稼働を実現することができます。また、運用に割いていた人的リソースやコストを他に注力させることができるので、経営を効率化することができます。
(非Auroraな)RDSの具体的な機能
先述のメリットを実現する具体的な機能としては、下記の2点があります。下記のような設定を、1クリックで導入することができます。
- 可用性とスケーラビリティも高める新「マルチAZ配置オプション」
別のAZにスタンバイデータベースを構成することができます。マルチAZ構成を用いることによって一つのAZで障害が発生しても他の正常なAZを使用して稼動を継続させることができ、データベースの可用性を向上させることができます。データは同期レプリケーションです。 - データの読み取り性能を向上させる「リードレプリカオプション」
リードレプリカは読み取り専用のDBのことです。アクセス数が多くDBに読み取りが負荷が起きている場合などは、リードレプリカを構築することでプライマリデータベースへの負荷を分散することができます。スタンバイと異なり、データは非同期でレプリケーションされます。
Auroraのアーキテクチャー(RDSとの違い)
AuroraとAuroraでないRDSの大きな違いは、『クラスタ』と『ストレージ』にあります。まずは、『クラスタ』についてです。Auroraはクラスタという単位で構成されています。クラスタとは、Auroraのデータベースを作成した際に作られるコンポーネント全体、つまりデータベースの管理単位と考えてください。
次に『ストレージ』についてです。クラスタの要素は1つ以上のDBサーバーで構成されるインスタンス層とデータを管理するストレージ層の2層で成り立っています。つまり、SQL解析などの処理を行うインスタンスとデータを保存するストレージが分離しています。また、データを保管するストレージは、1AZあたり2箇所、3AZに渡り、合計6箇所にコピーされています。このような構成にすることで、仮にネットワーク障害、ディスク破損などの問題が起こっていたとしても、データベースの稼働に影響がないようにし、可用性の向上に貢献しています。
Auroraの特徴
Auroraは、主に下記のような特徴を持っており、AuroraでないRDSと比較して高性能になっています。
- 豊富なオプション
従来のシングルマスター構成とは異なり、複数のプライマリDBを使用可能なマルチマスタークラスター、複数のAWSリージョンにまたがり高速でレプリケーションとフェイルオーバが可能になるグローバルデータベースといった、様々なオプションが用意されており、RDSよりも高可用性が実現できるオプションが用意されています。 - 高速化の仕組み
プライマリインスタンスが持っているキャッシュを、他のインスタンスと共有することができるクラスタキャッシュという機能があります。これにより、障害でフェールオーバーが発生した先でもキャッシュを共有することができ、フェールオーバー先でも高速なデータベースの処理を継続することが可能です。 - 選択できるデータベースエンジンが少ない
こちらは、AuroraでないRDSと比較と比較した場合のデメリットとなりますが、OracleやMicrosoft SQL Serverなどの一般的な商用データベースエンジンを使いたい場合はAuroraは使用できませんあくまでMySQLやPostgeSQL互換のデータベースエンジンとしてAuroraを利用することができます。
Auroraの料金体系と(非Auroraな)RDSの料金体系
AuroraとRDSについて、料金体系について比較をしてみます。それぞれ、従量課金であることには変わらないのですが、従量課金の対象となる項目が異なっています。
RDS…DBインスタンスの起動時間+ストレージの容量に応じた料金
Aurora…DBインスタンスの起動時間+ストレージの容量に応じた料金+I/Oリクエスト数
このように、Auroraの料金ではI/Oのリクエストによる課金も発生します。東京リージョンでは、100万件のリクエストあたり0.24ドル(2022年5月)となっていますが、データベースは読み書きの頻度が多く発生するという特徴もあり、I/Oリクエスト部分は無視できない課金項目となります。また、インスタンスのタイプによる料金もAuroraのほうが高くなっています。
RDSの方が絶対安いのか?
料金体系を鑑みると、Auroraが割高となり、RDSの方が安くなることが多いです。ただし、要件によってはAuroraのほうが割安になる場合もあります。具体的な要件について見ていきましょう。
- データの耐久性は必要だが、データベースの可用性は必要ない場合
Auroraは、DBインスタンスが一台つまりシングルAZであっても、ストレージ部分は3AZにまたがって6つのコピーを持つようになっています。また、シングルAZでも、Auroraはインスタンスの自動復旧を行なう機能が備わっています。したがって、データの耐久性は必要だがある程度障害が許容できるような要件であれば、RDSでマルチAZ構成をとるよりもAuroraのシングルAZのほうが要件に合致しており、コスト効率も高いと考えることができます。 - 性能を出したい場合
リードレプリカを設置、かつマルチAZ構成にしたいケースを考えます。このケースでは、RDSでは最低インスタンス3台(プライマリ、スタンバイ、リードレプリカ)から始める必要がありますが、Auroraでは2台(プライマリ、リードレプリカ(スタンバイの役割兼務))のインスタンスで済みます。また、クラスタキャッシュ機能により、フェールオーバーが発生してもAuroraの場合は性能を落とさずに利用を継続することができます。このように、性能をある程度担保しつつ、可用性を高めたい場合はAuroraのほうが向いている場合があります。
- 構築時の工数を削減したい場合
開発したAWSによると、MySQLと互換性のあるバージョンと、PostgreSQLと互換性のあるバージョンではそれぞれMySQLの最大5倍、PostgreSQLの最大3倍高速であるとされています。したがって、ある程度チューニングなどの工数を削っても一定以上の性能をだすことができます。チューニングなどの有識者がいない場合でも、新たに人を雇うコストと時間をかけるよりは、Auroraを選択するといいでしょう。
マネージドデータベースを活用して運用コストを引き下げるスタイルズのAWS導入・移行サービスはこちら→
まとめ
上記に記載したケース以外でも、Aurora Serverlessなどを現在では選択できるようになっています。RDS、Aurora、Aurora Serverlessなどの選択肢の中から、最適なデータベースを選択するにはある程度知識が必要になってきます。判断に迷う場合には、AWSに詳しいベンダーに相談するといいでしょう。