Sunday, July 3, 2011

What is the Cloud?

There is a lot of noise about this thing called the cloud and while many people have a basic understanding that it has something to do with running software on the internet I thought it was about time to throw my hat into the ring to try and clear this up.

Starting With The Basics: How Does a PC Work?

Let us cast our mind back to an ancient time when there was no internet. If you wanted to run software, it required your own computer and it went something like this:

image

Let’s start from the bottom and work our way up. A computer has a thing called BIOS. This is the program that starts up when the computer is started. It is hard-wired into the mother board (the big flat circuit board inside your computer) and its job is to start the various bits on the motherboard up and to get the operating system going.

The operating system is, ultimately, software but very special software. The operating system is the gateway between the stuff on the motherboard and the software running on the computer. In this sense it is a platform that all other programs run on.

Software is simply computer programs that run on a computer. Therefore anyone that says ‘no software’ (you know who you are) is talking nonsense because even if a program is running on a server in Singapore and the results are being displayed on a monitor in Boise, Idaho it is still software. Anyone who tells you something different is trying to sell you something.

The hard drive is where all data sits. This includes software, data, music and anything else encoded into 1’s and 0’s.

When a program is run, it is copied into memory and the CPU (which actually does everything by coordinating all the other bits) works with it there. The reason it makes a copy is that memory is faster to read and write to. The reason we don’t abandon the hard drive and make the whole computer memory is cost. This being said, back in the early days of home computers, things like the Commodore 64 or Sinclair Spectrum 48k had no hard drive, just memory (64 kilobytes and 48 kilobytes respectively).

Eventually, when the software does something, it needs to tell the user about it and this is where the screen comes in.

As a disclaimer, I am not an IT graduate, I am a physics graduate that got into IT. Therefore this model may not be completely accurate. However, it has been my working model for the last 25 years and works wonderfully for this article.

Thanks For The History Lesson. What Does This Have To Do With The Cloud?

The thing is, if you understand how a computer works, it is easy to understand the cloud because all the cloud does is replace bits from the computer and use bits somewhere else in the world. Generally speaking, the more you use someone else’s bits, the less control you have on what those bits are. This will become evident as we get into the explanation.

Let us look at some of those cloud terms:

Infrastructure as a Service (IaaS)

This is where we want to run our software on someone else’s machines and they get to say what those machines are. In theory we could hold the software (including the operating system) on our computer and have someone else’s machines read it across the internet but this would be quite slow. So while we are really just using someone else’s hard drive, CPU and memory, we generally also load an operating system and software on the other person’s hard dive for quick access by their CPU and memory. An example of IaaS is Rackspace (http://www.rackspace.com). Rackspace also offer to provide one of a selection of operating systems. Although this could construe as Platform as a Service (see below) because the choice is with us and not them on the operating system, it is still considered IaaS.

If we are just looking to use someone else’s hard drive, this also sits under IaaS and an example of this is Amazon S3 (http://aws.amazon.com/s3/).

Platform as a Service (PaaS)

If we do not get to choose the operating system, this is PaaS. A good example of this is Azure (http://www.microsoft.com/windowsazure/). Here we use someone else’s hard drive, CPU, memory and operating system. We can load whatever software we like onto it and even have it read software sitting on our hard drive if we like. We could also have it read someone else’s hard drive, like Amazon S3. The recent iCloud service by Apple appears to be doing precisely this (http://www.neowin.net/news/icloud-uses-amazon-web-services-and-windows-azure-for-now).

Software as a Service (SaaS)

This is where we get no say on anything other than the specifications of our screen. Someone else chooses the servers, the operating system and the specific software that runs on them. Examples include Hotmail, salesforce.com, Miniclip flash games and Google apps.

What is nice about SaaS is that we do not need to worry about our computing power to get the software to run; it is someone else’s concern. In theory, I could dust off my old Sinclair Spectrum 48k and run a Saas application, which normally takes four or five modern servers to run locally (or on-premise as they now say). All my Speccy has to do is coordinate the information coming from the application, via the internet,  and display it on my monitor or, in the case of the Spectrum, my television. In reality this would not quite work as the Sinclair Spectrum has no way of talking to the internet. The best it could muster in its day was chatting to cassettes. However, the principle is sound.

Conclusion

There is a lot of noise out there about this cloud thing but it really boils down to one simple concept: if you are happy to give up some control to a provider you trust, you can get great technical services with less headache and probably at a lower cost. If this sounds tempting, it is then a case of working out how far you want to go with it. There is no doubt that as these services become more reliable and more feature-rich businesses will take them up more and more, willing to gain an economic edge on rivals in exchange for losing a little control of their IT infrastructure.

3 comments:

Andy Pattinson said...

Happy to expand on my rhetoric from twitter. I strongly disagree with the common sentiment that you're loosing control when you use cloud based systems.

Loosing control of what? You're letting the experts run your systems, a business with 100,000 clients on their system invest a lot more in security, stability, redundancy, monitoring...than any business running on premise, hybrid or so called private cloud ever could.

Peter Coffee gives the most succinct & accurate explanation of cloud 'Systems that are architected from the ground up to be Multi-Tenent & Auto-Scaling'

These offer many benefits most importantly the democratization of systems, a single user benefits in the same way as a client with 100,000 users.

Cloud is so much more than moving systems or parts of systems out of on premise, this is the point MS miss and it's why salesforce.com & google apps are light years ahead of them.

Leon Tribe said...

There are two issues which are being confused here. The question is "Do you lose control when you trust someone else to manage your infrastructure?" The answer is undeniably "yes". Almost by definition, the act of trusting someone else means losing direct control of that thing you are trusting them with. For example, perhaps you have guaranteed to your customers their data will never leave local shores. Perhaps the method in which the power is generated for the servers is important. Perhaps the brand of the servers themselves is important and so on.

The second question is "Is what I lose outweighed by what I gain?". As implied by my conclusion, I believe many companies will significantly gain by transferring their software from internal server rooms to an outsourced provider. Many companies do not care about where the data is geographically stored, many companies do not care about the intimate nature of how their data is being backed up on the Amazon S3 service; they simply trust it is being done better than they ever could.

For losing a little bit of control, they gain a significant competitive advantage.

If Peter Coffee of salesforce.com was playing Jeopardy, the question he would be answering would be "What do you consider best practice for servers providing XaaS/cloud offerings?" Let us say, when it started out, salesforce.com ran on a 486 in Benioff's basement (I am guessing it probably did not but this is a hypothetical example). Does the fact that it defies Coffee's definition make it any less a cloud application? Or does it just make it a poorly deployed one?

As for the suggestion that salesforce.com is 'light years' ahead of Microsoft's equivalent (Dynamics CRM), all independent analyst reports I have read, including Forrester and Gartner, disagree. Generally speaking, the products are considered equally good. The place where Dynamics CRM and Sales Cloud significantly differ is in the cost of their online offerings. Dynamics CRM is 1/2 to 1/3 of the price of the equivalent salesforce.com offering.

Similarly, of the independent reports I have read, most compare Office 365 favourably to Google apps.

Andy Pattinson said...

When a member of your team is working on your infrastructure you're trusting them, this is no different, there is no change in control so you're loosing nothing but gaining substantial benefits by having experts do the work for you.

The fear of loosing control is nothing but fear of change, which is perfectly understandable. The people that stand out are those who embrace it, understand it & begin to deliver tangible business benefits as a result.

Something that is easily achieved with Salesforce, Google Apps compared to MS. I know i've come from using MS exclusively & i'm seeing significant benefits no longer using it.

We deliver change faster at less cost to a higher level of quality than was ever possible with MS.

Here is a good example: http://www.bnet.com/blog/technology-business/microsoft-office-365-shows-how-to-tank-the-cloud-concept/11473