Introduction

Background
How did we Get Here?
To add insult to injury, there is not even a button push migration path from Exadata Express to Autonomous Cloud. This means that even if you have the money to pay for Autonomous Cloud, you are going to have to fork more money to migrate.
The Alternative

- You can now perform a full ORDS install on an RDS instance. This is thanks to new functionality in ORDS 19.1 which allows you to run the install as a user other than SYS. This is especially important now that REST services are no longer available in APEX alone.
- AWS have started making the latest version of ORDS available on RDS much sooner than they used to. For example, as of right now, September 2019, you can run ORDS 19.2 and APEX 19.1 on RDS, whereas Exadata Express is running ORDS 3 (ouch) and APEX 18.2.
Architecture
Cost Breakdown
- We did not go for provisioned IOPS (input output per second, A measure of disk speed) which means we get burst-able IOPS. This is fine for short bursts of activity but if you expect prolonged volume activity, you will want to pay for provisioned IOPS which will increase the cost.
- RDS service pretty much doubles as you go from db.t3.small (2GB RAM, 2 VCPU) > db.t3.medium (4 GB RAM, 2 VCPU) > db.t3.large (8 GB RAM, 2 VCPU), > db.t3.xlarge (16 GB RAM, 4 VCPU).
- With a DB instance especially, you are likely to be keeping it around for a while. This makes buying reserved instances (where you pay up front) very appealing. You can save upward of 40% this way.
Benefits
- You can schedule backups and minor DB patch releases automatically on AWS. With Exadata Express, you had to manually run an export. You can even set your backup retention period.
- You can perform point in time DB recovery.
- You have visibility to metrics and can create automated alarms to monitor the health of your database.
- You can configure your database with multi-availability zone redundancy.
- 18C of the Oracle database is available.
- You can perform button push DB upgrades in place. We can attest to this as we recently upgraded our new environment from 12C to 18C.
- You can install any APEX version you want, important if your App is tied to a specific APEX version.
- RDS has an integration with S3 (object storage) so you can copy files between the DB server and S3. This is great for ad-hoc data pump backups or moving schemas between DB instances.
- You have access to the database file system via UTL_FILE.
- You can create your own database wallets. This is especially important for a cloud environment which may need to use custom SSL certificates to gain entry into your company’s firewall.
- Using other AWS services becomes much easier. For example, we run Tomcat on HTTP and have an AWS Application Load Balancer exposed to the internet. AWS provides SSL certificates for free when using a load balancer. If you have access to your domain DNS, you can easily create a friendly URL for you APEX environment e.g. https://apps.abccorp.com
- If you need to send emails to customers from APEX that do not end up in their spam folder then AWS SES (Simple Email Service) is just a few clicks away. It creates an SMTP server which you can add to your APEX Internal Workspace and then any email you send from APEX gets sent out using SES. SES emails include the necessary DKIM information so that your email does not end up in your recipient’s spam folder (not something that could be said for Exadata Express).
- Once you have a load balancer in place, you could even load balance between two ORDS servers so that you have increased redundancy and scalability.
- You get a full ORDS install. This means you get to set the ORDS parameters the way you want them. This includes setting the JDBC connection pool, configuring Prehook, preprocess, postprocess, restEnabledSql and pagination maxRows. There is no way this is going to be available to you on the Autonomous Database Cloud Service.
Considerations
- Although the database is almost fully managed by AWS, you are on your own with regard to the ORDS server. You need to standup an EC2 server and install ORDS, Tomcat, setup your load balancer etc. This means it is not as hands off as Autonomous Database Cloud Service.
- At time of writing, there is no way to install APEX PSE Bundle Patches to an RDS instance. Depending on the bug, this could be a big deal.
- For license included versions of the Oracle Database, Standard Edition 2 is way more affordable than Enterprise Edition. If you have specific use cases that require Enterprise Edition features, then keep an eye on your costs.
- Although AWS takes care of patching the DB server, you will be responsible for patching the EC2 server and upgrading Java, Tomcat and ORDS.
Conclusion

After all, for developers, the health and welfare of the database is really the scariest part of running your own RAD stack. If AWS is essentially taking care of this for you, the rest is reasonably straight forward.
Author
Jon Dixon, Co-Founder JMJ Cloud