Cloud Computing Explained

 

For the past few years, the buzz around cloud computing has been growing. While many are talking about the cloud, few understand what the cloud is. Three organizations’ definitions come to the forefront when defining the cloud: Gartner, Forrester, and the National Institutes of Standards and Technology (NIST). While both Gartner(Plummer, 2008) and Forrester(Gillett, ) provide definitions of cloud computing, the NIST definition(National Institute of Standards and Technology's Computer Security Division - Computer Security Resource Center, ) is concise and uses industry standard terms(Sotnikov, 2009). 

The following article takes an in-depth look at the NIST’s definition of cloud computing. Each of the definition's points will be defined in greater detail and examples of cloud-based technologies will be utilized to help the reader gain a better understanding of the cloud.

The National Institutes of Standards and Technology defines cloud computing as:

...a model for enabling convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction. This cloud model promotes availability and is composed of five essential characteristics, three service models, and four deployment models.(Mell & Grance, 2009)

The remainder of this article will discuss these five characteristics, three service models, and four deployment models.

Five Characteristics of the Cloud

When people think of the cloud, if they consider it at all, they often think of software as a service. However, it is important to remember that the service used to supply technology doesn't define it. The following five characteristics are how the National Institute of Standards and Technology describe cloud computing.

Characteristic: On Demand Self Service

When an institution develops or deploys a new application, there are usually a number of hoops that they must jump through.  For example, if an institution decides they would like to install the learning management system Moodle, they might have to order a server, wait for the vendor to ship it, install the server in the data center, provision an IP address for the server, setup the DNS for the new IP address, install the operating system, etc.

While virtualization tools have improved this workflow dramatically, the process can still be cumbersome.  With cloud-based services, many of these steps can be eliminated.  Interaction with the vendor is minimized greatly; and with a few clicks of a button, an application can be up and running in a matter of minutes.

In the example below, we use the cloud-based service Heroku(0RW1S34RfeSDcfkexd09rT2Heroku ) to deploy a basic blog application. Prior to the video, Ruby on Rails(Ruby on rails ), Heroku’s Ruby Gems(0RW1S34RfeSDcfkexd09rT2RubyGems.org ), and Git(Git - fast version control system ) were installed on the user’s computer, and the application was developed.  Once these few simple set up steps were accomplished, deploying the application into Heroku's cloud took a matter of minutes.







Characteristic: Resource Pooling

With current systems and data centers, IT departments are often stuck in a silo of their own creation. Sharing of compute resources is rarely done amongst institutions, and if it is, it is cumbersome to create and manage workflows that utilize these shared resources.

With the cloud, multi-tenancy is king. Users of the cloud can provision compute resources based on their needs, and then destroy those resources, giving them back to the shared pool once their needs are met. Additionally, users are able to share resources amongst themselves. For example, if an institution has developed a new piece of software and would like to share it with other institutions, they can create a template for that system in the cloud and allow other institutions to use that template as they see fit.

Below is a demonstration of Amazon's Elastic Compute Cloud, or EC2(Amazon elastic compute cloud (amazon EC2) ). This service allows IT Departments to choose from a shared pool of Amazon Machine Images (AMI)(Wikipedia contributors, ) and start up a server with a few simple clicks.  AMIs offer users of Amazon EC2 a quick and easy way to set up systems and servers, with little to no intervention from channels one might normally need to go through.







Characteristic: Rapid Elasticity

Systems are constantly changing. In order to create the best experience for users, IT departments are often required to scale or update systems to meet user demand. Scaling or upgrading a system currently in production can be cumbersome and resource intensive for an IT Department.

The cloud provides ways of rapidly scaling to meet user demand. If a system requires more compute resources, an IT Department can easily scale the technology to meet those demands. For IT Departments that use the cloud, it seems as if there is an endless supply of computing resources available to them.

In the video below, we use the Firefox Add-On S3Fox Organizer(S3Fox organizer(S3Fox) ) to access Amazon Web Services' Simple Storage Solution (S3)(Amazon simple storage service (amazon S3) ). S3 allows users to upload files to Amazon's servers and easily access those files through Amazon web addresses or API calls.

Amazon S3 has become a popular way of providing storage for systems that require large amounts of storage.  Currently there are S3 plugins available for the popular blogging software Wordpress (WordPress › amazon S3 for WordPress « WordPress plugins ), and the web based project management application Redmine (Redmine - plugin list - redmine ).  In addition to its use within applications, S3 is often used to back up files.  There are a number of scripts(Nagel, 2009), addons(Andrews, 2010), and plugins(Greene, 2008) available to help you back up your files on any type of server to Amazon S3.







Characteristic: Broad Network Access

Traditionally software like Microsoft Word, PowerPoint, etc. has been offered as client based software. Users are required to install software to their computers and upgrade systems.  If you’re away from your computer, you may not have access to the software, which can cause frustration for many users.

Today so much of the software we use is available over the internet. Many people believe that having a resource available via the internet is the defining characteristic of the cloud, however it is just one of the five characteristics. 

In the example below we demonstrate Google Docs(Google documents.), a web based document creator and editor.  Google Docs is a slimmed down version of Microsoft Office, which also has a web based version known as Microsoft Office Web Apps 2010(Microsoft office web apps 2010 beta.).  Both products allow you to access and edit files from any computer with an internet connection, removing the need to have access to a particular computer in order to edit documents.







Characteristic: Measured Service

In order to monitor network, server, and application usage, IT departments employ many different monitoring tools and reporting systems. The cloud however allows both cloud providers and IT departments to monitor usage. Cloud providers charge IT Departments based on their use of compute resources.  On the other hand, IT Departments are able to use these metering (or measured) services to scale resources up and down based on information that is gathered from these particular tools.

Below is a demonstration and discussion of a bill from an Amazon Web Services' account.  In addition to this bill, we will also briefly discuss Amazon Web Services' CloudWatch(Amazon CloudWatch ), a monitoring tool that not only allows you to monitor your system, but in conjunction with other services, helps you scale your AWS based system as well. Information on Amazon's pricing schema for different services including CloudWatch, can be found on the Amazon Web Services' website(Amazon web services ).







Three Service Models for the Cloud

The three types of cloud-based services are software as a service (SaaS), platform as a service (PaaS), and infrastructure as a service (IaaS). The three different service models and examples of those services are explained below.

It is important to remember that although computing resources may be delivered through one of these three models, it doesn't mean that it is the cloud. Virtual private servers are also infrastructure as a service, but virtual private servers do not posses the five characteristics of the cloud.

Service Model: Cloud Software as a Service

Software as a Service is common in the IT community.  Usually software companies that provide software as a service host their software within their own data and then upgrade and maintain it for their customers.  Cloud software as a service combines this hosting practice with the five characteristics of the cloud we described above.  Software that is supplied via the cloud is often easy to use and requires very little intervention from the user in order to get the service up and running.

In the example we once again discuss Google Docs.  Similar cloud based software as a service applications include Microsoft Web Apps 2010(Microsoft office web apps 2010 beta.) and Zoho(Zoho.).







Service Model: Cloud Platform as a Service

“A platform describes some sort of hardware architecture and software framework (including application frameworks), that allows software to run.”(Wikipedia contributors, ).  A common platform in computing is the LAMP stack, or the Linux(The linux home page at linux online ), Apache(Welcome! - the apache software foundation ), MySQL(MySQL :: The world's most popular open source database ), and PHP(PHP: Hypertext preprocessor ) stack.

Cloud platform as a service supplies these familiar platform stacks to users, without the need for them to maintain the underlying hardware or upgrade the supporting software.  In the example below, we discuss Heroku, a ruby on rails cloud platform.  In addition to Heroku, there are a number of other cloud platform providers including Google App Engine(Google app engine - google code ), which supports Java(Java.) and Python(Python programming language -- official website ), and Engine Yard(0RW1S34RfeSDcfkexd09rT2Rails in the cloud ), which supports Ruby on Rails(Ruby on rails ).







Service Model: Cloud Infrastructure as a Service (IaaS)

When people think about infrastructure, if they consider it at all, they think of servers, wires, cooling systems and all the other things necessary to run today’s data centers.  But when infrastructure is purchased through the cloud, none of these components are necessary; instead users of cloud based infrastructure only need to concern themselves with developing platforms and software.

In the following video, we discuss Rackspace, a provider of cloud based infrastructure as a service.  Competitors to Rackspace include Amazon Web Services(Amazon web services ) and GoGrid(Cloud hosting, cloud computing, hybrid infrastructure from GoGrid ).







Four Deployment Models for the Cloud

Just like there are multiple ways to deploy a system within your data center, there are multiple ways to deploy a system in the cloud.  The four deployment models described in the NIST’s definition of cloud computing are Public Cloud, Community Cloud, Private Cloud and Hybrid Cloud.

While there are many problems and issues associated with each of these models and the examples used (ie. security, feasibility, etc.) this article does not focus on those issues.  Instead, the resources section below provides a number of different reading materials that further discuss these issues and more.

Deployment Model: Public Cloud

A public cloud is a cloud that is made available to the general public for use.  Users of a public cloud would sign up with the cloud provider and make payments based on the providers pricing schemas.  Public clouds are the most common types of clouds.  When users use Amazon Web Services, Google applications or similar cloud based services, they are utilizing the public cloud.







Deployment Model: Community Cloud

A community cloud is a cloud that is made available to a certain group or association.  For example a consortium of schools might decide to get together to create a community cloud.  Payments for use of the cloud might be made via dues to the consortium or through some other equitable pricing schema.







Deployment Model: Private Cloud

A private cloud is a cloud that is made available at only one particular institution.  If an institution chooses to create its own private cloud, they might create a charge back pricing schema for the different departments that utilize the institution’s cloud.  This would allow the different departments to gain access to the IT resources they may so desperately need, while at the same time allowing an IT department to create a sustainable support model.







Deployment Model: Hybrid Cloud

A hybrid cloud is a cloud that utilizes two or more of the other cloud deployment models.  There are of course a number of ways to do this.  Perhaps a portion of the system lives inside a community cloud, while the remainder lives in your private cloud.  Another way of doing this is through cloud bursting.  Cloud bursting occurs when your system or service is too large to be maintained in just your private cloud, so you allow the system to spill over into say a public cloud.  Eucalyptus(0RW1S34RfeSDcfkexd09rT2Eucalyptus ), a software that allows IT departments to deliver their own private cloud, allows users to burst into Amazon’s cloud if they need to scale beyond what their own private cloud offers them.







Conclusion

Cloud computing is complex.  While many people have concerns about its current uses, there is no doubt that it is changing the way we provide systems and services.  The more informed IT departments are about the cloud, the better the position they will be in when it comes time to make decisions about deploying, developing, and maintaining systems in the cloud.

 

 

Resources

Alvarez, V. (2010). SiliconANGLE — blog. Retrieved 5/12/2010, 2010, from http://siliconangle.com/blog/author/vanessaalvarez/

Amazon CloudWatch Retrieved 4/29/2010, 2010, from http://aws.amazon.com/cloudwatch/

Amazon elastic compute cloud (amazon EC2) Retrieved 4/29/2010, 2010, from http://aws.amazon.com/ec2/

Amazon simple storage service (amazon S3) Retrieved 4/29/2010, 2010, from http://aws.amazon.com/s3/

Amazon web services Retrieved 4/29/2010, 2010, from http://aws.amazon.com/

Amazon web services blog. (2010). Retrieved 5/12/2010, 2010, from http://aws.typepad.com/

Andrews, J. (2010). S3 - google chrome extension gallery. Retrieved 5/11/2010, 2010, from https://chrome.google.com/extensions/detail/appeggcmoaojledegaonmdaakfhjhchf

Box.net | simple online collaboration: Online file storage, FTP replacement, team workspaces ~ free version Retrieved 5/9/2010, 2010, from http://www.box.net/

Cloud hosting, cloud computing, hybrid infrastructure from GoGrid Retrieved 5/9/2010, 2010, from http://www.gogrid.com/

Cohen, R. (2010). ElasticVapor :: Life in the cloud. Retrieved 5/12/2010, 2010, from http://www.elasticvapor.com/

Debian -- the universal operating system Retrieved 4/29/2010, 2010, from http://www.debian.org/

Dedicated server, managed hosting, web hosting by rackspace hosting Retrieved 4/29/2010, 2010, from http://www.rackspace.com/index.php

Dropbox - home - online backup, file sync and sharing made easy. Retrieved 5/9/2010, 2010, from https://www.dropbox.com/

Eucalyptus | your environment. our industry leading cloud computing software. Retrieved 4/29/2010, 2010, from http://www.eucalyptus.com/

George reese Retrieved 5/10/2010, 2010, from http://www.oreillynet.com/pub/au/429?#Blog

Gillett, F. Future view: The new tech ecosystems of cloud, cloud services, and cloud computing - forrester research. Retrieved 4/29/2010, 2010, from http://www.forrester.com/rb/Research/future_view_new_tech_ecosystems_of_cloud,/q/id/45073/t/2

Git - fast version control system Retrieved 4/29/2010, 2010, from http://git-scm.com/

Google app engine - google code Retrieved 5/11/2010, 2010, from http://code.google.com/appengine/

Google app engine blog. (2010). Retrieved 5/12/2010, 2010, from http://googleappengine.blogspot.com/

Google documents. Retrieved 4/29/2010, 2010, from http://docs.google.com

Greene, A. (2008). Adam greene's S3 rake tasks - GitHub. Retrieved 5/11/2010, 2010, from http://github.com/skippy/s3_rake_tasks

Heroku | ruby cloud platform as a service Retrieved 4/29/2010, 2010, from http://heroku.com/

Hoff, C. (2010). Rational survivability - THE cloud & virtualization security blog. Retrieved 5/12/2010, 2010, from http://www.rationalsurvivability.com/blog/

Jackson, K. L. (2010). Cloud musings. Retrieved 5/12/2010, 2010, from http://kevinljackson.blogspot.com/

Java. Retrieved 4/29/2010, 2010, from http://www.java.com/en/

JavaScript tutorial Retrieved 4/29/2010, 2010, from http://www.w3schools.com/js/default.asp

The linux home page at linux online Retrieved 4/29/2010, 2010, from http://www.linux.org/

Mell, P., & Grance, T. (2009). The NIST definition of cloud computing

Microsoft office web apps 2010 beta. Retrieved 4/29/2010, 2010, from http://www.microsoft.com/office/2010/en/office-web-apps/default.aspx

MySQL :: The world's most popular open source database Retrieved 4/29/2010, 2010, from http://www.mysql.com/

Nagel, E. (2009). FTP or amazon S3 server backup PHP script. Retrieved 5/11/2010, 2010, from http://www.ericnagel.com/2009/05/ftp-or-amazon-s3-server-backup-php-script.html

National Institute of Standards and Technology's Computer Security Division - Computer Security Resource Center. Cloud computing. Retrieved 4/29/2010, 2010, from http://csrc.nist.gov/groups/SNS/cloud-computing/index.html

PHP: Hypertext preprocessor Retrieved 4/29/2010, 2010, from http://www.php.net/

Plug into the cloud. (2010). Retrieved 5/12/2010, 2010, from http://www.informationweek.com/cloud-computing/

Plummer, D. (2008). Cloud computing: Defining and describing an emerging phenomenon. Retrieved 4/29/2010, 2010, from http://www.gartner.com/DisplayDocument?id=697413

PostgreSQL: The world's most advanced open source database Retrieved 4/29/2010, 2010, from http://www.postgresql.org/

Python programming language -- official website Retrieved 5/11/2010, 2010, from http://www.python.org/

Rails in the cloud | ruby support | engine yard Retrieved 5/11/2010, 2010, from http://www.engineyard.com/

Redmine - plugin list - redmine Retrieved 5/11/2010, 2010, from http://www.redmine.org/wiki/1/Plugin_List#S3-plugin

Ruby on rails Retrieved 4/29/2010, 2010, from http://rubyonrails.org/

RubyGems.org | your community gem host Retrieved 4/29/2010, 2010, from http://rubygems.org/

S3Fox organizer(S3Fox) Retrieved 4/29/2010, 2010, from http://www.s3fox.net/

Sotnikov, D. (2009). Cloud definitions: NIST, gartner, forrester. Retrieved 4/29, 2010, from http://cloudenterprise.info/2009/08/04/cloud-definitions-nist-gartner-forrester/

Thin - yet another web server Retrieved 4/29/2010, 2010, from http://code.macournoyer.com/thin/

Urquhart, J. (2010). The wisdom of clouds - a blog about cloud computing. Retrieved 5/12/2010, 2010, from http://news.cnet.com/the-wisdom-of-clouds/

Voegels, W. (2010). All things distributed. Retrieved 5/12/2010, 2010, from http://www.allthingsdistributed.com/

Watters, J. (2010). SiliconANGLE — blog. Retrieved 5/12/2010, 2010, from http://siliconangle.com/blog/author/jwatters/

Welcome! - the apache software foundation Retrieved 4/29/2010, 2010, from http://www.apache.org/

Wikipedia contributors. Amazon machine image , 2010, from

Wikipedia contributors. Computing platform , 2010, from

Willis, J. M. (2010). IT management and cloud blog. Retrieved 5/12/2010, 2010, from http://www.johnmwillis.com/

WordPress › amazon S3 for WordPress « WordPress plugins Retrieved 5/11/2010, 2010, from http://wordpress.org/extend/plugins/tantan-s3/

Zoho. Retrieved 4/29/2010, 2010, from http://www.zoho.com/