Cloud computing

From Citizendium
Revision as of 12:35, 18 September 2009 by imported>Howard C. Berkowitz (→‎Web services in the cloud)
Jump to navigation Jump to search
This article is developed but not approved.
Main Article
Discussion
Related Articles  [?]
Bibliography  [?]
External Links  [?]
Citable Version  [?]
 
This editable, developed Main Article is subject to a disclaimer.

Cloud computing refers to accessing computing resources that are typically owned and operated by a third-party provider on a consolidated basis in data center locations. It is aimed at delivering cost-effective computing power over the Internet, including virtual private networks (VPN) or even virtual private line networks (i.e., Layer 2 VPN) mapped onto facility providers. Consumers of cloud computing services purchase computing capacity on-demand and are not generally concerned with the underlying technologies used to achieve the increase in server capability.

In terms of the problem it solves, it is less new technology and more "a new deployment model." [1]

It has similarities to a number of network-enabled computing methods, but some unique properties of its own. The core point is that users, whether end users or programmers, request resources, without knowing the location of those resources, and are not obliged to maintain the resources. The resource may be anything from an application programming interface to a virtual machine, on which the customer writes an application, to Software as a Service (SaaS), where the application is predefined and the customer can parameterize but not program. Free services such as Google and Yahoo and Hotmail are free SaaS, while some well-defined business applications, such as customer resource management as provided by Salesforce.com, are among the most successful paid SaaS applications. PayPal and eBay arguably are SaaS models, paid, at the low-end, on a transaction basis.

"What goes on in the cloud manages multiple infrastructures across multiple organizations and consists of one or more frameworks overlaid on top of the infrastructures tying them together. Frameworks provide mechanisms for:

  • self-healing
  • self monitoring
  • resource registration and discovery
  • service level agreement definitions
  • automatic reconfiguration

"The cloud is a virtualization of resources that maintains and manages itself. There are of course people resources to keep hardware, operation systems and networking in proper order. But from the perspective of a user or application developer only the cloud is referenced[2]

It is, by no means, a new concept in computing. Bruce Schneier reminds us of that it has distinct similarities in the processing model, although not the communications model, with the timesharing services of the 1960s, made obsolete by personal computers. " Any IT outsourcing -- network infrastructure, security monitoring, remote hosting -- is a form of cloud computing."

The old timesharing model arose because computers were expensive and hard to maintain. Modern computers and networks are drastically cheaper, but they're still hard to maintain. As networks have become faster, it is again easier to have someone else do the hard work. Computing has become more of a utility; users are more concerned with results than technical details, so the tech fades into the background.[3]

Business models

There are two different types of cloud computing customers. The first only pays a nominal fee for these services -- and uses them for free in exchange for ads: e.g., Gmail and Facebook. These customers have no leverage with their outsourcers. You can lose everything. Companies like Google and Amazon won't spend a lot of time caring. The second type of customer pays considerably for these services: to Salesforce.com, MessageLabs, managed network companies, and so on. These customers have more leverage, providing they write their service contracts correctly. Still, nothing is guaranteed.

The second type runs their applications on networked large groups of servers that often use low-cost PC technology, with specialized connections to spread data-processing chores across them.

Trust and Security

But what about security? Isn't it more dangerous to have your email on Hotmail's servers, your spreadsheets on Google's, your personal conversations on Facebook's, and your company's sales prospects on salesforce.com's?

You don't want your critical data to be on some cloud computer that abruptly disappears because its owner goes bankrupt. You don't want the company you're using to be sold to your direct competitor. You don't want the company to cut corners, without warning, because times are tight. Or raise its prices and then refuse to let you have your data back. These things can happen with software vendors, but the results aren't as drastic.

Offerings

There is no single industry-accepted definition.[4] Some services broker extra capacity available on enterprise servers, as well as resources in pools of managed virtual servers. Others sell capacity on virtual servers. Yet others include any external computing resource, even to outsourced backup services, within the definition.

While the details of the service vary, some common features of sizing apply:

  • Separation of application code from physical resources.
  • Ability to use external assets to handle peak loads (not having to engineer for highest possible load levels).
  • Not having to purchase assets for one-time or infrequent intensive computing tasks.

Broad types of commercial services include:

  • Software as a Service
  • Utility computing, but using virtualization services rather than remote access to shared data centers. One model builds virtual application servers, while others build virtual datacenters with multiple servers
  • Web services in the cloud: Similar to SaaS in that the user interface is web-based, but differing in that programming, at a higher level of abstraction than in utility computing, is necessary. They vary from business-function-specific to industry APIs.
  • Platform as a Service: yet another SaaS variation, these are constrained by the vendor's architecture, but allow considerable customization, but more as a mashup than an application. Salesforce.com is seen in this space as well as in pure SaaS.
  • Managed Service Provider (MSP): An application exposed to IT rather than to end-users, sometimes called a virtual infrastructure service. There might be limited, largely transparent services for end users, such as automated backup and recovery.
  • Service commerce platforms: Sometimes called a "virtual personal assistant", they may combine aspects of office applications such as calendar, scheduling with a list of approved vendors. One might set up a trip in one's calendar, and then go to the platform to order the travel. Vendors in this space, such as Rearden Commerce and Ariba, are brokers between customers and service providers
  • Cloud integration: inter-cloud linkage (e.g., OpSource, CapeClear)., perhaps to allow business-to-business rather than user-to-service functionality

SaaS

  • Salesforce
  • Medical records

Quite a few business services are really SaaS, such as PayPal and eBay; they are services to facilitate transactions between users. The creation of various credit card and check payment features are examples of how SaaS can be customized without programming.

Utility computing

Amazon.com, Sun, IBM, and others who now offer storage and virtual servers that IT can access on demand to virtual application servers, while others build virtual datacenters with multiple servers (e.g., 3Tera's AppLogic and Cohesive Flexible Technologies' Elastic Server on Demand. Liquid Computing's LiquidQ offers similar capabilities, enabling IT to stitch together memory, I/O, storage, and computational capacity as a virtualized resource pool available over the network.

Amazon Elastic Compute Cloud (Amazon EC2) is a cloud offering on which customer developers write application on a wide assortment of virtual machines, which the customer builds from choices among operating systems, data bases, web servers, etc. [5]

Java services also are offered in clouds, but there is differentiation among the offerings. Nikita Ivanov describes two basic approaches, which are not mutually exclusive, but different products tend to have one or the other dominate. [6] The first is much like the way a traditional data center is organized, where the developers have little control over infrastructure. "The second approach is something new and evolving as we speak. It aims to dissolve the boundaries between a local workstation and the cloud (internal or external) by providing relative location transparency so that developers write their code, build and run it in exact the same way whether it is done on a local workstation or on the cloud thousands miles away or on both."

  1. Heavy UI oriented. These types of applications or framework usually provide UI-based consoles, management applications, plugins, etc that provide the only way to manage resources on the cloud such as starting and stopping the image, etc. The key characteristic of this approach is that it requires a substantial user input and human interaction and thus they tend to be less dynamic and less on-demand. Good examples would be RightScale, GigaSpaces, ElasticGrid.
  2. Heavy framework oriented. This approach strongly emphasizes dynamism of resource management on the cloud. The key characteristic of this approach is that it requires no human interaction and all resource management can be done programmatically by the grid/cloud middleware - and thus it is more dynamic, automated and true on-demand. Google App Engine (for Python), GridGain would be good examples.

Some cloud computing applications do try to replicate compute-intensive supercomputer applications using highly distributed parallel processsing. [7]

Web services in the cloud

Similar to SaaS in that the user interface is web-based, but differing in that programming, at a higher level of abstraction than in utility computing, is necessary. Some are restricted to an business function specific set of APIs (e.g., Strike Iron and Xignite) to a wider range of APIs in Google Maps, ADP payroll processing, the U.S. Postal Service, Bloomberg, and even conventional credit card processing services.

StrikeIron, for example, might be considered a computer-to-computer mashup, integrating external data bases with enterprise data, and combining them within a common business functions such as call centers, customer resource management and eCommerce. It refers to its offering as "Data as a Service", and accepts some of the data sources described above, such as the U.S. Postal Service. Cite error: Closing </ref> missing for <ref> tag There are cloud storage service for the small and home office market, such as Carbonite (backup)[8] and MozyHome (backup).

Even the consumer services differentiate, from being a "flash drive in the cloud" to offering encryption, incremental backups, data sharing, etc.

Cloudsafe points out that for digital content, such as video, one uses an application to access it, not the file system. "If your application is housing your metadata, and only object storage is required, the Simple Object interface can be accessed with either a Java SDK, or HTTP/REST API... the resulting object ID is stored directly within the application." Filesystem interfaces are available if needed, as with loading content.[9] There are high-end massive data backups, as well as federated data bases.

Service commerce platforms

Vendors in this space, such as Rearden Commerce and Ariba, are brokers between customers and service providers

Cloud integration

Underlying architecture

Internally, cloud computing almost always uses several kinds of virtualization. The application software will run on virtual machines, which can migrate among colocated or networked physical processors. The virtual machines may be deliberately machine- and OS-independent (e.g., Java virtual machine), or virtualized operating system instances.

From the provider perspective, some of the advantages of offering cloud, rather than more conventional services, include:

  • Sharing of peak-load capacity among a large pool of users, improving overall utilization.
  • Separation of infrastructure maintenance duties from domain-specific application development.
  • Ability to scale to meet changing user demands quickly, usually within minutes

For reasons of commercial reliability, however, the resources will rarely be consumer-grade PCs, either from a machine resource or form factor viewpoint. Disks, for example, are apt to use Redundant Array of Inexpensive Disks technology for fault protection. Blade server, or at least rack mounted server chassis will be used to decrease the data center floor space, and often cooling and power distribution, complexity. These details are hidden from the application user.

The cloud provider can place infrastructure in geographic areas that have reduced costs of land, electricity, and cooling. While Google's developers may be in Silicon Valley, the data centers are in rural areas further north.


References

  1. V. Bertocci (April 2008), Cloud Computing and Identity, MSDN
  2. Kevin Hartig (15 April 2009), "What is Cloud Computing?", Cloud Computing Journal
  3. "Cloud Computing", Schneier on Security, June 4, 2009
  4. Eric Knorr, Galen Gruman (7 April 2008), What cloud computing really means
  5. Amazon Elastic Compute Cloud (Amazon EC2), Amazon.com
  6. Nikita Ivanov, Java Cloud Computing - Two Approaches, GridGain Computing Platform
  7. Aaron Ricadela (16 November 2007), "Computing Heads for Clouds", Business Week
  8. About Carbonite, Carbonite Computer Company
  9. Object Storage, Cleversafe