Amazon Aurora is a new database service on the AWS cloud that is a competitor to MySQL. Get the facts to determine if it's a good fit for your next project.
A key building block of Infrastructure as a Service (IaaS) and Platform as a Service (PaaS) is a relational database in the cloud. Microsoft offers Azure SQL Database Server, a database service that's highly compatible with Microsoft SQL Server. Google CloudSQL is a MySQL-based relational database service available on Google Cloud Platform. Rackspace also has a managed SQL service that supports Oracle, Microsoft SQL, MySQL, MariaDB, and Percona. With Oracle's public cloud market offering, enterprises have another option.
Amazon is targeting AWS customers running large database workloads to drive the adoption of Amazon Aurora, which became generally available on July 28, 2015. The database service on the AWS cloud was announced in November 2014 at the AWS re:Invent conference in Las Vegas by Andy Jassy, senior VP, AWS. He claimed that Amazon Aurora was at least as available, durable, and fault tolerant as the enterprise editions of the proprietary commercial database engines and high-end SANs available at a 10th of the cost.
That was a tall claim coming from a company that's never been in the business of developing database server software. But Amazon's technical team certainly knows a thing or two about scalable and available databases. After all, they manage the world's largest e-commerce portal and support millions of transactions per day.
AWS has been offering the managed MySQL database service Amazon Relational Database Service (RDS) since 2009. With RDS, customers can point and click to provision a scalable and reliable database server in just a few minutes. Amazon RDS eventually added support for Microsoft SQL Server, Oracle, and PostgreSQL; Amazon Aurora is the latest addition to the RDS portfolio. Though the service is slightly more expensive than MySQL RDS, Amazon expects customers to switch to Aurora for its performance and availability.
Core features and architecture of Amazon Aurora
According to Amazon, Aurora is a relational database engine that is compatible with MySQL. It is a cloud-native database built with the scale, reliability, and availability of high-end commercial databases.
From the product site: "Amazon Aurora provides up to five times better performance than MySQL at a price point one-tenth that of a commercial database while delivering similar performance and availability." Based on a benchmark conducted by Amazon (PDF), the service delivered over 500,000 select queries per sec and 100,000 updates per sec; this is at least five times higher than a MySQL database server running the same benchmark on similar hardware.
Amazon Aurora is wire compatible with MySQL 5.6 using the InnoDB storage engine. This feature enables easy migration from MySQL through the standard tools and utilities such as mysqldump.
Amazon Aurora's storage is based on cluster volumes, which is a single, virtual volume backed by SSD storage. Each cluster volume has copies of data from multiple availability zones in a single region; this architecture ensures high availability of the database service. The service is designed to back up data to Amazon Simple Storage Service (S3), which is a popular object storage service of AWS. Amazon promises 99.99% availability of Aurora.
Like the other database engines running on RDS, Amazon Aurora can take advantage of Multi-AZ deployments for higher availability. Each database volume is replicated six ways, across three availability zones, and customers can create read replicas to enhance the performance. Since the database engine is compatible with MySQL, it supports mixing and matching Amazon Aurora read replicas with MySQL replicas. The service supports the creation of up to 15 read replicas.
Critical features missing in Amazon Aurora
Before switching to Amazon Aurora, you need to keep in mind the service's limitations.
Amazon Aurora doesn't support cross-region replication; this feature delivers an additional level of availability by replicating the database to another region. Though MySQL RDS supported this feature since 2013, Amazon didn't include it at the time of GA.
Another critical feature that's missing is support for the AWS Key Management Service (KMS). This service for creating and controlling encryption keys makes it possible to encrypt data at rest. Though Oracle and SQL Server running on Amazon RDS support this feature, Amazon didn't include it for Aurora.
Industry support and early adopters
Amazon Aurora has an impressive list of early adopters, including the United Nations, Earth Networks, ISCS, WeTransfer, and Zumba Fitness. Pacific Gas and Electric (PG&E) says that it can handle large spikes in traffic while maintaining the responsiveness of the applications.
Alfresco, the open source content management system, says that it is ready to support Aurora. Alfresco founder and CTO John Newton is quoted on the Amazon RDS Customer Highlights page as saying: "Amazon Aurora was able to satisfy all of our scale requirements with no degradation in performance. With Alfresco on Amazon Aurora, we scaled to 1 billion documents with a throughput of 3 million per hour, which is ten times faster than our MySQL environment. It just works!"
My point of view
Amazon's decision to deliver MySQL API compatibility is a smart move; it enables customers to switch quickly from MySQL to Aurora. Customers can use myriad tools and scripts that are available in the MySQL ecosystem.
With MySQL ownership lying with Oracle, there are some concerns about the future of the most popular open source database server. Amazon Aurora may become a viable, commercial alternative to MySQL for AWS customers, who get the backing of a company that knows how to manage large-scale infrastructure.
So, should you consider Amazon Aurora for your next project? The answer depends on your investments in Amazon's cloud platform. If you are running a high throughput transactional database on MySQL RDS, you may want to consider Amazon Aurora. For an incremental price, your application may get better performance and throughput.