Cloud computing

Cloud computing is Internet-based ("cloud") development and use of computer technology ("computing"). The cloud is a metaphor for the Internet (based on how it is depicted in computer network diagrams) and is an abstraction for the complex infrastructure it conceals. It is a style of computing in which IT-related capabilities are provided “as a service”, allowing users to access technology-enabled services from the Internet ("in the cloud") without knowledge of, expertise with, or control over the technology infrastructure that supports them. Cloud computing enables unfathomable access to various materials including (but not limited to) applications, data, and development platforms over the Internet. . According to a 2008 paper published by IEEE Internet Computing "Cloud Computing is a paradigm in which information is permanently stored in servers on the Internet and cached temporarily on clients that include desktops, entertainment centers, table computers, notebooks, wall computers, handhelds, sensors, monitors, etc."

Cloud computing is a general concept that incorporates software as a service (SaaS), Web 2.0 and other recent, well-known technology trends, in which the common theme is reliance on the Internet for satisfying the computing needs of the users. For example, Google Apps provides common business applications online that are accessed from a web browser, while the software and data are stored on the servers.

Comparisons
Cloud computing is often confused with grid computing (a form of distributed computing whereby a "super and virtual computer" is composed of a cluster of networked, loosely-coupled computers, acting in concert to perform very large tasks), utility computing (the packaging of computing resources, such as computation and storage, as a metered service similar to a traditional public utility such as electricity) and autonomic computing (computer systems capable of self-management). Indeed many cloud computing deployments are today powered by grids, have autonomic characteristics and are billed like utilities, but cloud computing can be seen as a natural next step from the grid-utility model. Some successful cloud architectures have little or no centralised infrastructure or billing systems whatsoever including peer to peer networks like BitTorrent and Skype and volunteer computing like SETI@home.

Architecture
The majority of cloud computing infrastructure currently consists of reliable services delivered through data centers that are built on computer and storage virtualization technologies. The services are accessible anywhere in the world, with The Cloud appearing as a single point of access for all the computing needs of consumers. Commercial offerings need to meet the quality of service requirements of customers and typically offer service level agreements. Open standards and open source software are also critical to the growth of cloud computing.

Characteristics
As customers generally do not own the infrastructure, they are merely accessing or renting, they can forego capital expenditure and consume resources as a service, paying instead for what they use. Many cloud computing offerings have adopted the utility computing model which is analogous to how traditional utilities like electricity are consumed, while others are billed on a subscription basis. By sharing "perishable and intangible" computing power between multiple tenants, utilization rates can be improved (as servers are not left idle) which can reduce costs significantly while increasing the speed of application development. A side effect of this approach is that "computer capacity rises dramatically" as customers do not have to engineer for peak loads. Adoption has been enabled by "increased high-speed bandwidth" which makes it possible to receive the same response times from centralized infrastructure at other sites.

Companies
Cloud computing is being driven by providers including Amazon, Google, Salesforce and Yahoo! as well as traditional vendors including IBM, Intel and Microsoft. It is being adopted by individual users through large enterprises including General Electric, L'Oréal, Procter & Gamble and Valeo.

History
The Cloud is a metaphor for the Internet, derived from its common depiction in network diagrams (or more generally components which are managed by others) as a cloud outline.

The underlying concept dates back to 1960 when John McCarthy opined that "computation may someday be organized as a public utility" (indeed it shares characteristics with service bureaus which date back to the 1960s) and the term cloud was already in commercial use in the early 1990s to refer to large ATM networks. By the turn of the 21st century, cloud computing solutions had started to appear on the market, though most of the focus at this time was on as a service.

Amazon.com played a key role in the development of cloud computing by modernizing their data centers after the dot-com bubble and (having found the new cloud architecture resulted in significant internal efficiency improvements) providing access to their systems by way of Amazon Web Services in 2002 on a utility computing basis.

2007 saw increased activity, including Google, IBM and a number of universities embarking on a large scale cloud computing research project, around the time the term started gaining popularity in the mainstream press. It was a hot topic by mid-2008 and numerous cloud computing events had been scheduled.

In August 2008 Gartner observed that "organisations are switching from company-owned hardware and software assets to per-use service-based models" and that the "projected shift to cloud computing will result in dramatic growth in IT products in some areas and in significant reductions in other areas".

Political issues
The Cloud spans many borders and "may be the ultimate form of globalisation". As such it is the subject of complex geopolitical issues, whereby providers must satisfy a myriad of regulatory environments in order to deliver service to a global market. This dates back to the early days of the Internet, where libertarian thinkers felt that "cyberspace was a distinct place calling for laws and legal institutions of its own"; author Neal Stephenson envisaged this as a tiny island data haven called Kinakuta in his science-fiction classic novel Cryptonomicon.

Although there have been efforts to harmonise the legal environment (such as US-EU Safe Harbor), providers like Amazon Web Services are currently catering to the major markets (typically the United States and European Union) by deploying local infrastructure and allowing customers to select "availability zones". Nonetheless there are still concerns about security and privacy from individual through governmental level (eg the USA PATRIOT Act and use of national security letters and the Electronic Communications Privacy Act's Stored Communications Act).

Legal issues
In March 2007, Dell applied to trademark the term '"cloud computing" in the United States. It received a "Notice of Allowance" in July 2008 which was subsequently canceled on August 6, resulting in a formal rejection of the trademark application less than a week later.

In November 2007, the Free Software Foundation released the Affero General Public License, a version of GPLv3 designed to close a perceived legal loophole associated with Free software designed to be run over a network, particularly as a service. An application service provider is required to release any changes they make to Affero GPL open source code.

Key characteristics

 * Customer capital expenditure is minimized and thus lowers barriers to entry, as infrastructure is owned by the provider and does not need to be purchased for one-time or infrequent intensive computing tasks. Services are typically available to or specifically targeted to retail consumers and small businesses.
 * Device and location independence enables users to access systems regardless of their location or what device they are using (e.g. PC, mobile).
 * Multi-tenancy enables sharing of resources (and costs) among a large pool of users, allowing for:
 * Centralization of infrastructure in areas with lower costs (e.g. real estate, electricity)
 * Peak-load capacity increases (users need not engineer for highest possible load levels)
 * Utilization and efficiency improvements for systems that are often only 10-20% utilised.
 * Performance is monitored and consistent, but can be affected by insufficient bandwidth or high network load.
 * Reliability is enhanced by way of multiple redundant sites, which makes it suitable for business continuity and disaster recovery, however IT and business managers are able to do little when an outage hits them. Historical data on cloud outages is tracked in the Cloud Computing Incidents Database.
 * Scalability meets changing user demands (e.g. Flash Crowds) quickly, without users having to engineer for peak loads. Massive scalability and large user bases are common but not an absolute requirement.
 * Security typically improves due to centralization of data, increased security-focused resources, etc., but raises concerns about loss of control over certain sensitive data. Accesses are typically logged but accessing the audit logs themselves can be difficult or impossible.
 * Sustainability is achieved through improved resource utilisation, more efficient systems and carbon neutrality . Nonetheless, computers and associated infrastructure are major consumers of energy.

Application
A cloud application leverages The Cloud in software architecture, often eliminating the need to install and run the application on the customer's own computer, thus alleviating the burden of software maintenance, ongoing operation, and support. For example:
 * Peer-to-peer/volunteer computing (Bittorrent, SETI@home, Skype)
 * Web application (Facebook)
 * as a service (Google Apps, Salesforce)
 * Software plus services (Microsoft Online Services)

Client
A cloud client is computer hardware and/or computer software which relies on The Cloud for application delivery, or which is specifically designed for delivery of cloud services, and which is in either case essentially useless without it. For example:
 * Mobile (Android, iPhone, Windows Mobile )
 * Thin client (CherryPal, Zonbu gOS based systems )
 * Thick client/Web browser (Google Chrome ,Mozilla Firefox)

Infrastructure
Cloud infrastructure (e.g. Infrastructure as a service) is the delivery of computer infrastructure (typically a platform virtualization environment) as a service. For example:
 * Full virtualization (GoGrid, Skytap)
 * Grid computing (Sun Grid)
 * Management (RightScale)
 * Paravirtualization (Amazon Elastic Compute Cloud)

Platform
A cloud platform (eg Platform as a service) (the delivery of a computing platform and/or solution stack as a service) facilitates deployment of applications without the cost and complexity of buying and managing the underlying hardware and software layers. For example:
 * Web application frameworks
 * Python Django (Google App Engine)
 * Ruby on Rails (Heroku)
 * Web hosting (Mosso)
 * Proprietary (Azure, Force.com)

Service
A cloud service (eg Web Service) is "software system[s] designed to support interoperable machine-to-machine interaction over a network" which may be accessed by other cloud computing components, software (eg Software plus services) or end users directly. For example:
 * Identity (OAuth, OpenID)
 * Integration (Amazon Simple Queue Service)
 * Mapping (Google Maps, Yahoo! Maps)
 * Payments (Amazon Flexible Payments Service, Google Checkout, PayPal)
 * Search (Alexa, Google Custom Search, Yahoo! BOSS)
 * Others (Amazon Mechanical Turk)

Storage
Cloud storage is the delivery of data storage as a service (including database-like services), often billed on a utility computing basis (eg per gigabyte per month). For example:


 * Database (Amazon SimpleDB, Google App Engine's BigTable datastore)
 * Network attached storage (MobileMe iDisk component, Nirvanix CloudNAS)
 * Synchronisation (Live Mesh Live Desktop component, MobileMe push functions)
 * Web service (Amazon Simple Storage Service, Nirvanix SDN)

Traditional storage vendors have recently begun to offer their own flavor of cloud storage, typically supporting existing software products (e.g. Symantec's Online Storage for Backup Exec) or on delivering cloud storage services (EMC's Atmos).

Architecture
Cloud architecture is the systems architecture of the software systems involved in the delivery of cloud computing (eg hardware, software) as designed by a cloud architect who typically works for a cloud integrator. It typically involves multiple cloud components communicating with each other over application programming interfaces (usually web services).

This is very similar to the Unix philosophy of having multiple programs doing one thing well and working together over universal interfaces. Complexity is controlled and the resulting systems are more manageable than their monolithic counterparts.

Cloud architecture extends to the client where web browsers and/or software applications are used to access cloud applications.

Cloud storage architecture is loosely coupled where metadata operations are centralized enabling the data nodes to scale into the hundreds, each independently delivering data to applications or users.

Provider
A cloud computing provider or cloud computing service provider owns and operates live cloud computing systems to deliver service to third parties. Usually this requires significant resources and expertise in building and managing next generation data centers. Some organisations are realising a subset of the benefits of cloud computing by becoming "internal" cloud providers and servicing themselves, though they do not benefit from the same economies of scale and still have to engineer for peak loads. The barrier to entry is also significantly higher with capital expenditure required and billing and management creates some overhead. Nonetheless, significant operational efficiency and agility advantages can be realised even by small organisations and server consolidation and virtualization rollouts are already well underway. Amazon.com was the first such provider, modernising its data centers which, like most computer networks were using as little as 10% of its capacity at any one time just to leave room for occasional spikes. This allowed small, fast-moving groups to add new features faster and easier, and they went on to open it up to outsiders as Amazon Web Services in 2002 on a utility computing basis.

The companies listed in the Components section are providers.

User
A user is a consumer of cloud computing. The privacy of users in cloud computing has become of increasing concern. The rights of users is also an issue, which is being addressed via a community effort to create a bill of rights (currently in draft).

Vendor
A vendor sells products and services that facilitate the delivery, adoption and use of cloud computing. For example:


 * Computer hardware (Dell, HP, IBM, Sun Microsystems)
 * Storage (3PAR, EMC, MogileFS)
 * Infrastructure (Solace Systems, Layer 7 Technologies, F5 Networks)
 * Computer software (3tera, GigaSpaces, Hadoop)
 * Operating systems (Solaris, Linux including Red Hat )
 * Platform virtualisation (Citrix, Microsoft, VMware, Sun xVM)

Standards
A cloud standard is one of a number of existing (typically lightweight) open standards that have facilitated the growth of cloud computing, including:
 * Application
 * Communications (HTTP, XMPP)
 * Security (OAuth, OpenID, SSL/TLS )
 * Syndication (Atom)
 * Client
 * Browsers (AJAX)
 * Offline (HTML 5)
 * Infrastructure
 * Virtualization (OVF )
 * Platform
 * Solution stacks (LAMP, Space-based architecture)
 * Service
 * Data (XML, JSON)
 * Web Services (REST)
 * Storage