Wednesday, March 17, 2010

Cloud Computing - Enabling Technologies and Techniques




In this post I will talk about some of the common techniques for providing the cloud services.

SaaS:

The primary technique, many would argue, for SaaS is the Multi-Tenancy; means that single instance of application should be able to service multiple customers. This however is quite true if I look at it from purely business perspective, as it helps save you some money. But as a consumer I am not concerned if the same instance of the application is being used by hundred other users. I am concerned about my data security and availability of the application. So “Multi-Tenancy is DESIRED but NOT REQUIRED” for SaaS.
Sometime it might not be possible to re-architect the application to support multi-tenancy, virtualization comes in for rescue in those cases. You can host separate instances for each of your customer. It might be possible to use this model if you expect your customer’s to be in a limited number. But if you have many customers to support, providing/maintaining separate instance for each customer can be daunting task. In such case you should look at application closely if it provides some level of logical separation within the existing architecture and use that separation to support multi-tenancy. Another to provide multi-tenancy is to have single application instance of application but have multiple database instances.


PaaS:

Some most powerful providers of PaaS are
·         MS Azure
·         Google Apps
·         Force.com.
Out of these three MS Azure is again the most powerful because it provides the cloud platform which is very similar to what developers are used to in a non-cloud environment. Developers do not have to struggle with learning new language, database skills and ways-of-working. Google Apps and Force.com on the other hand need developers to learn their own APIs. Google Apps however score better than Force.com as it supports Java and Python and the developers need to learn only “Big Table” database concepts. Force.com would require you to learn APEX, however Force.com is the fastest way to get your website up and running.


IaaS: -
Virtualization is the key to provide IaaS. It’s the technique to provide an abstraction of computer resources and divide those among multiple Operating systemns known as virtual machines. It separates the hardware from OS and enables a single set of hardware to run multiple OS. Each OS works identical to as if it was on physical machine. The software providing abstraction capability is called Hypervisor. Some standard hypervisors are VMWare, Microsoft Hyper-V and XEN (open-source).

Virtualization

My next post is going to be around the concerns and issues about the cloud.

Wednesday, March 10, 2010

Cloud Computing – How does it impact me?


In this post I will talk about how it impacts you as a provider or consumer. I will try to address this based on various actors.

Software/Applications ProviderAs a provider of the software, you need to enable the access to software thru internet, not necessarily over HTTP but remote access. This could mean re-thinking the architecture of some your applications. Another key aspect that provider need to add to the software will be the ability to meter and bill the usage of the software. And if provider wants to maximize the profits from the limited infrastructure, they will need to make their software multi-tenant, which again would mean re-architecting the software. You will have to think the application architecture to seamlessly scale (or burst as in Cloud computing terms) into public cloud from private cloud.

Software/Applications Consumer
This model is impacting the way software is consumed and delivered. Since it is delivered thru internet, as a consumer you will have location agnostic access to the software. You will only pay for the time you use it and will seamlessly get the upgrades/patches. Switching to competing software will be quick and easy, at least in terms of using it. For data, a lot will depend upon provider in terms of interoperability offered. You will not have to worry about software upgrades and patching. Although you will have some level of unease, because you would not know the exact physical location of your data. This will concern the enterprise users more than individual user. Industry is gearing towards addressing these challenges as well, I will talk about it more in my following posts.

Date Center Manager/Sysadmin
As a data center operations manager, you would need to design the infrastructure to be flexible enough to be able to scale up and down on-demand. E.g. you would need to make sure that your networks supports the additional IPs needed for the new virtual machines that you add, or you have flexible firewalls to add the new servers provisioned on Amazon to you network. You need to train you sysadmins to be able to administer and operate the instance running in cloud. You will need to create new strategies for disaster recovery and backups to include the servers running on cloud. You can be little relaxed on the capacity planning but still need to have solid understanding of what you need in mid-term and long-term.

CxO
In Cloud Computing era, consumers will buy software and computing (of course not all of it but a good percentage of it) as they buy electricity i.e. any commodity. The economy of scale will enable the provider to delivery software and computing cheaper than they currently do. The reach of the computing power will increase in the developing countries. All this gives CxO an ability to reach to new industries and geos. The availability and the low cost of software will enable the education institutions to teach practical use of the technology rather than only theoretically, especially in developing countries. SME's will be able to benefit from the enterprise software that was earlier out of reach because of high entry cost. E.g. using a SAP or PeopleSoft as a service. 

Regulators
There will be a need to new regulations related to privacy and security. Current regulations would need revision to account for the virtual machines and specially the sensitive data handling.

In the next post I will talk about the enabling technologies for SaaS, PaaS and IaaS.

Cloud Computing - Unclouding

What is Cloud Computing?

Is it a new technology, buzzword, model of computer/laptop, software, processor…? Cloud computing is defined differently by different people; some call it an umbrella terms to collectively define various technologies, other call it a new domain in computing etc. The definition which is closest to what really Cloud Computing is that it’s a new operative model of IT, which means it changes the way the IT is delivered to end-consumer. This means that it’s not only technology, of course the enablement is thru technology, but it has a lot other aspects to it. It means the new way of thinking the economics for IT, regulations, people, infrastructure, applications and everything else related to IT. To understand the impact of cloud computing there is a well accepted division into three major areas:

Ø  Software as a Service (SaaS)
Ø  Platform as a Service (PaaS)
Ø  Infrastructure as a Service (IaaS).

SaaS: Think of a traditional way of software buying and licensing. You buy a software (on a media, CD, DVD, or simply download the installer) and a license key to go with it. You own the software and then depending upon the license, again buy the software upgrade and support services. Now think of scenario where you could simple rent the software as you rent a cab. When I say renting, it does not mean like rent-a-dvd from blockbuster store, but rent a movie online from you cable provider where you don’t need the DVD player. This model is called SaaS, where you do not own the software but simply pay to use it. And how do you use it, from your web browser using internet. This is very successful model of IT delivery where the need of customization for an individual and/or organization very low and everyone uses the same set of feature.


PaaS: Again if you think of the traditional way you develop a new website or any other software. You will need a machine, a development environment, a database, an app server etc. But with PaaS, all you need is a simple computer/laptop and internet access. You login to your PaaS provider site and you have the entire environment available there for you to start developing, testing and deploying the application, everything thru just the browser. There may be cases where you would need a small software on your local machine to be able to develop the application, e.g. Google Apps, where you would need an eclipse IDE on your local machine, but rest of the software e.g. Appserver, database etc. is provided by Google Apps.  

IaaS: Let’s say you are running hosting a site. You have a very low traffic to your site and you are able to maintain it with 1-2 servers that you originally bought. But all of a sudden the traffic to your site increases and you need more computing power. But when you approach you hardware vendor, he/she asks for a 4 weeks lead time to get the machine of desired configuration. What do you do? You cannot wait that long. So you can reach out to an IaaS provider to get the extra machines, those are not on your premises but you simple rent those over the internet and simply host your application on rented servers. This all can be done within hours, if not minutes. Amazon EC2 and Microsoft Azure are two big players in this space.

Essentially, IMHO, Cloud Computing is about not having to buy/own the component (hardware/software) but to rent/pay-as-you-go. This might be seen as gross over-simplification of the concept but, I firmly believe, is the true sense of the Cloud Computing.

In my following post I will talk about How cloud computing will impact you as a comsumer and/or provider.