Cloud computing is one of the latest computer and business industry buzz words. It joins the ranks of virtualization, grid computing, and clustering, among others, in the IT industry. The problem is that, depending on your point of view, the definition of cloud computing can be quite different. Depending on your perspective, you could look at it from a business point of view or an application point of view, as well as others. This has created confusion on the definition and a fuzzy view as to what cloud computing is or even does.
The term cloud computing is overused and ill-defined, which has led many IT professionals and management to make assumptions as to what cloud computing does and how their companies can best utilize it. The IT Industry is not making it easier for their customers by offering many different definitions and products that only create confusion. This confusion is what the IT vendors are utilizing to create many different products and call them "cloud products." Examples of this behavior can be seen by watching television ads that are being broadcast to everyone, not just IT professionals and management. One large IT company defines cloud computing in a way that only a person with a PhD. in linguistics and computer science could understand, but the ad tells you they are making a simple definition, and if you do not understand their definition then call up their professional services to "help" your company take advantage of cloud computing. This ad, as well as other marketing, makes the idea so complex that no one understands it, and this only makes cloud computing more of a "riddle wrapped in an enigma."
The cloud is a great marketing term, with lots of hype behind it. This white paper will define cloud computing using a commonly accepted definition to get past the hype. Then we will discuss the different types of cloud computing, which also have added to the confusion as to what cloud computing is and does. We will end with ideas on how you can begin to implement the cloud in your environment.
The term cloud, which is a familiar computer cliché that every computer networking professional has used as the "public internet" in a network design at one time or another, is a great place to start. The internet cloud is drawn into the network design as the part of the network that is not controlled by the company. It represents the unknown path to send data or information between the company and the customer.
For the IT professional, this is a well-understood concept and has been an acceptable practice for many years. In addition, the internet cloud design has been shown to management over the years, and they also have a comfort level with the design and the concept. Now IT professionals do have a common knowledge of the internet cloud; however, if you combine cloud with computing, the definition becomes fuzzy, and there is no single acceptable meaning. If the concept comes up in a meeting, it begins to remind you of the story of the Emperor who has no clothes. No one wants to admit that they do not know exactly what cloud computing is, and this is why, many years ago, the industry developed Request For Comments (RFC). The RFCs were designed to standardize computer concepts. By standardizing, computers and the Internet were able to grow quickly, because companies had to abide by the RFC. This standardization made it easy for the producer and the consumer to avoid confusion on what was being produced and consumed. However, there are no RFCs for cloud computing, and this creates confusion as to what should or must be done to implement it. Without standardization, the producer and consumer are left to write their own rules and make their own definitions.
Cloud Computing can be broadly defined as several different methods to deliver information or services to customers who pay for what they use. Thus, it is a new mechanism to deliver products from a producer to a consumer. Of course, what has not changed is that we have a consumer who wants or needs to utilize information. Who is the customer? Well, the customer can be an external person or company who is paying for a service or information. The customer could also be an internal customer, such as the application owner who is using services that another department within the same company is offering, who is being charged for consumption.
Part of the confusion in cloud computing is that there are two completely different customers for two different types of clouds. One type of cloud the customer gets information and services externally (public cloud) and the other type gets theirs internally (private cloud). With the public cloud, the customer owns no storage or server and has no capital expenditures; they simply want to buy what they need on demand. The other customer is an internal customer so the company spends capital to either provide services and data internally, or spends capital to provide the servers, storage, networking, and applications (capital spending) for an external customer.
In addition, there are many different ways to use the cloud. Take the point-of-view of the producer. The producer can be an internal department offering services, which is called a private cloud. The producer can also be an external company that is supplying a server, storage, rack space, and electricity, and essentially supplies the capital for the information or service. As an example, let's say that I am a product manager, and I have an application that I want to put into production. What do I need to put together to roll out this product? Well, I need to find a server and storage for the data. I also need to find rack space for the server, and I need electricity, to name the big items. Basically, a capital investment is made to put my application into production in my company's data center.
With an external (public) cloud, I do not do any of these things; someone else builds the space and provides the capital investment. Thus, we have a new way of doing business where the customer buys on demand, and the supplier charges for what the customer uses. This concept is similar to cable television on demand, I only pay for the movies that I want to watch. At issue are the details of providing the data to the users, and securing that data. Some of the concerns with cloud computing include new methodologies, how much control over the data the provider companies maintain, where the data is maintained, and how it is secured.
Cloud computing is a new way of doing business that takes advantage of building efficiencies into the system that can scale out to provide services for multiple companies. As an example, you drive down to your pharmacy to fill a drug prescription. You hand the pharmacist the prescription, and it gets put into the cloud. Your personal and financial information is checked with your insurance company. The prescription is checked for drug interactions with other medications you are taking. The prescription is checked against a database of generic drugs. During this whole process, which is running in computer time, your data has to remain secure. To see how we got to this type of cloud interaction, let's take a look at the past.
The evolution of cloud computing can be traced to grid computing. The concept of "The Grid" exploded in popularity "The Grid: Blueprint for a new Computing Infrastructure" by Ian Foster and Carl Kesselman was published in 1998. The basis of the grid is the electric utility grid that provides electric power to your home and business. Using the same concept, hardware and software would be provided from the grid on-demand much like electricity to run lights and everything else that plugs into the wall. What is interesting is that many of the same issues that plagued the grid also plague cloud computing. Defining the grid, vendor lock-in, and forming standards were just some of the issues. Cloud computing expands upon the grid, but still suffers from some of the same issues. The cloud takes the grid a step further.
Let's look at the different types of cloud computing that are available. I have organized the different types into two main categories: Public or External clouds and Private or Internal. These two categories can be sub-divided even further.
A public cloud is where resources, such as storage and applications, are made available over the internet by a third-party provider. The service is typically low-cost or pay-on-demand for what you utilize. The resources are located at an off-site location that is controlled by the third-party, and accessed by the customer via a web application or web service over the Internet. The term outsourcing is commonly used for this type of cloud computing. Several of the major players and the public cloud product they have to offer include Amazon Elastic Compute Cloud (EC2), IBM Blue Cloud, Sun Cloud, Google App Engine, Amazon Web Services, and Force.com.
These consumer portals, such as Yahoo email, are nice for the mass market. I can get my email from anywhere in the world at a very low cost. I rely upon Yahoo to provide and store my email, which is an application that is used in the public cloud. This is a classic example of a public cloud, because I rely upon another company to provide the capital expense to maintain my data. However, there are questions about reliability and the security of my data.
The type of outsourcing provided by Yahoo and other vendors is termed "public cloud" to differentiate it from an application that an organization has more control over and is managed by the organization itself locally, which is termed "private cloud." Basically, the "public cloud" provider is making the capital investment, as opposed to a "private cloud" in which the company internally makes the capital investment for the infrastructure. Therefore, when a company is thinking about whether to use a public or private cloud, the company is making a decision on whether or not to outsource the capital expense. Also, the company has to get the security right, as well as the SLA contract as to who owes who money. It comes down to what the company wants to outsource, and what the company wants to do in-house.
A private, or internal, cloud is where the data is stored and accessed by a limited number of users in the company's own datacenter behind a firewall. The private cloud has all of the benefits of the public clouds, but it is hosted inside the firewall of the company or department it is supporting. The future of corporate IT is in private clouds, which are modeled after public clouds. One of the important features is that a private cloud can allow both internal and external consumers to access data in a secure local environment, which differentiates a private cloud from a public cloud.
Advances in virtualization and distributed computing have allowed corporate networking and datacenter administrators to become service providers that meet the needs of consumers within the corporation. The ability to provide low-cost, convenient, and flexible access to data is a benefit of cloud computing. Data for which you are responsible, such as financial records and customer records, will stay in the internal cloud in the data center, but other parts of the data might be stored elsewhere with the flexibility of moving wherever needed. You could define a private cloud as servers, plus virtualization, plus applications.
Virtualization is the underlying technology enabling cloud computing and transforming the face of the modern data center. Virtualization is one of the keys to cloud computing, with a hypervisor such as VMware's vSphere leading the virtualization market. In essence, vSphere is a new type of operating system known as a Virtual Datacenter Operating System (VDC-OS). A software layer that aggregates virtualized servers, storage, and network resources into one big computing pool that can be used by virtual machines within the datacenter. From Vmware's point of view, a private cloud is really a hybrid of internal and external clouds interoperating.
One of the initial steps toward cloud computing is incorporating virtualization, which is separating the hardware from the software. In the past, transitions of this magnitude meant rewriting code, such as the transition from the mainframe to UNIX. Fortunately, the transition to VMware does not require the rewrite of code, and this has fueled the speed of the move toward virtualization software. There still will be challenges in this transition but, overall, the consolidation of servers into the virtual world has been fairly rapid with many applications making a seamless transition.
The journey to get to cloud computing begins with virtualization with the cloud OS providing infrastructure and application services. The infrastructure services are the ability to virtualize server, storage, and the network, as well as application services that provide availability and security for the applications that are being utilized in the cloud environment. VMware's vSphere satisfies the initial step of virtualization, the separation of the hardware and the software. The next step is adding some of the many cloud applications that include how to do charge-backs and other application software. These cloud-like capabilities include billing for usage, the ability to do self-service, and many others. Charging for consumption, even if it is internal, will lead to better management, with the ability to keep track of what services the consumer is utilizing. In addition, with cloud computing, there is the ability to program in more self-service by the end user in order to keep costs down.
Cloud computing takes virtualization, which is the separation of the hardware and the software using virtualization software such as VMware's vSphere. Defining the different types of cloud computing provides us with knowledge as to what cloud computing has to offer. Whether you are a consumer or producer will define your definition of cloud computing. The public cloud is really geared more for the individual consumer or small company, while the private cloud is geared more for a medium-to large-company. In addition, the private cloud is branching out to incorporate the ability to have some data and applications serviced from the public cloud.
Steve Baca has been working in the Information Technology field for more than 15 years, after graduating from the University of Nebraska with a Bachelors degree in Computer Science and Mathematics. After spending time programming and doing Systems Administration, Steve has been doing technical training for VMware, Sun Microsystems, and Symantec. In addition, to teaching Steve has also done technical editing, and wrote the course for Sun Microsystems Network Troubleshooting.