Cloud computing is one of the latest buzzword you keep hearing from pretty much everywhere. I have had numerous discussions on this with my colleagues & friends. I find that cloud computing is a very loose term and it can easily get mixed up with grid/clustered computing or highly-scalable multi-tiered systems. I am going to express my view points on what cloud computing is all about.

Image Courtesy: Mick Wiggins

Before I go further, the point I am trying to make out of this whole article is, we are just in the early stage of this computing paradigm shift. We don’t know how its gonna shape or what it will be called in another decade or so, but ultimately, the relative end point for this whole quest is what we call now, the “Cloud Computing”.

For the sake of this discussion, let’s talk some history here. As you might know, the whole computing system architecture started with big-sized machines like mainframes & mid-range systems. Those huge machines were accessed through terminal clients, emulators, consoles etc. Then, the biggest breakthrough/revolution was undoubtedly, moving towards personal & desktop systems. Obviously, we all know those systems got shrunk more & ended up in the form of laptops, tablets, smart phones etc. If you look at the evolution of computing paradigms, we didn’t start with networked computers. We had the room-sized machines connected only to few computers and then got expanded more & more in the form of LAN, WAN, Internet, Intranet, Extranet etc.

There is almost a parallel line running between the evolution of computing system architecture to the network system architecture and obviously they are also very much interconnected & intertwined. If you look at almost any computers/tablets/smartphones that exist today, there are two realms(lack of better terminology :)) we are dealing with. One is the Device & OS realm (which includes BIOS, Firmware, Kernel, OS etc.) and the other realm is “The Network”. I don’t know if you remember, back in the day Sun Microsystems(now its Oracle) came up with a revolutionary concept called JINI. And unfortunately, because of various limitations like software, hardware & network infrastructure, it didn’t go very far. In my opinion, the way I see is, “Cloud Computing” will/could be JINI done right. We weren’t ready for JINI at that time. But now, because of Moore’s law & stuff we are able to enter so called “Cloud Computing” era.

OK so, is everything running on Internet infrastructure be called cloud computing system? Well, not really. Why not? Isn’t the internet’s new fancy name is Cloud? :) Thats where the confusion starts. Unfortunately, there is no clear definition for cloud computing exists as of today. But, organizations like IEEE, W3C & others are working on standards & specifications which would shape up slowly and help us understand what cloud computing really is.

Alright, lets talk some layman language here. I don’t care about standards & stuff, how will you explain “cloud computing” to a non-techie person? If you switch on a computer/laptop/tablet etc., what really happens? The system get booted and OS (Linux/Windows XP/Android/iOS etc.) get started and it connects to the World Wide Web also known as Internet through wired/Wifi/3G/4G connection. Then, you open a web browser and log on to websites(like Facebook, GMail etc.) and work on web related stuffs(like checking emails, adding FB status updates etc.) So, there is a clear separation between my device and the internet I connected to. So metaphorically speaking, the gap between those will slowly get shortened as we move towards this whole cloud computing paradigm.

OK, What if I don’t like this constant connectivity? I don’t want to be connected to the Internet all the time. I’ll access/connect only when I need it. Do we have a choice? Here comes the “why” part of this discussion. We already reached a point that we pretty much cannot do anything with a desktop, laptop or smartphone without the network connection, which wasn’t the case like some years back or so. That kind of dependency is growing very faster, not only on personal computing devices and also on other consumer electronics & devices. I am not saying we won’t be able to drive cars without the internet connection. All I am suggesting is that the dependency will get more stronger. There are already cars in the market that can alert Facebook status updates while you are driving. Yes, it sounds ridiculous now. But, what will happen eventually is that those systems & services will mature more & get streamlined as we go forward.

There are two sides to this story. One is the service aspect of it. You can call it Software as a Service (SaaS), Platform as a Service (PaaS) or whatever you like. Bottom line is this. We all know Facebook, GMail, Twitter etc. have become a universal & ubiquitous aspect of life. It is accessed through desktop, smartphones and from every corner of the real physical world. So, the dependency factor on these services is always going to grow. The companies hosting those websites/portal/services should be able to accommodate this explosive growth. Their web service systems should be able to expand horizontally(applications, frameworks, API, SPI etc.) & vertically(hardware & network infrastructure). Some examples are Amazon EC2, Google App Engine, Cloud Foundry etc.

The other aspect of this story, which you don’t hear a lot is, the device/end-client side of it. As I said earlier, more & more devices will start depending on the cloud based infrastructure. The device client will start needing more processing cycles, which would be wiser to be done in the service infrastructure(which possess hardware/software elasticity) . So eventually, the client side processing will get shifted more towards the service infrastructure with the help of blasting or unlimited network speed. And, connecting to the network part will get more embedded into the device user is accessing from. What I mean by that is, it will reach deep into the OS/Kernel layer rather than just the application/browser level. Some of the examples I can think of here is, Chrome OS, Jolicloud etc.

My speculation or hope is, both the service & client/device type technological advances will be converging at some point in the future. And eventually, we will have one mega thing that we all are connected with. We don’t know what we will call but, it will be just ONE thing. If you want, you can call it a World Wide Computer for now :)

I haven’t really touched on pros & cons of cloud computing in this article, which I will try in my future articles. The point I was trying to make here is cloud computing is in it’s infancy. We are going towards that moving target. We have laid our foundations & platforms. They are shaping up slowly and getting matured. But, we are already seeing some realization of it.

Thoughts, comments?