Disclaimer: Folks, I'm not a cloud expert. Until two days back all I knew about the cloud was sky, cotton, rain and sheep fur! I attended the Business Technology Summit '09 which dealt with Cloud computing, a lot! Special thanks to Janakiram MSV for his splendid speech on "Cloud Computing and Open Sourcing" which helped me get a hang of this new buzz word in the technology arena. I'm going to use a lot of stuff that I gathered out there. Any copyright infringements, trademark violations etc, let's take it offline. For now, just sing along...Oh Cloudia!
First of all, the concept of the cloud may sound complicated. But I've got some good news for you. It's actually a simplified technology. The Web has grown phenomenally until now just because it got simplified in the run. Cloud computing is another step to simplify it further. So I would recommend you to keep your apprehensions and doubts aside and read on with a fresh mind.
Throughout the seminar, I kept thinking of an analogy to best explain the web architecture. And to my surprise I couldn't narrow down on one until I started writing this blog. Hey, I'm a Pianist and a huge lover of concerts. Spot On...here's the analogy.
A fictitious company called "SoundofMusik" organized a concert for the first time. They evaluated a lot of theatres and chose the best "infrastructure" that pretty much matched their expectations: an open air theatre, with a raised "platform" at the center. They also signed an agreement with a sound and music services company. This company would "service" all music and sound needs for the concert so that SoundOfMusik need not take the pain of hiring individual musicians and sound systems.
I've specially quoted the words "Infrastructure", "Platform" and "Services" to make my point a bit more clear. You need an "Infrastructure" to seat the audience, a "platform" or stage to the seat the musicians and "software" otherwise music instruments, sound equipments for the musicians to perform. This is exactly how the web architecture works. You need a Server (infrastructure),a runtime/program execution environment (platform) and software to run a web application. Still not clear? you need a DELL or an IBM server at your server room which runs Windows Server or Linux Operating System (Infrastructure) that has a .NET or Java runtime (Platform) that runs the Sales Force application (Software) to view salesforce.com on your browser.
Downsides of the above setup
Scalability – The server performance is constant. There is no simple and inexpensive way today to scale the server's performance according to the traffic.
Hardware Cost – The cost includes procuring/upgrading the servers when technology requires it to be. Imagine running Windows 7 on an old 2000 PC! We need to keep the hardware in pace with the software advancements.
Software OS – Cost incurred in upgrading the OS software along with the hardware upgrade. Infrastructure housing Cost – The whole server setup needs a dedicated server room with a host of other costs incurred in coolants, uninterrupted power-supply etc
Resource cost – A server admin or a team of server admins to monitor and make changes to the servers.
So finally...What is Cloud Computing?
Cloud computing addresses the above drawbacks by taking the above told 3 architectures to a centralized space called the "Cloud", that's it!
In detail, think of cloud as a huge Data Center or a Server Room at some remote location, housing the above 3 architectures. The user picks and chooses the Infrastructure, Platform and Services that cater to the need of the hour, from another remote location. The services that the cloud offers can be classified as:
IaaS (Infrastructure as a Service) – Also called "HaaS" (Hardware as a Service) where one can pick and choose any hardware from the cloud. There is a flexibility to add or remove hardware on-the-fly programmatically! Now that's a huge boon. Till today hardware could only be configured prior and not on-the-fly. Your program could dynamically add, remove and modify a server and that's the power of IaaS.
PaaS (Platform as a Service) – Software programs run on typical runtimes or program execution environments like .NET or JAVA (JVM) called Platforms. The PaaS provides end-to-end solutions that aid the complete software development cycle without additional cost or downloads. Microsoft Azure, Google Apps to name a few, offer platforms on the cloud.
SaaS (Software as a Service) – Enough of software licenses...lo and behold, the concept of "subscriptions" is the talk of the town. No software CDs, postal delays, shipping charges etc. You get to the cloud choose what software you want and pay per subscription. I guess developers reading this blog get the real advantage a cloud could offer.
Quick 4 virtues of the Cloud
Elasticity – Ask any cloud patriot, his first proclamation about the cloud would be elasticity and it's definitely worth bragging about. Leveraging the power of IaaS, one could customize the server usage according to the need of the hour and that too programmatically.
Pay-Per-Use – Elasticity gives you a great cost advantage by avoiding bandwidth wastage cost. You pay and use only what you require for that moment.
Self-Service – Server/Sys Admins are not going to like this. Anyways, it erases the requirement of a server admin to aid the configurations. A handful of cloud providers in the market provide extremely easy to use cloud management tools that any technology person with very little knowledge about server management could easily handle.
Programmability – In addition to letting you configure servers according to your choice you could also set the configurations programmatically. Coding your application to use only one server when the hits are low and keep adding servers as the hits go high, is more like a dream come true for coders.
Now that the cloud offers a remote OS, all we need on the client machine is a browser or User Interface to display the desired results whereas every other operation can be done on the cloud itself. Did it ring a bell in your ears? If you listen closely, this scenario completely wipes away the concept of another OS in your client machine just to run the browser or the UI. So going forward you might not require an OS at all. The opportunity this unfolds is multifold. All you need is a browser/mouse supported TV to run or access your entire personal/official folder on the web.
I could even envision an optical browser on your mobile phone which could flash on a whitewall using which you could access or run an application. If my dream comes true, you would spot people sitting at railway stations, airports each using a part of the wall to check their emails and a few even running mission critical applications out of their mobile phones on a wall! If technology permits an optical browser to be touch-screen, we may not even need the mobile itself. A small gadget to flash your optical browser would be enough to perform all of which I've explained above.
Could you just fathom the plethora of opportunities cloud is going to open up? Cloud Computing is more of a paradigm shift than just a technology advancement. It's going to shape the history of computing in a whole new way. Cloud computing today is just the tip of the iceberg...the real power is yet to be unleashed.
Please come back for more updates on Cloudia...