[2018年版] RDS for Oracle と Oracle on EC2 の比較
こんにちは、菊池です。
AWSでOracleDBを利用する場合、マネージドサービスであるRDSを使うか、EC2インスタンスに構築するかの2通りの方法があります。その検討ポイントとして以前、以下のような記事を書きました。
PV数をみると、今でもかなり参照して頂いているようです。しかし、すでに投稿時から2年近く経過しており、現状では正確な情報とはいえない状況になっています。というわけで、現時点での最新情報にて改めてまとめてみたいと思います。
比較ポイント
- エディションとバージョン
- 利用料金
- 利用できるリソース
- 機能差
- 構築/運用
RDSで利用できるエディションとバージョン
RDSでは、エディションとバージョンの組み合わせによって提供有無が異なります。
Oracleのエディション | バージョン 12.1.0.2 | 11.2.0.4 |
Enterprise Edition(EE) BYOL | ○ | ○ |
Standard Edition 2(SE2)BYOL | ○ | - |
Standard Edition 2(SE2)ライセンス込み | ○ | - |
Standard Edition 1(SE1)BYOL | - | ○ |
Standard Edition 1(SE1)ライセンス込み | - | ○ |
Standard Edition (SE)BYOL | - | ○ |
また、利用可能なインスタンスタイプも異なりますので、以下の表も合わせて参照ください。EC2にインストールして利用する場合には、ライセンス条項の制限が適用されます。
利用料金
2018年6月時点のインスタンス利用料です。
- 料金は以下の条件
- 東京リージョンの1時間あたりのオンデマンド利用料
- EC2はRHEL(Red Hat Enterprise Linux)を対象とする(Oracleのサポート条件を考慮)
- RDSはいずれもシングルAZ(マルチAZの場合には概ね2倍)
- RDS単価(SE1/SE2)はライセンス込みの価格
- 利用料「-」のインスタンスタイプは提供されていない
インスタンスタイプ | vCPU | メモリ | EC2単価 | RDS単価(BYOL) | RDS単価(SE1) | RDS単価(SE2) |
t2.micro | 1 | 1 | $0.0752 | $0.026 | $0.041 | $0.044 |
t2.small | 1 | 2 | $0.0904 | $0.052 | $0.082 | $0.088 |
t2.medium | 2 | 4 | $0.1208 | $0.104 | $0.164 | $0.176 |
t2.large | 2 | 8 | $0.1816 | $0.209 | $0.38 | $0.411 |
t2.xlarge | 4 | 16 | $0.3032 | $0.4184 | - | $0.8224 |
t2.2xlarge | 8 | 32 | $0.6164 | $0.8368 | - | $1.6448 |
m3.medium | 1 | 3.75 | $0.156 | $0.12 | $0.245 | $0.263 |
m3.large | 2 | 7.5 | $0.253 | $0.24 | $0.49 | $0.527 |
m3.xlarge | 4 | 15 | $0.445 | $0.485 | $0.98 | $1.054 |
m3.xlarge | 8 | 30 | $0.9 | $0.965 | $1.96 | $2.107 |
m4.large | 2 | 8 | $0.189 | $0.254 | $0.483 | $0.519 |
m4.xlarge | 4 | 16 | $0.318 | $0.508 | $0.969 | $1.042 |
m4.2xlarge | 8 | 32 | $0.646 | $1.017 | $1.937 | $2.082 |
m4.4xlarge | 16 | 64 | $1.162 | $2.034 | $3.874 | $4.165 |
m4.10xlarge | 40 | 160 | $2.71 | $5.087 | - | - |
m4.16xlarge | 64 | 256 | $4.258 | $8.1408 | - | - |
r3.large | 2 | 15 | $0.26 | $0.285 | $0.525 | $0.564 |
r3.xlarge | 4 | 30.5 | $0.459 | $0.570 | $1.05 | $1.129 |
r3.2xlarge | 8 | 61 | $0.928 | $1.135 | $2.10 | $2.258 |
r3.4xlarge | 16 | 122 | $1.726 | $2.270 | $4.20 | $4.515 |
r3.8xlarge | 32 | 224 | $3.322 | $4.540 | - | - |
r4.large | 2 | 15.25 | $0.22 | $0.2852 | - | $0.564 |
r4.xlarge | 4 | 30.5 | $0.38 | $0.5704 | - | $1.128 |
r4.2xlarge | 8 | 61 | $0.77 | $1.1408 | - | $2.256 |
r4.4xlarge | 16 | 122 | $1.41 | $2.2816 | - | $4.512 |
r4.8xlarge | 32 | 244 | $2.69 | $4.5632 | - | - |
r4.16xlarge | 64 | 488 | $5.25 | $9.1264 | - | - |
x1.16xlarge | 64 | 976 | $9.801 | $16.256 | - | - |
x1.32xlarge | 128 | 1952 | $19.471 | $32.512 | - | - |
x1e.xlarge | 4 | 122 | $1.269 | $1.926 | - | - |
x1e.2xlarge | 8 | 244 | $2.548 | $3.8522 | - | - |
x1e.4xlarge | 16 | 488 | $4.966 | $7.7045 | - | - |
x1e.8xlarge | 32 | 976 | $9.802 | $15.409 | - | - |
x1e.16xlarge | 64 | 1952 | $19.474 | $30.8179 | - | - |
x1e.32xlarge | 128 | 3904 | $38.818 | $61.6358 | - | - |
以前と比べると、RDSで利用可能なインスタンスタイプがかなり増えました。
利用できるリソース
インスタンスタイプ
先日のアップデートにて、RDSでもX1/X1eのインスタンスタイプに対応しました。そのため、現状ではメモリ/CPU面での最大スペックに差は無くなっています。
EC2を利用する場合には、上記の他に、最新世代のインスタンスタイプであるM5や、ストレージ最適化のI3、ベアメタルインスタンスであるi3.metalといった選択肢もあります。
また、「メモリはたくさん欲しいけど、CPUが増えると必要ライセンスも増えるのでインスタンスタイプをあげられない」といった場合には、EC2ではCPU最適化オプションによりEC2またはRDSインスタンスに割り当てるCPUコア数を抑えることも可能になっています。(2018年6月24日追記:RDSもCPU最適化オプションに対応しました)
ストレージ
RDSにアタッチできるストレージは1つのみで、最大16TB/40,000IOPSまでとなっています。また、ストレージが1つのため、REDOログ/アーカイブログの領域を分けるなどの構成や、高速化のために複数のボリュームを束ねて利用することもできません。
EC2の場合には、複数のEBSをアタッチすることで、
- REDOログ/アーカイブログといった用途に応じたボリュームの使いわけ
- 複数ボリュームを使ったストライピングにより、1インスタンスで最大80,000IOPSのパフォーマンス
となります。上記でパフォーマンスが不足する場合にはインスタンスストアを利用することで最大3,300,000IOPSのパフォーマンスも発揮できます(ただし、データの永続化方法を検討必要)。また、Oracleのストレージ管理機能である、ASM(Automated Storage Management)も利用可能です。
機能差
RDSでは利用できないOracleの機能がいくつかあります。以下に例をあげます。
- Real Application Clusters(RAC)(11g/12c)
- Data Guard/Active Data Guard(11g/12c)
- Automated Storage Management(ASM)(11g/12c)
- Database Vault(11g/12c)
- Java のサポート(11g/12c)
- マルチテナントデータベース(12c)
- Oracle Enterprise Manager Grid Control(11g)
- Oracle Label Security(11g)
このうち、Data Guardのようなレプリケーション機能についてはマルチ-AZ構成が提供されます。ただし、レプリケーションからの読み込みが可能になるActive Data Guardに相当する機能はRDS(Oracle)には現時点で提供されていません。
2016年に確認した際には、Locatorなどの機能もサポート外でしたが、現在はサポート対象となりました。現時点でサポート外の機能も、今後のアップデートにて対応する可能性がありますので、導入検討時には最新の情報を確認しましょう。
構築/運用
構築
RDSの最大の利点といえるのは、利用開始に必要なリードタイムの短さです。RDSであれば10分程度でマルチ-AZ構成のインスタンスが起動し、利用が開始できます。一方、EC2で同等の構成を作る場合には、
- OSの設定
- データベースSWのインストール/設定
- Data Guard または他のクラスタSWのインストール/設定/テスト
といった作業が必要になってきますので、短くても数日のリードタイムが発生します。
また、短時間で構築できるということは、環境の再作成や破棄の判断も容易になるということです。一方で、多くのコストをかけて構築した環境だと、再構築が必要な場合や不要になった場合にも容易にはできません。
運用
EC2の場合にはユーザの責任で管理・適用作業が必要となるOS/MWのパッチ適用ですが、RDSの場合には容易に適用可能です。一方で、RDSではメンテナンス時間を完全にコントロールできないケースもあります。
また、RDSではスナップショットやリカバリもサービスとして提供されるため、維持運用の負荷を下げることができます。
まとめ
RDSでは選択可能なリソースや利用できる機能に制限はある一方、構築/運用にかかる時間的/人的コストを大きく下げることが可能です。なので、まずはRDSを前提に検討し、以下のような点で妥協できない場合にはEC2にDBを導入する方針にするのがよいでしょうか。
Oracle 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で使うときの選択のポイント