Channels ▼

JVM Languages

Deployment with Amazon's Elastic Beanstalk

Next, click the "Auto Scaling" tab. This is likely the most powerful configuration screen in Elastic Beanstalk, as it relates to scalability. Here, you can fine-tune how your application will scale horizontally to handle load. You can configure a scaling trigger, such as the count of incoming requests, which if they exceed some threshold, trigger the spawning of additional EC2 instances already configured to your liking and running your instance of Tomcat, plus the corresponding war file — all load balanced!

As you see in this dialog, Amazon has already configured default values — namely, that your application will scale to four instances. Needless to say, this dialog offers a tremendous amount of control over an application's scalability in an easy to consume and understand format. Simply click a few buttons and your application has the plumbing to scale to enormous loads. And best of all, you didn't have to manually configure all the moving parts, such as the load balancer or the triggering scheme!

Finally, Beanstalk offers a handy versioning scheme. Presumably, once you've deployed your application, you'll most likely have incoming traffic and thus, you might not have the luxury of throwing up new war files without the risk of affecting users. Thus, Amazon offers two handy features.

First, with Elastic Beanstalk, you have the option of swapping the URLs of any two Elastic Beanstalk environments. So if you have one environment called "caprice" and another called "whim," you can temporarily have all caprice traffic rerouted to whim, thus providing no downtime. This requires that both caprice and whim run the same general application; nonetheless, you can see how this option provides a deployment pipeline quite nicely. For example, caprice is production, while whim could be some staging environment or pre-production, where users could be temporarily routed in the event of a new deployment to caprice or if caprice goes down.

Related to URL swapping is Elastic Beanstalk's notion of versioning. With Elastic Beanstalk, you can deploy multiple versions of a war into a particular environment; consequently, you have total control over which one is "live" at any given time. This means, you have the ability, should the need arise, to roll back to a previous version, too.

There are a few other configurations available on the Elastic Beanstalk dashboard — you can view Tomcat logs and overall system events (that is, deployments, restarts, etc.). What's more, you can see various metrics reported via Amazon's CloudWatch. In short, everything you need to run a production application and related environment is a browser click away.

From IaaS to PaaS: AWS Is A One-Stop Shop

AWS is a one-stop shop for all your cloud infrastructure needs. Whether you need low-level computing resources or a platform for mass scaling, AWS offers it all. And best of all, the cost is very reasonable and you pay only for what you use.

— Andrew Glover is the CTO of App47, a company specializing in enterprise mobility. He also is the author of easyb, a BDD framework that won the Jolt Award in 2009. Previously, he was the President of Stelligent.

Related Reading

Getting Started with the Cloud: Amazon Web Services

Data Persistence in the Cloud with Amazon Web Services

Related Reading

More Insights

Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.