I'm a bit confused about how vertical scaling works between Amazon RDS and Aurora. I've come across different opinions – some folks say Aurora can auto scale its compute capabilities, while others claim it's more like RDS where you need to select an instance type. If I want to change to a bigger or smaller capacity, am I really required to create a new instance and handle a failover? Has anyone actually done a real-world comparison of RDS versus Aurora, particularly in terms of scaling up/down CPU, memory, IOPS, and storage? Also, what kind of downtime should I expect during these scaling procedures?
2 Answers
Amazon Aurora Serverless v2 does allow for some vertical scaling by setting a capacity range using Aurora Capacity Units (ACU). Each ACU includes about 2 GB of memory, and it usually corresponds with a vCPU. You don’t need to provision servers yourself; just define your capacity range for the cluster. However, the standard provisioned Aurora doesn’t support vertical scaling in the same way since it relies on horizontal scaling with read replicas for handling that.
Whether you can dynamically adjust resources with Aurora really depends on the instance type. If you pick the serverless v2, it can automatically scale compute, memory, and networking as your workload changes. On the other hand, I prefer using RDS with blue/green deployments to avoid downtime since it's straightforward and makes migrating to another service easier if needed.
Right! You can use read replicas to effectively scale vertically, though it involves a few steps. You’d add a larger reader, failover to it as the writer, and finally remove the old smaller writer instance.