Elastic Beanstalk is a new offering from Amazon Web Services. It incorporates many characteristics of PaaS but retains much of the flexibility offered by IaaS. (Note: If you are not sure of the differences between PaaS and IaaS, please refer to Chris Czarnecki’s excellent article on the subject.)
Traditionally PaaS offers a highly productive environment for the developer. The trade-off is reduced flexibility and control over the application infrastructure. Although PaaS does lessen the administrative overhead compared to IaaS it also forces you to live with decisions pre-determined by the PaaS provider. This was sometimes seen as a drawback and is often a criticism of PaaS. Elastic Beanstalk addresses some of these concerns.
Currently in beta, Elastic Beanstalk allows Java developers to simply upload an application and it handles all the deployment, provisioning, load balancing, auto-scaling and health monitoring automatically. Elastic Beanstalk leverages existing AWS services but does not require the developer to be particularly familiar with the specifics of how they work. If needed, however, a developer can take control of any of the services using the management capabilities of Elastic Beanstalk. The developer has the ability to browse log files, monitor application health, adjust auto-scaling rules and setup email notifications through a management console. You can also specify EC2 instance types and select a specific database for storage. There is no additional charge for Elastic Beanstalk; you pay for the Amazon services as you use them, just as you normally would.
Developing and deploying an application for Elastic Beanstalk is pretty similar to developing and deploying an application for Google App Engine. The AWS Toolkit for Eclipse allows an AWS Java Web Project to be created and deployed to Elastic Beanstalk right from within the IDE. Just like the http://myapp.appspot.com URL in GAE an Elastic Beanstalk application is deployed to a custom URL of the form http://myapp.elasticbeanstalk.com. Check out this screencast from Amazon for a walkthrough of the process.
Elastic Beanstalk from Amazon is an example of how things are rapidly evolving and changing in the cloud. While many of the distinctions between the different cloud service offerings are perhaps blurring and shifting, it is still possible to understand cloud computing and the various provider products in terms of some fundamental concepts. To get a good grounding in those concepts consider attending Learning Tree’s introductory hands-on course in cloud computing technologies.