..
      Copyright 2010 United States Government as represented by the
      Administrator of the National Aeronautics and Space Administration. 
      All Rights Reserved.

      Licensed under the Apache License, Version 2.0 (the "License"); you may
      not use this file except in compliance with the License. You may obtain
      a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

      Unless required by applicable law or agreed to in writing, software
      distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
      WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
      License for the specific language governing permissions and limitations
      under the License.

Cloud Computing 101
===================

Originally the term cloud came from a diagram that contained a cloud-like shape to contain the 
services that afforded computing power that was harnessed to get work done. Much like the electrical 
power we receive each day, cloud computing is a model for enabling access to a shared collection of
computing resources - networks for transfer, servers for storage, and applications or services for 
completing work. 

Why Cloud?
----------
Like humans supposedly only use 10% of their brain power, many of the computers in place in data 
centers today are underutilized in computing power and networking bandwidth. People also may need a large 
amount of computing capacity to complete a computation for example, but don't need the computing power
once the computation is done. You want cloud computing when you want a service that's available 
on-demand with the flexibility to bring it up or down through automation or with little intervention.

Attributes of a Cloud
---------------------
On-demand self-service - A cloud should enable self-service, so that users can provision servers and networks with little 
human intervention. 

Network access - Any computing capabilities are available over the network and you can use many different
devices through standardized mechanisms. 

Resource pooling - Clouds can serve multiple consumers according to demand. 

Elasticity - Provisioning is rapid and scales out or in based on need. 

Metered or measured service - Just like utilities that are paid for by the hour, clouds should optimize
resource use and control it for the level of service or type of servers such as storage or processing.

Types of Cloud Services
-----------------------

Cloud computing offers different service models depending on the capabilities a consumer may require. 
The US-based National Institute of Standards and Technology offers definitions for cloud computing
and the service models that are emerging. 

SaaS - Software as a Service
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Provides the consumer the ability to use the software in a cloud environment, such as web-based email for example. 

PaaS - Platform as a Service
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Provides the consumer the ability to deploy applications through a programming language or tools supported
by the cloud platform provider. An example of platform as a service is an Eclipse/Java programming
platform provided with no downloads required.

IaaS - Infrastructure as a Service
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Provides infrastructure such as computer instances, network connections, and storage so that people 
can run any software or operating system.

.. todo:: Use definitions from http://csrc.nist.gov/groups/SNS/cloud-computing/ and attribute NIST

Types of Cloud Deployments
--------------------------
.. todo:: describe public/private/hybrid/etc


Work in the Clouds
------------------

.. todo:: What people have done/sample projects