The underlying database that supports any web-based service may seem like a rather ho-hum topic to write about. Usually, I would agree. Microsoft SQL Server, PostgreSQL, MySQL, Oracle. Yup, I’m yawning just typing those names. But when the database happens to be Aurora, I light up. This is an exciting new service offered by Amazon that really hits the sweet spot at delivering a high-performing, durable database service without the cost such systems usually incur. This post delves into what it is and how ElectionsOnline clients benefit.
Amazon Web Services
For the uninitiated, it’s been years since Amazon was just an online bookstore. When Amazon started in 1994, there was no software commercially available that supported what it wanted to do. It all needed to be custom developed. Fast forward roughly 15 years and it had amassed a breadth of expertise in operating websites that was virtually unmatched. Recognizing there was a market for its expertise, the company created Amazon Web Services and began selling many of its solutions, or some variation thereof, commercially. Website hosting companies have been around for as long as websites themselves, but they all tended to offer comparable types of hosting solutions. While they were doing what they do, Amazon was busy developing, for its own use at the time, solutions that pushed way beyond what “normal” hosting companies had to offer. When it productized and went to market with these solutions, it was quite an exciting moment for small- and medium-sized business to be able to tap into the same types of services and expertise that had been powering Amazon all those years.
What is Aurora?
One of the services included in Amazon Web Services was database hosting, and initially it was all the usual flavors one would expect. Oracle, MySQL, MS SQL Server and the like. The hosting options looked pretty familiar as they were comparable to what other hosting companies had been offering. That’s not bad, there just wasn’t anything particularly revolutionary about it. Then, in November 2014, after three years in development, Amazon unveiled Aurora, which it describes as “...a MySQL-compatible, relational database engine that combines the speed and availability of high-end commercial databases with the simplicity and cost-effectiveness of open source databases.” (http://aws.amazon.com/rds/aurora/).
What does MySQL-compatible mean? MySQL is an open-source database, and a very popular one. In fact, the most popular one. Open-source means free so it’s certainly affordable, but that doesn’t mean incapable. In fact, it’s evolved over the years to be an attractive solution for some of the largest properties on the web. The “compatible” part of MySQL-compatible means Aurora is administered using any of the tools used to manage MySQL (MySQL Workbench for example), and that the code which runs on a MySQL database will run just the same on Aurora without any adjustment. In other words, the very large MySQL user base around the world can begin using Aurora without any learning curve. This also means a developer may use a locally installed copy of MySQL for development work and not have to subscribe to a second, development-only instance of Aurora just for development, as that could get rather expensive.
The Aurora Difference
Aurora should not be mistaken for a clone of MySQL, however. While MySQL may have served as the starting point for developing Aurora, the Amazon engineers have optimized it to take full advantage of the Amazon RDS (Amazon Relational Database Service) environment in which it runs. Some of its key selling points are below, but check out https://aws.amazon.com/rds/aurora/ for more.
The first difference is speed. One of the knocks on MySQL is that it doesn’t perform as fast as some of the very mature, proprietary databases. Aurora has been clocked at five times faster than MySQL.
Aurora will automatically grow, in increments of 10GBs, as your database storage needs grow, up to a maximum of 64TB. You don’t need to do a thing. It knows when it’s time to grow, and does so automatically.
Data discs are continuously scanned for errors and replaced automatically.
Multi-Availability Zone Deployments
Automatic, real-time replication in different availability zones means fault-tolerance as one instance of the database will failover to another in the event of failure. It should be noted that not all Aurora configurations use multiple availability zones. The default configuration is a single availability zone. ElectionsOnline however has invested in a multi-availability zone setup so clients benefit from having a superbly reliable and redundant system.
As stated above, Aurora can be configured to run in a database cluster where a single instance of the database is used for handling read and write operations, with up to 15 replicas kept in sync with that primary instance ready to be promoted to the role of primary whenever the primary fails. While it is not possible to write data to a replica, they can support read operations. By distributing read operations to the replicas and using the primary only for write operations, the overall workload of an application is distributed across multiple servers which improves performance.
No Licensing Headaches
Understanding the licensing structure for many of the traditional, proprietary databases is a huge headache. With Aurora, there is no license. Simply begin a subscription, and that’s it.
As the owner of an Aurora database, you aren’t burdened with the tedious hassle of patching or doing anything at all to the underlying hardware and network on which it runs. In fact, you won’t even have access to it. That’s all managed for you by Amazon.
How Clients Benefit
On one end of the spectrum of hosting options, there is shared hosting, where a customer is given a database on a database server along with dozens of other clients. There is generally no ability to take a database snapshot, or restore from a backup. No redundancy. No failover. On the other end is a prohibitively expensive solution involving multiple servers, a dedicated database administrator constantly monitoring availability, complicated licensing agreements, etc.
Aurora has found the perfect balance between security, availability, cost and many other factors. The result is that ElectionsOnline clients enjoy having a reasonably priced voting service built atop a robust solution stack that’s appropriately architected for its intended purpose.
There’s never a one-size-fits-all solution that’s right for everybody in every case. That’s true here as well. Aurora is the right choice for ElectionsOnline, and while I may have to eat my words one day, given Aurora’s ability to scale, migrating to it could conceivably be the last data migration ElectionsOnline ever needs to do!