Amazon has announced Elastic Beanstalk, which lets you deploy an application to Amazon’s EC2 (Elastic Compute Cloud) and have it scale up or down, by launching or terminating server instances, according to demand. There is no additional cost for using Elastic Beanstalk; you are charged for the instances you use.
Here is a dialog from the control console that says a lot about how the new service works:
As you can see, you can specify both a minimum and a maximum instance count, where the number is between 1 and 10,000. You can also control the “Trigger”, the metric that makes Elastic Beanstalk create or terminate instances.
Currently Elastic Beanstalk is for Java applications running on the Apache Tomcat application server, on a standard Amazon Linux virtual machine. However, the following comment in the FAQ indicates that Amazon is investigating other platforms:
Yes. Elastic Beanstalk is designed so that it can be extended to support multiple development stacks and programming languages in the future.
The innovation here is not so much in the technology, which stiches together a number of existing services, but rather in how easy and cheap it is to get started. The cost of entry is almost nothing; in fact, Amazon says you can run Elastic Beanstalk on its free usage tier, for a low-use application. Even I you expect it to remain low-use Elastic Beanstalk provides some other useful features like health monitoring.
It seems to me that this new service is cloud deployment as it should be: removing the administrative burden of scaling your application according to demand. Other platforms like Google App Engine also do this, but with more restrictions on how you design your application. Platforms like Microsoft Windows Azure let you scale your application, but you have to log into the console and spin instances up or down yourself.
One final observation: despite considerable unhappiness in the Java community about the way Oracle is managing the platform, there are still excellent reasons to use it, and Amazon has just provided one more.