Defining Cloud Computing
To understand how mobile and cloud computing come together to provide new value, you need to first understand what cloud computing is and how it is defined.
Cloud computing enables an on-demand network access to a shared pool of computing resources (for example, networks, servers, storage, applications, and services) that can be rapidly provisioned and released.1
Cloud computing is attractive to businesses as an additional computing deployment model for computing resources. For those situations in which the complexity of setting up and managing a computing environment might be prohibitive, cloud computing can provide an alternative. It can be particularly attractive for small companies and startups that do not have the skill and capital to set up and manage a full-blown computing environment. Cloud computing can also be valuable in situations in which there are temporary or seasonal spikes in computing resource. In this case, a cloud environment could be used to handle the extra computing demands.
There are several key distinguishing characteristics of cloud computing. In the same way an electric utility company provides power, cloud computing relies on the sharing of computing resources to achieve economies of scale. The cloud provider’s computing resources are pooled to serve multiple end users (multitenant). Resources are provisioned and deprovisioned based on end user demand. To the end user, the cloud computing resources appear to be unlimited and can be accessed through any device.2
There are a variety of types of clouds that vary by the level of abstraction to the end user or developer. There are three primary service delivery models for the cloud:
- Software as a Service (SaaS): A software delivery model in which applications are hosted by the service provider. The end user does not manage or control the underlying infrastructure (storage, network, and operating systems). Examples include Gmail, Google Docs, Netflix, Google Apps, Box.net, Dropbox, and Apple iCloud.
- Platform as a Service (PaaS): Provides a computing platform or operating environment over the Internet. The end user creates software applications using a PaaS development environment from the provider. The end user does not manage or control the underlying infrastructure (storage, network, servers, and so on); however, the end user may set deployment and configuration settings. Examples include Windows Azure, Google App Engine, and IBM SmartCloud Application Services.
- Infrastructure as a Service (IaaS): Delivers underlying computing and processing resources such as storage, network, hardware, servers, and so on. Examples include Amazon.com Web Services, IBM SmartCloud Enteprise, and Rackspace Cloud.
The industry has also coined derivative terminology for particular niche cloud capabilities such as Monitoring as a Service (MaaS), Network as a Service (NaaS), and Communications as a Service (CaaS). In addition, as you will see, there is an emerging new cloud approach for mobile development called Mobile Back End as a Service (BaaS).
The following are several ways that a cloud infrastructure can be deployed:
- Private cloud: The cloud infrastructure is managed and provisioned for use by a single organization. Some choose the private cloud approach when more control of the cloud infrastructure is needed. This is the case when security or control of corporate data may be a concern.
- Public cloud: The cloud infrastructure is provisioned for use by the general public. This approach may have the lowest upfront cost.
- Hybrid cloud: The cloud infrastructure is a combination of attributes of both the private and public cloud approaches. In this case, an organization can take advantage of the particular attributes of the private or public cloud to meet its particular needs.
You need to consider all the ramifications of cloud computing before adopting it as a solution. In the case of a public cloud, you need to understand the total cost of cloud deployment. You might find that over the lifetime of a computing solution, the pay-as-you-go approach might end up being more expensive than an in-house deployment. You also need to understand the security implications of cloud computing. Particularly with a public cloud, you need to consider where the data is located and who has access to it. Sensitive corporate and government data might not be appropriate for a public cloud deployment. Also, many of the cloud computing environments are proprietary in nature, in which solutions developed for one cloud cannot be moved to another. Although standard efforts work to provide more freedom and choice for cloud users such as the Open Cloud Manifesto (which initiated the cloud standards movement) and the Cloud Standards Customer Council (defining the cloud standards requirements for the industry), continuous work is needed. As a result, you must consider the implications of vendor lock-in and freedom of choice.