Despite there being multiple options to scale a relational database management system, many IT professionals still...
see this process as a challenge.
You can either scale a relational database management system vertically by adding more resources or horizontally with read replicas or shards, which split a logical data set into multiple databases. But these methods require a lot of management. Vertical scaling can involve downtime for hardware changes, and this approach has a finite limit of resources. Horizontal scaling with read replicas helps with read requests, but the master is still a single point of failure for writes to your database. Plus, you must make changes to your application when you shard to know where data resides.
But AWS recently addressed these concerns. At re:Invent 2017, Amazon unveiled Aurora Serverless, a new relational database configuration that can transform a less-than-ideal scaling process into a simple and seamless one.
Aurora Serverless, currently available in preview, will appeal to companies of many shapes and sizes, as database costs and overhead can be painful for IT. In addition to potential cost savings, users could also benefit from the new Multi-Master feature, which supports database scaling for write requests.
Old-school databases offer minimal help
Let's use an example to explain how Aurora Serverless is helpful. Say your enterprise has a large, mission-critical database that consists of one big server with incremental daily backups and a full backup every weekend. It would be problematic to run it on premises with both scaling and potential recovery time if a disaster occurs.
But a migration to Amazon Relational Database Service (RDS) probably won't solve the problem either. RDS reduces the operational costs of running databases by managing tasks such as OS patches and security updates. The service also enables faster failover in case of a disaster, and it can help with vertical scaling downtime. But some IT teams will want more.
In comes Aurora Serverless
AWS Lambda introduced the concept of serverless functions back in 2014, and it quickly became a buzzworthy topic in the developer community. With serverless, you don't have to rent or provision servers yourself. Instead, the technology provider -- in this case, AWS -- dynamically allocates and manages those resources for you.
Aurora Serverless is an extension of AWS' high-performance Aurora database, which is compatible with MySQL and PostgreSQL. Aurora Serverless enables you to automatically start, stop and scale database instances with no management on your end. After you create an endpoint, you can choose between minimum and maximum capacity and then connect your application to the database.
Amazon also unveiled the Multi-Master feature, which enables Aurora to scale for write requests and guarantee zero application downtime in case of database or availability zone failure. This helps IT teams create a truly fault-tolerant configuration.
AWS charges Aurora Serverless users based on the memory and compute capacity they use per second, which can offer potentially huge cost savings over traditional enterprise options with intermittent or unpredictable workloads. The service could also benefit organizations that want to reduce database maintenance overhead.
Under the hood, Aurora Serverless separates database storage and processing. Your endpoint serves as a proxy that routes queries to a fleet of resources, where a pool of warm compute resources can scale within seconds. This separation of resources enables you to keep your connection intact while scaling, and it lets you scale down to zero when there are no requests. Therefore, you only pay for the storage and pay nothing for compute resources.