Head in the Clouds
It seems like the next buzzword in the industry after Web 2.0 slid into the horizon as last years prom queen. As with web 2.0, there are a lot of definitions and assumptions floating around on what a Cloud is exactly. Is it related to Grid Computing? Is it old wine in a new bottle? At this point the hype far outweighs the actual offerings out there. Oracle’s Larry Ellison famously dissed Cloud Computing and likened it to the Fashion industry.
Lets dive into this new buzzword and see what it means to the software industry.
What is a Cloud?
Of course we all know what a cloud is. But what essentially is Cloud Computing?
A quick search will yield you plenty of definitions, some succint and some wildly abstract. So what I offer here is essentially a consensus definition. A Cloud is like the bubble/cloud we engineers draw on a board when we design a complex systems. We roughly know the services this “cloud” offers - but are unwilling to delve into or care about the actual hardware/technology that this “cloud” runs on. Hence in this view, Cloud Computing is a concept in which virtual/utility computers/resources are sprung up on demand to perform services required to run an application.
Of course, other than just computers/resources, you can think of data as being in the “cloud” as well (as in, you dont know/care how this data is stored - as long as you can get it/store it back on demand).
Hence, by that definition,
Cloud Computing = [technology(Infrastructure-ops + Apps)] + [Information(in-cloud + in-between)]
If you think that the above defintion is too abtract, here are a couple of examples.
Say you want to calculate the number of hyperlinks that are in existence on the web. You would normally need a few machines to crawl the web and perform the calculation. However, this just happens to be a research/fun application and you dont want to purchase the resources required to perform this calculation. With Cloud computing, you “lease” a set of machines on demand and run your crawlers and aggregators there. And once you have a satisfactory result, you just terminate this lease. For e.g. using http://80legs.com, thats exactly what you can do. It runs java code on hundreds, thousands, or tens of thousands of distributed computers (they use Plura Processing to scale it up to about 50,000 distributed nodes).
On the other hand, you might have a real web application that needs to be hosted. But the load/traffic on this site is not constant. Certain times based on an Event, the traffic surges - and other times its a trickle. Cloud Computing using say Amazon EC2 comes to your rescue here. You essentially create an “Amazon Machine Instance” (AMI) - with the code/software required to run your application. You store this “image” on a Storage service - such as Amazon S3. Then, you just launch these images/apps as and when you require them. You can have 0 or 1 instance of your application running at any given time and when the traffic flow increases, you deploy a few more on the go. You pay by the amount of time these machines were running and the bandwidth consumed - well roughly speaking.
Commercial offerings on Cloud computing are still at an early stage and the players involved are still trying to perfect the setup. But it is something that is definitely catching on and hence deserves to be paid close attention to.
Who are the players?
Although Grid Computing has been available for a while now, the buzz for Cloud computing just started recently when web 2.0 companies started hosting their applications in the Cloud. Amazon EC2 currently seems to be the market leader in terms of both the buzz and maturity. Other players include Google AppEngine, Sun microsystems, Microsoft etc. If you are looking for a brief comparision of their offerings, this page here could help -> http://weblog.infoworld.com/tcdaily/archives/2008/07/video_tours_of.html?source=fssr.
Who are the potential consumers?
- Startups
Using a on-demand cloud hosting is good idea for startups.
For one, you dont have to invest in hardware until you know what your scalability requirements and yes, its different from leasing a cage at a datacenter where you have total control, but its so much more better on your wallet.
- Small Business
Well, at this point you are more “stable” and know what your load and hosting requirements are. It still might be valuable to host your application in the “cloud”. But your mileage may vary vis-a-vis leasing a cage. Note that this is mostly in terms of the cloud (such as EC2) as a hosting platform.
- Mid-Large Companies
For large enterprises who already have an established IT organization, “Cloud Computing” still provides value in 2 circumstances :
1) As an “Overflow Buffer”: Enterprise no longer need to over-provision their data center for the peak load.
They just need to install equipment in-house for the average load. When peak load arrives, they just automatically provision additional resource from the cloud and redirect the excess load to those extra resource. This means huge equipment cost savings.
2) As an “Experimental Playground”: Enterprise need a fast turn around to test out new ideas and customer acceptance. But it is hard to justify equipment purchase before the idea is proven. So they can deploy the new project in the cloud to test out the acceptance. If it doesn’t work, they just tear the project down and no equipment is wasted. If the idea work, they start to purchase in-house equipment and migrate the application from the cloud to the inhouse data center.
For these large enterprise, their ultimate operating environment can be a mix of “data-center” and “public cloud”. One major challenge is how to migrate their application components seamlessly between the “private” and “public” facilities efficiently without sacrificing security, reliability and performance. This is an area that Amazon/Google/Microsoft are not motivated to solve (as Amazon/Google don’t like your datacenter portion and Microsoft won’t take care of your enterprise Java apps). This is an area in which Startups can step in.
- Financial/Private/Secure Companies
For these institutions, the data security and handling is of paramount importance. Amazon Ec2 for instance does not provide SLAs except on a very few AWS APIs. For e.g. whats the garauntee on data stored in the S3? What is the round trip garauntee for data access from a SimpleDB? There are no response time garantees. This is going to be a challenge. It might make more sense for this sector to invest in “private clouds”.
Gartner has predicated “Private cloud networks are the future of corporate IT” at http://www.networkworld.com/news/2008/111208-private-cloud-networks.html
Now that we went through the definition of the cloud, the players and who it can benefit, its clear that Cloud Computing is here to stay. Which means to say that there is a going to be a definite impact on the Software Industry.
For e.g.
- Licensing model - how does one deal with a “per cpu” license? In the cloud, resources are booted up on demand - sometimes in 100s. What about Open Source licences?
- Startup opportunities.
- There will be opportunity for app/service vendors to build standardization, virtualization and services on top of existing cloud infrastructure.
- Create Hosting Software Stacks (e.g. AMIs)
In my next post, I would like to explore the impact Cloud Computing means for most of us when we architect web applications.
Start Slide Show with PicLens Lite

