【AWS】RDS(Relational Database Service)とは?【初心者向け】

AWS

RDS(Relational Database Service)はAWS上にDBを構築できるサービスです。マネージド・サービスではありますが、DBサービスに対してのパラメータ設定等は行うことができます。
構築そのものは管理コンソールから数クリックで構築可能であるなど、容易に構築・運用が可能になるように設計されていますね。
DBの管理コストの削減、高い可用性・耐久性を実現するソリューションです。

RDSとは?

超簡単にどんなものか?というと、

  • メジャーなDBMSをAWS上にクリックorAPI実行だけで構築できる
  • スペックのアップダウンができる
  • 冗長構成にすることができ、AZを分けて配置することで可用性を確保できる
  • データ移行ツール(DMS)も提供されている

といった感じです。
アイコンは変更後のアイコンで、以下のやつが使われてますね。

この後メリット・デメリットを説明します。

RDSのメリット

  • 高い可用性と耐久性
  • 高いスケーラビリティ
  • 管理コストの削減が見込める(管理が容易)
  • 最適化SSDと汎用SSDが選択できる
  • DBMSの選択肢がAuroraに比べて広い
ad

RDSのデメリット

  • EC2に比べコストが高い
  • Local接続できない
  • AZを跨ぐ通信はパフォーマンスが落ちる
  • スケールアップ・ダウンの際に一時的にDBが停止する(再起動される)
  • RDSの再起動を行うとマスターDBがスレーブDBと入れ替わることがある

順番に解説していきます。

高い可用性と耐久性

「マルチAZ」を選択することで、別のAZにスレーブDB(リードレプリカ)を自動で作成しデータ同期を行ってくれます。
これにより、マスターDBが何らかの理由でダウン、マスターDBのAZがダウンした場合などにスレーブDBに即座に切り替えることができます。(自動で切り替わることもある)
※ただしコストは増える
テスト用、検証用のDBはマルチAZにせず本番(商用)DBのみマルチAZを有効にすることが多いかと思います。(コストダウンの為)
また、バックアップをS3に取ることができS3にとったバックアップから復元することもできます。

高いスケーラビリティ

管理コンソール、またはAPIの実行で簡単にスケールアップ・ダウンが行えます。アップダウンは幅広く用意されているので選択肢は豊富。
また、ストレージ容量に関しては自動拡張することもでき、ダウンタイムなしでストレージ容量を増やすことができるなどスケーラビリティは高いです。
※ただし、スケールアップ・ダウンに関してはサービス停止が発生します。

DBMSの選択肢がAuroraに比べて広い

Auroraでは、MySQLベースかPostgreSQLベースしか選択できませんがRDSの場合は、

  • Aurora
  • PostgreSQL
  • MySQL
  • MariaDB
  • Oracle
  • SQL Server

と、主要なDBMSを選択することができます。
ちなみにEC2インスタンスを作成し、EC2の中に自分でDBをインストール・構築することも当然可能ですがこの場合はオンプレミスとほとんど変わらなくなってしまうので運用コストとしては増加します。

EC2に比べコストが高い

例えばEC2に自分でMySQLをインストールし運用した場合と、RDSのMySQLを利用した場合とではRDSのコストのほうが高いです。
実際にどのぐらい高いか?はAWSのEstimateツールで計算するのが良いです。
RDSはマネージド・サービスなので、EC2よりコストがかかるのはやむを得ないですね。

Local接続できない

DBサーバに直接SSHでログインしてローカル接続する、といったことはできません。RDSのサーバにSSHでログインはできないためです。
そのためRDSのDBに接続するためには、

  • EC2のインスタンスからDBクライアントを使って接続する
  • Direct Connectを使って、自PCから接続する

などが必要になります。
※インターネットに対してポートフルオープンでも接続できるが絶対にNG

AZを跨ぐ通信はパフォーマンスが落ちる

RDSのマスターDBをap-northeast-1a、リードレプリカをap-northeast-1cに配置しアプリケーションをEC2のap-northeast-1a、ap-northeast-1cに冗長構成にした場合ap-northeast-1cのアプリケーションから、ap-northeast-1aへのDBアクセスのパフォーマンスが悪い(つまりアベイラビリティゾーンを跨ぐ通信はパフォーマンスが落ちる)ということが発生します。
詳細はこちらの記事で記載しています。

まとめ

以上、RDSについての記事でした。
便利なサービスではありますので上手に使っていきたいですね!
なお、Auroraと迷う場合が多いと思いますがAuroraのほうが管理面では楽なので新規に構築する場合は良いのではというふうに考えてます。
既存システムのAWS移行等の場合はRDSのほうが手堅い印象ですね。