Saturday, July 25, 2009

Cloud Computing - Part 1 - Definition

Last week I talked about the concept of virtualization and its potential for changing the way we implement systems. This week I want to begin to talk about one of the ways that virtualization is being put to use in a big way already but, in the very near future, will see explosive growth. I'm talking about "cloud computing". You may also hear it referred to as "utility computing".

But, first, a step back. For those of you old enough to remember, the original way we implemented computing technology was with big expensive mainframes locked in special rooms and manned by very "special" people. You accessed them via "dumb" terminals. If you were lucky you had one at your desk. If not, you signed up for time on one in the terminal pool.

From there, in the mid to late 80's we slowly saw a shift from mainframe computing to what we called "client-server". Here, we had server computers - much smaller and cheaper than their mainframe cousins - but we also had PCs on our desks to replace the terminals. Some of the processing work was done on the server systems and some of it is done on the PCs. This was a far cheaper and more flexible way to push computer power out to the people. Client-server technology is still the prevalent computing paradigm in place today in nearly every office.

But, hold on.... the times are changing again and a new computing paradigm has appeared and is slowly beginning to take over. Why? There are many reasons but it always boils down to cost. There is now a cheaper and more flexible alternative way of delivering computing power.

So, what is cloud computing? Let's start with an analogy. Think of the electrical power that is provided to your business or home. In the early days of electricity, companies had to generate their own power (somehow) and pay people to oversee and manage the power generation system. Needless to say, it was expensive! Today, of course, power is provided to you from a centralized power grid. You don't need to have your own power generator and you don't need to hire someone to manage it for you. You don't worry how or where the electricity is generated - you just pay for what you use. The result? Electrical power is much cheaper today than it was when we all had to generate our own. (I shamelessly stole this analogy from Nicholas Carr's book "The Big Switch". Get it and read it if you want to understand why this change is inevitable.)


There is a parallel with what is about to happen with computer services. Today, in order to get computing power, you buy computers - desktops, laptops and servers - and pay someone (like us) to install, trouble-shoot and manage them. It's expensive - as I'm sure you've noticed!


Well, what if you didn't have to buy and manage your own server systems? What if server and desktop computer power was available to you from a central computing grid (perhaps outside your four walls) and you just used what you needed, when you needed it, and paid for what you used? That's the definition of "utility" computing. The computing grid? That's the Internet. The term "cloud" comes from the idea that the Internet is like a cloud of computing power. Hence, the term "cloud computing".

Imagine this... what if you were able to put inexpensive network access devices, almost like the old "dumb" terminals, on your employee's desks and access a limitless amount of computing power? You don't know or care where it comes from... it's just computing power. You pay for only what you need when you need it... much like the electricity that comes to your office or home. You don't have to buy computers... you don't have to pay someone to manage, install, or trouble-shoot them.

Sound hard to believe? We're closer than you think. There are "cloud services" companies out there on the Internet who are already starting to offer services like this. Think of Hotmail. Think of Google. Those are true cloud computing services. You don't know or care where they are located, you don't have to maintain the computers they live on, you don't have to worry about storage. They are just services available to you on the Internet. Of course, not all cloud services will be free like Hotmail and Google but you get the idea. Another excellent example is Salesforce.com (check them out at http://www.salesforce.com/). They offer a complete cloud-based CRM system on a subscription basis.

Cloud services don't necessarily have to be out on the Internet, though. The technology can be used internally as well. Computing resources would be placed in an internal "cloud" and employees access and use the resources as needed when needed. Ultimately, companies may blend their internal clouds with the external clouds to provide limitless computing power to their employees.

You might be wondering... where does virtualization tie into all of this? Well, it's one of the underlying technologies beneath cloud computing and it's part of what makes it affordable. Cloud services providers have many virtual host servers and these systems are hosting many, many guest servers. Perhaps we may put some host servers in your office and they will offer a variety of cloud services by hosting guest servers. Complicated? It is a little bit... but over the next several posts I'll talk more about the benefits and concerns regarding cloud computing. We'll also talk about practical implementations today to prepare you for what's coming tomorrow.

Stay tuned and, as always, I welcome your comments and questions.

Wednesday, July 15, 2009

Virtualization - What's it all about?

You may have heard the term "virtualization" being bandied about the mainstream news lately. It's one of the "new" technologies that is getting some attention because of the significant cost savings and improvements in system reliability it can offer.


But, first, some definitions are necessary. When you "virtualize" a computer system what you are doing is simulating that computer on another system. For example, if I was to virtualize system "A" on system "B" I would take the following steps:


a) Take a snapshot of system "A".

b) Move that snapshot onto system "B".

c) Shut down system "A".

d) Start up the snapshot of "A" on "B".

From that point on, it looks to the rest of the network that system "A" is operating as usual.


In this scenario, system "A" is a "guest system" and system "B" is the "host system". If system "B" has enough resources (CPU, disk and memory), then it could conceivably host multiple guest systems - each guest is totally unaware and unaffected by the others. That, in a nutshell, is virtualization.


The first advantage you can see from virtualization is decreased hardware costs. If I can buy one system and host many other virtual guest systems on it, then I'm saving by not having to purchase as many physical computers.


Generally, virtualization has been used to consolidate server systems. Most physical computer servers today are vastly under-utilized. The increases in hardware capacity have out-grown the demands of the software so, as a result, most servers don't even break a sweat. By combining many guest servers onto one hardware host server, you use up more of that excess hardware capacity that you've already paid for.


Today, though, we are starting to see virtualization in many different areas. Desktops are being virtualized and so are individual applications. It gets complicated but the basic idea is that virtualization makes better use of computer hardware. That means you spend less on buying new computers and you save in the "green" aspects such as power usage and cooling.


How does virtualization improve system reliability? A system that has been virtualized is essentially "hardware independent". It can run on any virtual host system. So, if a physical system breaks down, you can move the guests systems it hosts to another physical host system without any reconfiguration. There are even tools to automate the fail-over process thus providing 100% up-time.

How well does it work? It used to be that virtualization was purely done in software. You would install virtualization software on a server and it could then host guest systems. Over the past few years, though, all the major chip makers have moved the virtualization smarts down into the hardware. This has provided a huge increase in performance to the point where it is nearly impossible to see much performance difference between standard systems and virtualized systems.

Large companies are already heavy into virtualization and are reaping the rewards. Lately, though, even base-level servers are coming with the virtualization support built in to the processor. This means that smaller businesses are also positioned to take advantage of virtualization.

As of today, in addition to virtualizing most of our own internal systems, we are using virtualization technology at four of our client sites. In each case it is being used in a slightly different way but the common benefit is that all are seeing performance improvements, better reliability, and, of course, cost savings.

But, we're just scratching the surface of what this technology can bring us. In the coming weeks I'll explain how virtualization, in combination with high speed Internet, is going to radically change the way we build, install and configure systems and how that, in turn, is going to save you money while making your systems more reliable and easier to use.

Stay tuned! Please feel free to post comments and/or questions directly to the blog.