michelangelus - Fotolia
AWS has two primary relational database services: Amazon RDS and Aurora Serverless. Amazon RDS is a managed service that launches and maintains database servers in the cloud. And Aurora Serverless is a relational database engine with an updated deployment model so developers don't have to manually launch database servers.
What are key similarities and differences?
The main difference between Amazon RDS and Aurora Serverless is that the more traditional RDS gives developers the option to choose database instance type and size. You can also select a database engine, including Amazon Aurora, PostgreSQL, MySQL, MariaDB, Oracle and Microsoft SQL Server. Aurora is Amazon's native database engine, designed explicitly to work with the AWS cloud.
With Aurora Serverless, introduced in 2018, developers configure compute in terms of minimum and maximum Aurora Capacity Units (ACUs), which are a combination of virtual CPUs and memory. Aurora Serverless can also automatically scale compute capacity up or down.
Because of these capabilities, Aurora Serverless can handle resource capacity more flexibly. In Amazon RDS, a deployed database server is not scaled to a larger instance type unless its configuration is explicitly updated to a different size, which can result in up to five minutes of downtime. RDS does offer auto scaling for read replicas, but the process takes a few minutes to execute since it has to deploy additional RDS instances. Aurora Serverless' automatic scaling results in much faster deployment times, typically within 30 seconds.
When using the Aurora database engine in RDS or in Aurora Serverless, developers don't have to configure storage since Aurora automatically assigns the required storage space. From a functional perspective, if an application is compatible with MySQL or PostgreSQL, either version of Aurora is transparent to the source code.
Factors to consider before choosing
First and foremost, Aurora Serverless is only compatible with MySQL and PostgreSQL. If an application requires Oracle, SQL Server or MariaDB, then you need to use Amazon RDS.
Aurora Serverless is a good fit for applications that are not expected to serve traffic on a regular basis, such as development or test environments. Even though Aurora Serverless offers the option to reduce capacity to zero during periods of no usage, this setting is not recommended for production environments. It takes a few seconds to reprovision compute capacity, which will deliver a poor experience to production users during that time frame.
Aurora Serverless could also be a good fit for applications with steep and unpredictable spikes in usage, which would require time-consuming capacity adjustments using Amazon RDS. With Aurora Serverless, the database can be configured to quickly and automatically increase or decrease capacity as needed.
Aurora Serverless may seem like a better option than Amazon RDS. However, if not chosen for the right use case, it could result in higher AWS costs.
For example, for an application that is expected to serve constant traffic in US-East-1, an r5.large RDS instance (16 GB, $0.29/hour) would be the equivalent of 8 ACUs ($0.48/hr), as of publication. In this case, Aurora Serverless would be 65% more expensive. You also can't use Reserved Instances with Aurora Serverless. Deploying Reserved Instances with Amazon RDS could lower your cost considerably -- by approximately 30% to 60% -- depending on the instance type and length of your commitment.
Aurora is definitely an option to consider, but it's important to evaluate the advantages, limitations and cost implications compared to traditional RDS in order to make the best decision for your company.