Oracle Database Migration to Aurora/Postgres – Part 1
Nick Walter, Principal Architect
Building the Business Case
“How do I move off Oracle entirely?” is probably the most frequently asked question I get when helping clients with Oracle licensing cost reduction projects or audits. For the last several years, House of Brick has heard this refrain repeatedly from clients unhappy with the ongoing costs and headaches of maintaining a relationship with Oracle. In fact, it is very possible to move Oracle workloads to other engines with a little planning and effort, which is good news for these clients.
In this blog series, I want to discuss one of the more popular migration targets that my clients ask me about in regards to migrating Oracle databases to another platform – the AWS Aurora platform. Aurora, and more specifically the Postgres variant of Aurora, is often where House of Brick clients want to move, for several reasons. In this first blog about moving to Aurora, I will break down the business case for migrating Oracle workloads to Aurora. The good news is that Aurora is usually a slam-dunk (as an Oracle replacement) due to the spectacular savings realized from the migration.
Costs – Aurora v. Oracle in EC2
Let’s start with looking at the costs for Aurora/Postgres. Aurora is, in this author’s opinion, an excellent value when compared to traditional, (expensive) commercial enterprise database products. The full Aurora pricing guide is available from AWS, but I will pull out one pricing line as an example. An Aurora db.r4.4xlarge instance (in region US-EAST-1) costs $2.32/hour as of this writing. Doing the math, that equates to $20,322.20 annually, and that pricing is completely on-demand. Additional significant discounts are available to enterprises willing to reserve the Aurora instance in advance for a one-year or a three-year term. Because AWS only lists one price for Aurora, at first glance it is difficult to figure out how much of that expense is going to compute resources, and how much is going to the value-added services that AWS provides, such as the RDS software, management and patching. Luckily, AWS publishes prices for baseline EC2 instances without Aurora software and services, so a little quick subtraction can show us how much AWS is charging for Aurora. According to the EC2 pricing data, as of this writing, a r4.4xlarge instance (in region US-EAST-1) would cost $1.064/hour, which equates to $9,320.64 annually. Subtracting that number from the $20,322.20 annual cost of Aurora/Postgres gives us a difference of $11,011.56, which accounts for the Aurora/Postgres markup on top of the compute costs.
Now let‘s look at how much Oracle costs in EC2. To keep things comparable to the Aurora example previously discussed, I will price out a r4.4xlarge EC2 instance and calculate the Oracle licensing costs. The r4.4xlarge instance has 16 vCPUs. Going by Oracle’s published Licensing Oracle Software in the Cloud Computing Environment document, a 16 vCPU EC2 instance would require eight Oracle processor licenses. In order to scope out a feature set in rough parity with Aurora/Postgres, I will assume this Oracle installation would need eight licenses of Oracle Database Enterprise Edition, Tuning Pack, Diagnostics Pack, and Partitioning. Currently, according to Oracle’s Global Price List, that software would cost $572,000 up front and $125,840 annually for support. Oracle’s global price lists are notoriously inaccurate for determining realistic costs for running Oracle software however, because the real price is arrived at via negotiation with Oracle sales. But, for the purposes of this article, I’ll assume a scenario where all the licenses and support were acquired previously at a 50% discount, so the only important number is the annual support fees. Given the 50% discount assumption, the annual support fees for Oracle software in our r4.4xlarge instance would be $62,920. In conjunction with the annual, on-demand cost for an r4.4xlarge instance of $9,320.64, we can arrive at an annual compute+software cost of $72,240.64 for the Oracle EC2 instance.
Comparing the $72,240.64 annual cost of the Oracle on EC2 instance with the $20,322.20 annual cost of the same sized Aurora/Postgres instance shows that the Oracle solution is 255% more expensive, but that still doesn’t tell the full story. The Aurora/Postgres instance is a managed service by AWS, so AWS is taking care of all the maintenance items. That means that O/S patching, database software patching, and alerting/monitoring are all included in the Aurora solution, whereas the Oracle on EC2 solution requires an expensive DBA resource to manage all those items. DBA labor costs are notoriously difficult to calculate (in any industry-average fashion) because pay scales differ dramatically across the globe, but I’ll use a number from payscale.com to determine an approximate cost. Payscale.com public data suggest that the average Oracle DBA in the US has an annual salary of $93,612. I’ll further assume that the care and feeding of a single database consumes no more than a tenth of that DBA’s work time, and assign a tenth of that DBA’s salary ($9,361) as the cost for upkeep and maintenance of the Oracle on EC2 solution. Adding that to the previous number for compute+software now gives us an annual Oracle on EC2 cost of $81,601.64. That is 301% more expensive than the Aurora solution!
This extreme cost premium for Oracle is compounded, in the case of applications that have copies existing in multiple non-production environments, such as development, test, QA, UAT, or PAT. It is not at all uncommon for House of Brick to see clients dedicating over a quarter of a million dollars annually (per application) just for the compute, care and feeding, support, and licensing of their Oracle databases. This is an astronomical cost, which used to be quite justifiable, because no cheaper alternative could do what an expensive commercial enterprise database product could do. These days however, significantly less expensive alternatives exist, and anyone with legacy applications on an Oracle platform needs to take note.
Using our r4.4xlarge example, an enterprise considering the options of moving an Oracle database to the cloud (as an Oracle database) or migrating it to Aurora/Postgres is looking at a savings of $61,279.44 when migrating to Aurora. If there were a few non-production copies of the database as well, the savings could easily reach the $120k-$150k range annually. At that kind of price delta, it’s an easy business case to make for justifying the migration efforts.
Cost Savings Make Migration Effort Worthwhile
A migration to Aurora/Postgres from Oracle does take some effort to refactor applications, migrate schemas and data, and re-test applications. Many of the enterprises I’ve dealt with have traditionally been very conservative when it came to changing business critical applications or considering database migrations. The question I ask them nowadays is – considering the huge potential savings that come with migrating from Oracle to Aurora/Postgres, can you afford to remain conservative, or is time to make a move?