Wednesday, October 28, 2009

Cloud Computing in a nutshell - a brief

Here I am not trying to delve deep or to make anyone understand everything about cloud computing, but for those who are just lost about what this means (just as I was).

I atteded a briefing organized by Sun and Intel on Cloud Computing and, although it was intended for marketing purposes than teaching, the good part was that I got to really understand what the industry really means/desires by cloud computing. It's just like SOA (Services Oriented Architecture) - a jargon for a lot of things that have been going on, but have not yet been standardized. Everyone you meet will have a different perspective of cloud, but all of them are right and none of them are complete (they cannot, since one of you might do something that fits into this concept and call it under this umbrella). But the most important idea is sharing of resources.

Today, we have hundreds of servers for, say a huge system with several individual applications interacting with each other (e.g. SOA world), then their backup and load sharing ones. Through cloud, the most important achievement currently is that all these servers will now have virtual containers, instead of real ones. So the whole cluster of servers act as one server with several OS instances, several application instances, common storage, etc. Load balancing, storage issues, etc are avoided. This would be an example of something known as a private cloud. It is heavily used by mordern companies like Yahoo, google, IBM, etc. But client solutions haven't really been with IBM as much as Sun, Yahoo, Amazon or Google.

Another advantage and something that might really benefit the startups is the public cloud. In public clouds, users may simply register for usage of a cloud and is charged basically for the usage. So, a startup can simply put their piece of code into a public cloud and pay oly for the usage, which will be small initially and might grow with the base. The benefit is that scalability is the cheapest and with high resiliency in such systems (even with 5% failures, downtimes are not more than a few seconds and usually the failures are a lot less with good code reducing downtimes further) there is no way a small company could have afforded such a luxury.

Then there are other things like security levels, programming standards, cloud interactions, Power consumption, Energy Efficiencynetc. But those are out of basics that I wanted to share.

The most common example given is that of Amazon's EC2 (Elastic Computing Cloud) (http://aws.amazon.com/ec2/) and that of Google. Others like GoGrid (http://sn.im/srz30 [www_gogrid_com]) offer other kinds of solutions. Then there are solutions that are provided for clouds by companies which don't own clouds - closer to consultancy. There are other benefits for clouds e.g. a movie being released usually peaks it's website usage only near it's release dates, why spend on hardware for just that time - use a cloud. Clouds are not just about hardware consolidation. Grid Computing is also a part of cloud computing. Th`e term is very generically coined to incorporate any kind of resource sharing. Part clouds like webhosting on clouds and business logic with the private servers will probably benefit in IT industries. Again several consultancy jobs are awaiting in this domain. The technology and methodology is not new and has been in for a decade, but like SOA, which came up as a useful standard (with companies still not agreeing on some parts of it) because of the ability to plug-in solutions from various vendors, this will take over for the cost benefits and the other reasons that I have mention (and not mentioned).

For Future: protocols for inter-cloud communication, standards, part function-outsourcing (like report generation load on cloud, etc.), cloud architects, consultancy for clouds and experts in this area will be coming up. There will be better frameworks and Java (and other web) languages will adapt to include this. It's imminent. All the infrastructure has been under development for years, it's finally stable with things working together a lot better. So in a few years, like SOA, this will be in-demand. But then unlike SOA, this seems to be to large for people to be able to really come up with a unified solution, so probably as more clouds are created there will be a framework and an architecture and the definition of the "cloud offerings" will change.

So, let's call this subset as OnDemand-computing. :D