Igor Royzis

Igor Royzis

by Igor Royzis of PE-Nexus

I remember just 3 years ago Web 2.0 was a hot buzzword among Internet startups. PE-Nexus had Web 2.0 mentioned on a number of informational pages and marketing material until about 6 months ago, when it became apparent that Web 2.0 is no longer a differentiating factor for Internet companies, but more of a norm.

So what’s next? Cloud computing. Companies started jumping on a cloud bandwagon a couple of years ago, even though cloud is just a new term for distributed computing infrastructure packaged and marketed differently. What made cloud a very attractive option for startups is (1) easy entry, (2) pay-as-you-go pricing structure.

There are 3 types of clouds:

  • SaaS – Software as a Service, which is basically a way to rent software instead of buying it.
  • PaaS – Platform as a Service, which provides an environment for developers to upload and host their code without worrying about the underlying infrastructure.
  • IaaS – Infrastructure as a Service, which allows companies to select appropriate, fully managed infrastructure components and pay for them as-you-go.

Internet companies which have simpler requirements derive the most benefit from using PaaS.

More sophisticated sites will benefit the most from IaaS or a combination of PaaS + IaaS, which is exactly what Amazon offers via Beanstalk, EC2, RDS, S3 and several other Amazon AWS offerings.

It’s especially a no-brainer for Java based sites using Tomcat and MySql. Beanstalk allows developers to drop an application war file and have the site up and running in a couple of minutes. Here are the steps in a nutshell:
Create an instance of Amazon RDS (MySql database service). Go through normal process of creating a schema and importing data. I prefer to use mysqldump to move data around.

Create Beanstalk application and upload application war file to Beanstalk. This creates a new version for your application. You can have multiple versions of your application uploaded to Beanstalk.
Deploy application to the Beanstalk environment. This creates Amazon EC2 (elastic cloud) instance and deploys your war file into a pre-configured Tomcat 7 instance (or Tomcat 6 if you wish).

If your application runs completely of off MySql in terms of data, then you’re all set. You can access your website immediately. If, on the other hand you have more complex requirements, like allowing users to upload binary data, documents, images, etc, then you should take advantage of Amazon S3 (simple storage service) which has an api to use for storing and retrieving data.

You can do many more things with Amazon AWS. Do you run processes which require massive resources and process lots of data and run all night to produce some reports or calculations by start of business day? You may already be using Hadoop for that. Amazon Elastic MapReduce (Hadoop customized by Amazon and configured to run in the cloud) will make your life so much easier. Hey you can now compete with large financial institutions who spend millions of dollars to manage sophisticated infrastructures to run portfolio analytics and other calculation rich services. Not that you want to do that, but you can.

You should of course decide how to configure your cloud services in terms of load balancing and failover. Estimate your traffic and growth trajectory and request desired configuration. Don’t go overboard because you’ll be paying for more complicated setup. But also don’t discount the risks of a server going down. It will go down one day and most probably the day you have lots of traffic. So make sure to have at least 2 servers and possibly even spread the environments across 2 different geographical regions (e.g. East coast and West coast).

Good luck.

To the cloud!!!