Ah, Amazon -- did Jeff Bezos choose that name to symbolize the largest bookstore in the world or did he realize that he would one day create an enterprise cloud service that was as large and complex as the river basin? After spending some time with his enterprise infrastructure service, I think he saw this coming.
Selling servers by the hour was a bold idea when the Amazon cloud business launched a few years ago, but it seems quaint compared to all the options for sale today. There are currently 21 products available on Amazon Web Services, and only one of them is the classic EC2 machine, an abbreviation of the full name, the Elastic Compute Cloud. The original S3 (Simple Storage Service) now has cousins like the Simple Workflow Service and SimpleDB, a nonrelational data store. Then there are odder innovations like Amazon Glacier, a very cheap storage solution that takes hours to retrieve the data. Yes, hours. Not milliseconds, not seconds, not minutes -- but hours.
[ From Amazon to Windows Azure, see how the elite 8 public clouds compare in InfoWorld Test Center's review. | Stay on top of the state of the cloud with InfoWorld's "Cloud Computing Deep Dive" special report and Cloud Computing Report newsletter. ]
It's impossible to summarize it all in a paragraph or even an article. Amazon Web Services would require a book, but that tome would be out of date by the time it was printed because the service changes quickly. The best news is that Amazon is constantly looking at costs and generally lowering prices as it finds a way to deliver the product for less. Some prices have gone up occasionally over the years, an effort to make the prices reflect reality.
The size is just the first feature you can choose. There's back-end storage that can be mounted and you can fiddle with the amount of disk space. If you like, you can add EBS (Elastic Block Store), which is disk space that lives in the racks near you. This can be faster or slower and backed by more or less RAID protection.
There are so many options that spinning up an Amazon machine is almost as complicated and as flexible as buying a custom server. It's a bit like a toy store because you have to resist the temptation to play with cutting-edge technology -- such as one of the machines jammed full of Nvidia Tesla GPUs ready to run highly parallel algorithms written to Nvidia's CUDA platform. The mind often boggles.
Decoding the pricing table will take some collaboration between the CFO and the CIO. Not only are there 16 different-sized machines, but you can pay to reserve them in advance. If you pay a portion up front, Amazon will cut the hourly price along the way. It's sort of like one of those warehouse clubs where a membership buys you a discount. If you're judicious it's probably worth it, but it will take you some time to predict how much you'll use the machines.
The options aren't just in the size or configuration of the machine. The startup process offers a number of sophisticated options for customizing the distro from the beginning. You can, for instance, set up a "security profile" that controls which ports are open or shut immediately. This saves you the trouble of logging in after creating the machine and configuring the ports manually, a feature that's essential if you're going to start and stop dozens, hundreds, or thousands of machines.
The speed I saw with the machines wasn't very exciting. I tried the DaCapo Java benchmarks, a test suite that includes several computationally intensive tasks, including running a Tomcat server. The results were generally three to five times slower than the low-end machines on Microsoft's Windows Azure and often six to nine times slower than the low-end machines on Joyent's cloud. However, these numbers weren't perfectly consistent. On the Avrora simulation of a sensor network, the EC2 micro machine was faster than Joyent's, and it took only about 45 percent more time to finish than the low-end Azure machine.
The Joyent machines are priced at about 3 cents an hour, a small premium considering the gap in performance. The Azure machines have an introductory price of 1.3 cents per hour -- cheaper than Amazon's micros, though they're dramatically faster.
Bigger, faster, more
For comparison, I also booted up what Amazon calls a high-CPU machine that offers two virtual cores, each delivering 2.5 (in Amazon parlance) ECUs or Elastic Compute Units. That's five ECUs all together. The micro machine is supposed to offer two ECUs in bursts, while the high-CPU machine offers five ECUs all of the time. The price is dramatically higher -- 14.5 cents per hour -- but that includes 1.7GB of RAM. Again, what happened to our old friends, the powers of two?
The high-CPU machine was usually six to eight times faster than the micro machine, suggesting that the ECUs are just a rough measurement. The results were close in speed to the Joyent machine and often a bit faster, but at more than five times the price. It's worth noting for algorithm nerds that the DaCapo benchmarks used two threads when possible on the Amazon machine but were limited to one thread on the Joyent and Azure boxes.
Once again, this suggests that the algorithm designer, the build master, and the CFO are going to need to sit down and decide whether to buy bigger, faster machines for more money or live with a larger number of slower, cheaper machines.