I floated a site into the cloud, and it didn't rain down in chunks...
My baby steps migration
WAR on the Cloud, part 1: The "cloud" is still somewhat in its novelty phase as with virtualisation and (say) XML of yesteryear, when simply waving them at an application would magically make all your troubles drop away, like sessions on a crashing web server.
All of these technologies do have their value, just not as panacea.
For example, in the cloud you are likely to pay for every resource you use – CPU, bandwidth, storage, etc – which makes you vulnerable to ambush bills, in the worst case from a targeted DoS attack on your cloud-hosted sites, whereas typical conventional hosting arrangements have most costs capped.
Also, in the cloud access to storage is a complicated affair: if you have a variable number of front-ends, how do they coordinate safe access to writable data? For those operations that suit a database then maybe its concurrency controls are sufficient, but not every app can afford transaction overhead. And getting data in and out of the cloud is likely to be chargeable too.
I have a moderately busy website that gets a few million unique visitors per year (depending on how you count 'em) and that I have already distributed to mirrors in data centres in the UK, US, India and Australia, with a dedicated (expensive) machine in each location on Solaris and Linux. This hand-crafted "cloud" already works fairly well. Downtime on a single instance doesn't have much impact on the total number of daily visitors, and users are automatically bounced to a "closer" mirror where it will improve responsiveness.
For the two main mirrors in the UK and US having a dedicated box makes sense; they are fairly busy most of the time and I can hang other services on them such as DNS secondaries.
The two other boxes are relatively under-utilised and expensive both in terms of money and indeed energy (think carbon footprint) but, as it stands, the technology is too heavyweight to share a box on conventional JSP hosting services.
I wanted to test the waters and see if I could migrate one or both into the cloud, but keep geographically close to end users around AsiaPac.
Rather than try to do this all in one huge "big bang", probably involving changing a significant chunk of the 60k lines of Java in my site, it made sense to first test the ease with which a much simpler site, for example a static Apache or simple JSP/Java site, can be put up within an existing cloud environment, such as Amazon's.
In the first instance Amazon's "AWS Free Usage Tier" looked like a good place to start, with the right price, and setting up an AWS (Amazon Web Services) account took a few minutes.
A few minutes' reading in the AWS FAQs suggested that the "AWS Elastic Beanstalk" could be the right place for my site to end up, since it accepts WAR (Web ARchive) files that I already build, and offers automatic scalability and so on, which is more than I currently achieve with my home-brew technology.
Since I already develop my site/app in Java with Eclipse, the first step was to download the appropriate plugin from Eclipse, which includes the AWS SDK and a bunch of other stuff. The site also has some useful short explanatory videos such as this one on getting started with the AWS Elastic Beanstalk.