Monday, June 29, 2009

Cloud computing - the recent BUZZ

Cloud computing is the most recent BUZZ word next to SOA amongst IT folks. Any old, robust, proven technology in a very new flavor is always a BUZZ. Belive me, Cloud computing is nothing very new, very recently invented. It has been with us for a long period and there are several enterprises who maintain their private cloud from times, and most of them I know are still silent.

Cloud computing is now gettings exposed as public and private cloud and now the new flavour interests people. That's it. Let me share few extracts of the discussion that I had with a friend in LinkedIn:-
Discussion topic:- CloudComputing, XaaS! What are the disadvantages?

Reply 1:- Cloud computing can be broken down into 3 basic categories.
  • SaaS - software as a service (using a hosted product such as or CRM Online)
  • PaaS - creating an application that is then deployed into a hosted environment (Windows Azure, Google App Enging)
  • IaaS - a virtualized infrastructure hosted in the cloud (Amazon EC2, GoGrid and to an extent Windows Azure)

Based on the above three categories is what we need to talk about advantages / dis-advantages. But one thing we need to keep in mind is that when we talk about Cloud Based solution it-self, we are talking about a low-cost, PAYG model. Thus know that we are talking about a PAYG model, we will definitely need to understand that there are going to be more challenges that roses. But there are also paid models available with Amazon and Google where they ensure a well defined SLA.

Question again:-
We are an ISV, we develop software in the tradional way. We install some desktop apps and a server. What would be the disadvantages if we would implement all three layers of cloud computing? Build our own Iaas, develop our SaaS on our PaaS. The user would access our apps through the browser. Why should we switch to the cloud(proprietary or from a vendor)? Why not? What speaks against it?

Reply 2:-
Question 1. When you say you would install some desktop apps and a server, then you are now under the IaaS category. Personally, I am not able to say that by working in IaaS you implement PaaS and SaaS, because they are three different categories. But essentially the provider would also have built a PaaS on top of IaaS and similarly SaaS on top of a PaaS, but there the provider has the entire control and knowledge of the underlying hardware. But in our case, though we get into IaaS, we do have limitations. Though you are said that you would be allocated a processor with X Ghz speed with XGB HDD and XGB RAM, it is only in a Virtualized environment. We would not be able to do any virtualization on top of the HW that we get to host VIA cloud. (This is equal to the Shared Hosting concept) Data security is something that you need to take into account since on a cloud based environment, you need to make sure that you don't share any of your data with others. This can be achieved only by encrypting your data when you load it to the cloud and your app only knows to de-crypt it. But this is going to kill your application response time. Also be aware of the SLA that the provider gives. If there is NO SLA, and your's is a critical business app, better to not chose cloud. Hence for the first question, there is no big disadvantage, but there are certainly a lot of limitations when trying to implement all the three layers by getting initially into a IaaS.

Question 2: For cost and scalability. Cloud is currently in the PAYG model. Let's assume that you have a site hosted in your own physical box at your site. Now you want to publish voting results of your place and you expect more people to use your site for that period of time. What would you do conventionally? Add HW. Right? But with cloud, we can host the result publish site alone as a seperate with a very high HW and BW to support the user volume of the one or two days and channelize it via our own site. Now after two days you can bring the site down. With Amazon EC2 kind of environment (Linux) it would cost you less that $5 for two days! Another example would be for a test bed. If you wish you test your SW to see it's performance you can very well do it from the Cloud by running multiple EC2 instances at the same time and kill all once your testing is done. To conclude on Q2, switching from vendor to cloud is a very high level decision that you need to make. The entire Cloud Computing space is not yet very mature except of one or two vendors in IaaS and SaaS space. So if your's is a mission critical application, it is better to be with the known devil as of now.:)

Question 3: Having spoken a lot in Q1 and Q2, I think it answers Q3 by itself.