[比較] RDS vs RDB on EC2:Oracle編
2018年6月6日追記:
最新の情報にて更新した記事を公開しました。以下の記事を参照ください。
こんにちは、菊池です。
AWSでOracleDBを利用する場合、マネージドサービスであるRDSを使うか、EC2インスタンスに構築するかの2通りの方法があります。どちらの方針を採用するか、決定するにあたっての検討ポイントを整理しました。
比較ポイント
- 利用料金
- 利用できるリソース
- 機能差
- 構築/運用
利用料金
RDSの場合はライセンス込み/BYOLからの選択、EC2の場合はBYOLのみとなります。ちなみに、Enterprise EditionではRDSでもBYOLのみとなります。
同条件とするため、BYOL/シングル構成とした場合のインスタンス費用を比較してみます。なお、EC2はOSをRHELとした場合の利用料です。(2016/10/4時点、東京リージョン)
インスタンスタイプ | vCPU | メモリ | EC2時間単価 | RDS時間単価 |
m4.large | 2 | 8 | $0.234 | $0.254 |
m4.xlarge | 4 | 16 | $0.408 | $0.508 |
m4.2xlarge | 8 | 32 | $0.825 | $1.017 |
m4.4xlarge | 16 | 64 | $1.521 | $2.034 |
m4.10xlarge | 40 | 160 | $3.607 | $5.087 |
m4.16xlarge | 64 | 256 | $5.693 | - |
m3.medium | 1 | 3.75 | $0.156 | $0.120 |
m3.large | 2 | 7.5 | $0.253 | $0.240 |
m3.xlarge | 4 | 15 | $0.445 | $0.485 |
m3.2xlarge | 8 | 30 | $0.900 | $0.965 |
r3.large | 2 | 15 | $0.260 | $0.285 |
r3.xlarge | 4 | 30.5 | $0.459 | $0.570 |
r3.2xlarge | 8 | 61 | $0.928 | $1.135 |
r3.4xlarge | 16 | 122 | $1.726 | $2.270 |
r3.8xlarge | 32 | 224 | $3.322 | $4.540 |
x1.32xlarge | 128 | 1952 | $19.471 | - |
m3.medium/m3.largeを除いて、RDSの方が高額です。マネージドサービスとしての付加機能がありますので妥当かと思います。また、インスタンスが大きいほど価格差が広がっています。
なお、可用性向上のため、EC2を2台構成にした場合、RDSをマルチ-AZにした場合はそれぞれ2倍の費用になります。
利用できるリソース
最大インスタンス
上記表でも分かる通り、現時点ではRDSにm4.16xlarge、x1.32xlargeは提供されていませんので、RDSに利用できる最大インスタンスタイプは以下のいずれかになります。
- CPU重視:db.m4.10xlarge(40vCPU/160GiBメモリ)
- メモリ重視:db.r3.8xlarge(32vCPU/224GiBメモリ)
ストレージ
RDSにアタッチできるストレージは1つのみで、最大6TB/30,000IOPSまでとなっています。また、ストレージが1つのため、REDOログ/アーカイブログの領域を分けるなどの構成や、高速化のために複数のボリュームを束ねて利用することもできません。
機能差
RDSでは利用できないOracleの機能がいくつかあります。以下に例をあげます。
- Data Guard/Active Data Guard(11g/12c)
- Automated Storage Management(11g/12c)
- Database Vault(11g/12c)
- Locator(11g/12c)
- Java のサポート(11g/12c)
- Spatial(11g/12c)
- マルチテナントデータベース(12c)
- Oracle Enterprise Manager Grid Control(11g)
- Oracle Label Security(11g)
このうち、Data Guardのようなレプリケーション機能についてはマルチ-AZ構成が提供されます。ただし、レプリケーションからの読み込みが可能になるActive Data Guardに相当する機能はRDS(Oracle)には現時点で提供されていません。
なお、Oracle 12cでは Label Security、Oracle Enterprise Manager Cloud Controlがサポートされるようになりました。
- Amazon RDS for Oracle が Oracle Label Security (OLS) オプションをサポート
- Amazon RDS for Oracle が Oracle Enterprise Manager (OEM) Cloud Control をサポート
構築/運用
構築
RDSの最大の利点といえるのは、利用開始に必要なリードタイムの短さです。RDSであれば10分程度でマルチ-AZ構成のインスタンスが起動し、利用が開始できます。一方、EC2で同等の構成を作る場合には、
- OSの設定
- データベースSWのインストール/設定
- Data Guard または他のクラスタSWのインストール/設定/テスト
といった作業が必要になってきますので、短くても数日のリードタイムが発生します。
また、短時間で構築できるということは、環境の再作成や破棄のハードルも下がるということです。一方で、多くのコストをかけて構築した環境だと、再構築が必要な場合や不要になった場合にも容易には判断できなくなります。
運用
EC2の場合にはユーザで管理・適用作業が必要となるOS/MWのパッチですが、RDSの場合には容易に適用可能です。一方で、RDSではメンテナンス時間を完全にコントロールできないケースもあります。
また、RDSではスナップショットやリカバリもサービスとして提供されるため、維持運用の負荷を下げることができます。
まとめ
RDSでは選択可能なリソースや利用できる機能に制限はある一方、構築/運用にかかる時間的/人的コストを大きく下げることが可能です。なので、まずはRDSを前提に検討し、以下のような点で妥協できない場合にはEC2にDBを導入する方針にするのがよいのではないでしょうか。
RDB on EC2を選ぶ理由
- RDSで提供されていないインスタンスタイプ/ストレージの利用が必要
- RDSでサポートされない機能の利用が必須
- OS/MWまで含めたチューニング・管理が必要
参考資料
- Amazon RDS for Oracle Database
- RDSユーザーガイド:Amazon RDS での Oracle
- SlideShare:WS Black Belt Online Seminar 2016 RDBのAWSへの移行
- Developers.IO:OracleをRDSで使うときの選択のポイント