Home arrow ENKI Blog arrow Cloud 101 - Lesson 2 - The Technology Behind Cloud Computing
Cloud 101 - Lesson 2 - The Technology Behind Cloud Computing
Written by Eric Novikoff   

In 2006, two technologies came together that formed the genesis of Cloud Computing, making real Sun’s motto coined by John Gage: “The Network is the Computer.”   These two technologies are virtualization and of course, the Internet. Both had been around for a while, but in 2006 for the first time, they were ready to start a revolution in how computing was delivered to customers.

Since the core principle of Cloud Computing is delivering services from shared hardware, many people say that it is nothing more than a warmed-over version of the 1970’s concept of “timesharing”, in which a single computer’s power was sliced up in millisecond intervals to server many users.   However, nothing could be farther from the truth. Instead, the advent of virtualization technology allowed creation of virtual computers for each customer inside a single physical server so that from their point of view, they didn’t have to share with anyone. Together with the rapidly increasing power of servers – they run more than 10 times faster today than in 1990 – sharing a server no longer represents  a compromise for most users.

Virtualization is, from the user’s point of view, the capability to carve a computer up into pieces such that the software running on each piece has no way to detect that it is not running on its own dedicated hardware.   This feat of seeming magic is the result of a combination of hardware features in the computer and software systems that abstract (or hide) the physical characteristics of the computer hardware from the running software. By hiding the hardware, it becomes possible to run many software systems on a computer at once without any of them being allowed to interfere with each other or the operation of the hardware, and to move software from one virtualized computer to another without any change. These software systems can be operating systems, such as Windows or Linux, each themselves capable of running many programs.   With proper security, each operating system can serve a different user or group of users, and the computer can then be carved up among completely different users that don’t have any relationship to one another.   For more information on virtualization, go to the Wikipedia page.

Virtualization – Technical Overview

If you are familiar with virtualization technology, please feel free to skip this section.

On a physical computer such as the PC on your desk, there are a number of programs running (the Applications), each of which talks to the Operating System, which makes the resources of the underlying hardware (the CPU, memory, and peripherals) available to them through a software system called the “I/O drivers.” Please see the diagram below, which shows this arrangement for a compute used by the Sales Dept.

 cloud101-2-1.png

Depending on how the Operating System is set up, the Applications compete for resources, which is why for example your computer seems to slow down if your antivirus is running. The Operating System protects the programs from accessing each others’ data and crashing each other, but if one of the programs misbehaves and crashes the Operating System, your whole computer stops working. If two different users are using different applications, then the actions of one user can affect the other because they are competing for the hardware resources on the computer.

On a virtualized computer system, each user can be given their own environment, called a “virtual machine” or VM. To that user and their software, the VM “looks” just like a real, physical computer. Each VM is assigned a portion of the computer’s resources that it cannot exceed, and runs its own operating system and applications, as though it was a separate (less powerful) computer. While the programs running in a single VM can interfere with one another, they cannot affect a different VM because they are inside an ironclad “jail” that limits access to the system’s resources as well as to other VMs. This “jail” is provided by a combination of certain hardware features in the CPU and a piece of software called the Hypervisor (hyper-supervisor), a special purpose operating system that creates and maintains the VMs as well as serving their requests for access to hardware resources. Each VM’s operating system, instead of talking to I/O drivers that can access the hardware, talks to “paravirtualized I/O drivers” that work with the hypervisor to give the VM access to the hardware. Much like a security guard, the paravirtualized drivers fool the VM’s operating system into thinking that it has direct control over the hardware, while controlling the flow of data to the computer’s hardware so that the VM’s demands don’t affect other VMs. Together with hardware features in the CPU that prevent one VM from even seeing the memory occupied by the other VMs, this allows for a high level of security between VMs, generally accepted to be as good as could be set up between different physical computers. For more information on hypervisors, go to the Wikipedia page.

cloud101-2-2.png

The hypervisor is also concerned with management tasks such as creating, destroying, and adjusting the resources (memory, CPU, I/O Bandwidth, etc.) assigned to each VM. These management operations can be initiated from a command line, a user interface, or programmatically through an API (Application Programming Interface). Because of this flexibility it possible to write software that manages an entire datacenter full of VMs from a single terminal, or even allows users/customers to create new VMs for themselves. Hypervisors can typically manage up to tens of virtual machines per physical machine.

One important feature of hypervisors is that instead of requiring the user to create an empty VM and then load the operating system and the application software into it, much as had always been done with physical servers, one could now do this work once and then save the entire VM to the disk for later use, creating a “Virtual Image”.   Then, when the user wanted – for example – another copy of their accounting system, they need merely direct the hypervisor to load the Virtual Image into memory and start it.   All of the system administration headache associated with creating a system to run a software application was eliminated. This feature has become very important to the growth and use of Cloud Computing.

cloud101-2-3.png

The important things to remember about virtualization are:

1)      It abstracts the hardware so that all computer systems look the same to software running in a virtual machine, allowing the same software to be easily deployed on different systems, and making all systems look identical to the software.

2)      It allows creation of a number of virtual machines on each server, each of which may run completely unique software including different operating systems.

3)      It shares the hardware resources of the computer in such a way as to prevent any VM from impacting the performance of another (though of course they must each receive a fraction of the underlying hardware’s resources that may add up to no more than 100% of the available resources.)

4)      Because the VMs don’t “know” about each other since they cannot see each other (except on the network), each VM is secure from the other VMs and can serve users who do not want other users on the same computer to know they are there. VM security is generally accepted to be as good as the security between two different physical computers.

5)      The hypervisor allows creation, management, and deletion of virtual machines including setting the hardware resources assigned to each VM. This management can be initiated from a user interface or programmatically.

6)      Pre-built VMs, called Virtual Machine Images, can be easily loaded into the computer by the hypervisor, allowing almost instant provisioning of software applications.

Because of virtualization, it became possible to divide the resources of a physical server up among different paying customers according to their needs, while keeping the customers secure from each other’s software. This capability has allowed service providers to lease computer time very flexibly, only charging customers for what they requested or allocated, and changing that allocation on demand. In addition, customers could rapidly deploy their software to a virtualized server by copying pre-built images into it.

The other requirement for Cloud Computing – the Internet

You may be asking yourself, what’s so new about the Internet? It’s been around for 20 years!   However, there has been a significant change in the last few years: large numbers of people have been connecting to it with broadband connections and cell phones, instead of the slow dial-up lines used in the 90s.  This growing population of broadband-enabled users are capable of doing much more with the internet and create a market for media, web applications, social networking, and web-delivered software services that has driven an explosion in the managed hosting and leased-server industry.   As more and more people create web-facing software, the demand for easy-to-use hosting and web servers has increased.   In addition, the demand for these web-based services as well as the relative ease of creating them and securing funding for startup companies that deliver them has reinforced the demand for managed hosting.

Summary

The combination of virtualization, which allowed managed service providers (hosting companies) to make dramatic cost reductions with shared hardware as well as greatly improving the ease of deploying customers’ software systems onto hardware, and the sudden increase in demand for managed hosting due to mass adoption of broadband internet, created an opportunity to sell self-service, pay-as-you-go, easily adjustable computing to millions more customers than ever before, at lower prices than ever before. This was the perfect storm that drove the creation of Cloud Computing.

Trackback(0)
Comments (0)add comment

Write comment

busy
 
Tag it:
Delicious
Digg
Technorati
Stumble
YahooBuzz
Reddit
Netvouz
blogmarks
< Prev   Next >