For the second year in a row, Amazon Web Services (AWS) announces new and improved services a few weeks before Microsoft’s Professional Developers Conference (PDC). Last year it was Amazon Web Services Announces SLA Plus Windows Server and SQL Server Betas for EC2, which I reported on 10/23/2008.
This year, it’s Amazon Relational Database Service (Amazon RDS) Beta, announced on 10/27/2009, which delivers pre-configured MySQL 5.1 instances with up to 68 GB of memory and 26 ECUs (8 virtual cores with 3.25 ECUs each) servicing up to 1 TB of data storage. One Elastic Compute Unit (ECU) provides the equivalent CPU capacity of a 1.0-1.2 GHz 2007 Opteron or 2007 Xeon processor. A summary of RDS beta pricing is here.
Stay tuned for a comparison of AWS RDS and SQL Azure pricing.
Werner Vogels’ Expanding the Cloud: The Amazon Relational Database Service (RDS) post of the same date contrasts AWS’ three approaches to cloud-based databases:
AWS customers now have three database solutions available:
- Amazon RDS for when the application requires a relational database but you want to reduce the time you spend on database management, Amazon RDS automates common administrative tasks to reduce your complexity and total cost of ownership. Amazon RDS allows you to manage your database compute and storage resources with a simple API call, and only pay for the infrastructure resources they actually consume.
- Amazon EC2- Relational Database AMIs for when the application require the use of a particular relational database and/or when the customer wants to exert complete administrative control over their database. An Amazon EC2 instance can be used to run a database, and the data can be stored within an Amazon Elastic Block Store (Amazon EBS) volume. Amazon EBS is a fast and reliable persistent storage feature of Amazon EC2. Available AMIs include IBM DB2, Microsoft SQL Server, MySQL, Oracle, PostgreSQL, Sybase, and Vertica.
- Amazon SimpleDB for applications that do not require a relational model, and that principally demand index and query capabilities. Amazon SimpleDB eliminates the administrative overhead of running a highly-available production database, and is unbound by the strict requirements of a RDBMS. With Amazon SimpleDB, you store and query data items via simple web services requests, and Amazon SimpleDB does the rest. In addition to handling infrastructure provisioning, software installation and maintenance, Amazon SimpleDB automatically indexes your data, creates geo-redundant replicas of the data to ensure high availability, and performs database tuning on customers' behalf. Amazon SimpleDB also provides no-touch scaling. There is no need to anticipate and respond to changes in request load or database utilization; the service simply responds to traffic as it comes and goes, charging only for the resources consumed.
Jeff Barr’s Introducing Amazon RDS - The Amazon Relational Database Service post of the same date to the AWS Blog digs into the details of creating and populating an RDS instance:
… Using the RDS APIs or the command-line tools, you can access the full capabilities of a complete, self-contained MySQL 5.1 database instance in a matter of minutes. You can scale the processing power and storage space as needed with a single API call and you can initiate fully consistent database snapshots at any time.
Much of what you already know about building applications with MySQL will still apply. Your code and your queries will work as expected; you can even import a dump file produced by mysqldump to get started.
Amazon RDS is really easy to use. I'll illustrate the most important steps using the command-line tools, but keep in mind that you can also do everything shown here using the APIs.
The first step is to create a database instance. …
Jeff then goes on to demonstrate how to:
- Create a database named mydb with room for up to 20 GB of data
- Check on the status of your new database at any time
- Edit the database's security group so that it allows inbound connections, enable connections from any (or all) of your EC2 security groups, or enable connections from a particular IP address or address range using CIDR notation
- Expand your instance’s storage space immediately or during the instances maintenance window
- Set up a two hour backup window and a retention period for automated backups and create a database snapshot at any time
James Hamilton’s Relational Database Service, More Memory, and Lower Prices provides a overview of AWS RDB, which begins:
I’ve worked on our around relational database systems for more than 20 years. And, although I freely admit that perfectly good applications can, and often are, written without using a relational database system, it’s simply amazing how many of world’s commercial applications depend upon them. Relational database offerings continue to be the dominant storage choice for applications with a need for structured storage.
There are many alternatives, some of which are very good. ISAMs like Berkeley DB. Simple key value stores. Distributed Hash Tables. There are many excellent alternatives and, for many workloads, they are very good choices. There is even a movement called Nosql aimed at advancing non-relational choices. And yet, after 35 to 40 years depending upon how you count, relational systems remain the dominant structured storage choice for new applications.
Understanding the importance of relational DBs and believing a big part of the server-side computing world is going to end up in the cloud, I’m excited to see the announcement last night of the Amazon Relational Database Service.
AWS also announced last night the EC2 High Memory Instance, with over 64GB of memory. This instance type is ideal for large main memory workloads and will be particularly useful for high-scale database work. Databases just love memory. …
AWS EC2 On-Demand instance prices were reduced by up to 15%.
Lower prices, more memory, and a fully managed, easy to use relational database offering.
James is a Vice President and Distinguished Engineer on the Amazon Web Services team where he is focused on infrastructure efficiency, reliability, and scaling.
RightScale’s Amazon launches Relational Database Service and larger server sizes post of 10/26/2009 takes another tack when describing RDS capabilities:
… With the Relational Database Service AWS fulfills a long standing request from a large number of its users, namely to provide a full relational database as a service. What Amazon is introducing today is slightly different than what most people might have expected, it’s really MySQL5.1 as a service. The RDS product page has the low-down on how it works, but the short is that with an API call you can launch a MySQL5.1 server that is fully managed by AWS. You can’t SSH into the server, instead you point your MySQL client library (or command line tool) at the database across the network. Almost anything you can do via the MySQL network protocol you can do against your RDS instance. Pretty simple and the bottom line is that businesses that don’t want to manage MySQL themselves can outsource much of that to AWS. For background on RDS I’d also recommend reading Jeff Barr’s write-up and Werner’s blog which recaps the data storage options on AWS.
What AWS does is keep your RDS instance backed up and running, plus give you automation to up-size (and down-size). You can create snapshot backups on-demand from which you can launch other RDS instances and AWS automatically performs a nightly backup and keeps transaction logs that allow you to do a point-in-time restore. …
One of the current shortcomings of RDS is the lack of replication. This means you’re dependent on one server and it’s impossible to add slave MySQL servers to an RDS instance in order to increase read performance. It’s also impossible to use MySQL replication to replicate from a MySQL server located in your datacenter to an RDS instance. But replication is in the works according to the RDS product page. …
Note re “… and down-size”: According to RDS documentation, you can’t reduce the size of allocated data storage.
Alan Williamson offers his knowledgeable and balanced third-party view of RDS in his Amazon takes MySQL to the cloud; or have they? post of 10/27/2009:
Amazon have just announced a whole slew of updates to their Web Services platform, at a time I might add, that their stock is riding at an all time high of $124 per share; no better time to announce price cuts. They announced the following high level features:
- New Amazon RDS service
- Additional 2 EC2 instance types
- Price reduction on EC2 per-hour prices
Amazon RDS service
RDS or, Relational Database Service, is basically a full managed MySQL 5.1 server within the Amazon infrastructure. Instead of spinning up an EC2 instance, installing MySQL and faffing with all the security, backup and tuning settings, you merely call the API endpoint CreateDBInstance, supply which type of instance you want and how much storage you want, and you are up and running.
Their pricing starts off at $0.11 per hour for the smallest instance, going the whole way up to $3.10 for their highest instance. You also get charged for the amount of storage you reserve at the usual $0.10 per GB[-month].
A number of big gains to be had here with Amazon RDS straight out of the gate. Namely, no longer do you have to wrestle with EBS to manage your persistence storage - no panics of data loss should the instance you had MySQL running suddenly dies. Secondly, you don't have to concern yourself with running the latest patched version of MySQL, as Amazon will keep the server binaries up-to-date for you.
They provide tools to easily and quickly take snapshots and create new instances, which is essentially wrapper tools around their existing EBS service and provide nightly backups for you automatically. Again, simply utilising their existing EBS service.
You do actually get a MySQL server, listening on port 3306 for all your connections from your app servers and all the tools you've built up to manage MySQL over the years. From an operational stand point, it’s business as usual.
But before you go terminating all your existing MySQL instances, allow some caution.
Amazon RDS, at the moment (although they plan to address this soon), is a one-singer-one-song setup. There is no real time replication and you are relying on a single Amazon EC2 instance not to fail. [Emphasis added.]
Some are probably not too worried about this, as they are probably sailing close to the wind without replication at the minute. However, how does a forced 2-hour downtime per week work out for your application? This is called the "Maintenance Window" and is an opportunity for Amazon to patch the server with the latest security and performance updates. They claim to only bring the server down as short as possible and you get to pick the time of day. [Emphasis added.]
That's going to sting, especially with no replication to take up the slack from the blackout. …
Jeff Barr says in his blog post: “A High Availability offering so that you can easily and cost-effectively provision synchronously replicated RDS instances in two different availability zones” is “planned for the coming months.'”
Jeffrey Schwartz begins his Amazon Sets Stage for Cloud Battle With Microsoft article of 10/27/2009 for Redmond Developer News with:
In what could be an escalating war in the emerging arena of cloud-based computing services, Amazon today said it will let customers host relational data in its EC2 cloud service using the MySQL database The company today also said that it plans to slash the costs of its EC2 service by as much as 15 percent.
The news comes just weeks before Microsoft is expected to make available its Azure cloud service at the annual Microsoft Professional Developers Conference in Los Angeles (see SQL Azure Is PDC Ready). Microsoft initially did not plan to offer a relational database service with Azure, but the company reversed course after earlier testers largely rejected the non-relational offering. Microsoft's SQL Azure Database will be part of the Azure offering (see Microsoft Revamps Cloud Database and Targeting Azure Storage). …
Roger Jennings, principal analyst at Oakleaf Systems and author of the book Cloud Computing with the Windows Azure Platform (Wrox), said Amazon clearly has taken a swipe at Microsoft. "It certainly appears that way," Jennings said in an interview.
The offering from Amazon includes support for larger databases of up to 1 terabyte, compared to just 10 gigabytes for SQL Azure, Jennings pointed out. "Larger SQL Azure databases must be sharded, but distributed queries and transaction[s] aren’t supported yet," he said in a follow-up email.
Jennings also noted that Amazon MySQL instances scale up resources with an hourly surcharge and scale out by sharding, if desired. "SQL Azure scales out by sharding but not up," he said. "SQL Azure instances have a fixed set of resources not disclosed publicly."