Thursday, October 22, 2009

"Cloud computing" is rapidly becoming the buzzword of early 21st century. As more software companies create their cloud platforms on which to develop, the options for consumers will become as plentiful as the software shelf at your local Best Buy.

Cloud computing is a revolutionary step of the traditional web-hosted approach for applications. It's an evolutionary step for datacenters. In the old, traditional model, application owners would design their service and procure the hardware for their staged dev/test/production environments. System engineers would install this hardware and maintain it; if the hardware failed, service technicians would be dispatched to replace the faulty components. If the service was expected to scale as the number of visitors or users increased, the system engineers would have to periodically add additional hardware to maintain a consistent user experience. If a service, such as CNN, didn't continually add hardware to their network while the number of users increased, the site would become slow and eventually unresponsive. We've seen this when significant events have occurred where the hardware in place is incapable of handling the load of massive numbers of users hitting a system that isn't designed for that level of usage. For example, on September 11, 2001, most media outlet websites were completely unresponsive because so many people were trying to get to information. Cloud computing prevents this situation, if the developers of a service plan and architect it properly.

With cloud computing, you don't physically work with real hardware. Think of the servers on which services and websites deployed are all part of a "pool" of resources. Let's say when you create your news site, you think you will need 20 computers to handle the user load. If too many people start visiting your site and it becomes slow, you can easily add more computers to handle the load. In the "old" way of doing things, you'd have to buy more computers, get engineers to install them, then get architects or devs to integrate the new computers into the existing service. This could easily take at least a week, but in most cases, lead times would be around 1-3 months - certainly not fast enough to handle unexpected spikes in traffic. In the "new" way provided by cloud computing, it merely takes a few minutes to request additional computers from the "pool" of resources. This concept of adding "virtual" computers as needed is not new... but the way that the major cloud computing providers offer their service is.

If you refer to the figure at the right, you think of the bottom layer as the traditional or old way of managing a service's physical architecture. The bottom layer represents a physical model where you have to maintain servers, networking equipment, cooling, power -- all of the requirements to maintain a service in a datacenter. The next layer up represents an "Infrastructure as a Service." This is the first type of server virtualization, where you can create the components needed by your physical infrastructure, but using virtual components. This makes it easier to add additional servers as necessary by just increasing their numbers with a few clicks. You still have to manage the infrastructure, but it's easier than dealing with adding physical hardware. You can make immediate snapshots of your service and the data and fall back to that in case an upgrade or patches don't go as planned. You can easily create your staged environments and replicate them to finally promote them to production. The next layer is a managed infrastructure. It's managed for you, meaning you don't need to worry about the virtual infrastructure at all... just your application. You create you application then hand it to the managed infrastructure to run. Far less hassle, but also far less control. Your service has to be designed a certain way to leverage this type of cloud computing. But it's far more powerful in that you can focus your efforts on the application or service, design it to fit the managed infrastructure, and never once have to worry about infrastructure maintenance. A layer above a managed infrastructure is the "platform as a service." This is simply a solution framework that someone else has already created. It's a framework that you can use to build a solution upon, but by itself provides no immediate service to end-users. This becomes a bit more clear when you consider the top layer - "software as a service". This is software that performs some specific function and is typically hosted within a cloud platform. An example of this would be Windows Live Hotmail or Gmail or Salesforce.com.

In my next post, I'll review the major players in cloud computing today.