Cloud Computing: a $200-Billion Dollar Market
According to a recent report cloud computing infrastructure service spending grew by
It is prudent therefore that anyone, in almost any business and almost any career field, all have at least a high level understanding as to what exactly cloud computing is, the benefits it offers, and the changes it introduces to existing systems and processes across a business. And it goes without saying that those in the fields of DevOps and Data Leadership need to be able to communicate the deeper details to higher level stakeholders in a manner that is efficient and easy to understand.
So - let’s begin!
Deployment Models
Across the data and computing industry there are three commonly agreed deployment models that describe how cloud computing can be introduced to, and used by, a business: “Public”, “Private”, and “Hybrid”.
Public
With a public cloud deployment, services are offered to the public over the internet - making them available to anyone who wants to purchase them. Those cloud resources are of course owned and operated by some third-party cloud service provider (Amazon Web Services, Microsoft Azure, etc.) but their delivery over the internet means applications can be quickly provisioned and de-provisioned. And critically, there is no up-front capital expenditure allowing users to implement an OpEx model (Operational Expenditure), where you only pay for the computing resources that you use. So if you choose to reduce your compute load you’ll watch as your costs drop off. While adding more services to your deployment pushes your operational costs higher.
Private
At the other end of the scale to a public cloud deployment is the private cloud. Here, computing resources are used exclusively by users from the purchasing business or organization. In turn this means all hardware must be purchased up-front both for start-up (to initiate and begin) implementations and maintenance (continued costs of upgrades, etc.). In return for this CapEx (Capital Expenditure) driven model, organizations gain complete control over the resources and security of the systems they use. Indeed those systems can be physically located on-site (e.g. in the organization’s data center), or they can be hosted by a third-party service provider. You can perhaps imagine industries such as banking, insurance, government, and military making use of private cloud deployments - where highly sensitive data and computing security and handling is of the upmost importance.
Hybrid
Sitting in-between the two previous deployment models is the hybrid model - where the computing environment created combines both a public and private cloud. This offers businesses the greatest flexibility to determine where they run their applications - in many cases therefore allowing, in time, for a carefully planned migration to a full private or public deployment, should the business’ long term needs and computing strategy move in that direction. With the Hybrid deployment model, computation, data and applications can be shared between the public and private clouds; again, the organization decides how this plays out. Importantly, the business or organization maintains control over security, compliance, and legal requirement concerns.
Benefits of Cloud Computing
The main benefits of cloud computing, can be summarized by the following six elements:
(1) High availability
Depending on the service-level agreement (SLA) that you choose (as per the deployment model), the principle of high availability means you can expect your cloud-based applications to always be available, providing a continuous high quality user experience with no apparent downtime. Indeed even if things go wrong in the cloud, most SLAs allow for switching between servers and/or data centers and/or geographies to ensure (almost) constant service availability. Thus many cloud service providers offer SLAs that guarantee the amount of down time will extend to no more than a few hours per year.
(2) Scalability
Through scalability, cloud service providers ensure that applications in the cloud can be scaled vertically and horizontally - meaning either increasing the “power” of existing infrastructure, or broadening the number of resource instances. The former is typically referred to as “Vertical Scaling”, for example to increase compute capacity by adding RAM or CPUs to a virtual machine as requirements change. The latter is usually referred to as “Horizontal Scaling”, for example to increase compute capacity by adding instances of resources to the computing configuration as demand changes.
(3) Elasticity
Most cloud service providers allow you to configure your cloud-based applications to take advantage of autoscaling. In this way, your applications will always have the resources they need. In particular this is something that works both in the up-scale and down-scale sense. Thus, with greater demand the instances invoked can be configured to increase alongside that increasing demand (e.g. during black Friday, or the Chistmas shopping peak). And then, when demand falls off, the same configuration will reduce the instances being used (e.g. in the middle of the night when fewer people are shopping). Hence, as I’ve briefly mentioned already, you only pay for what you use - as an operational expense within a consumption model - and you don’t need to worry about specifically invoking a greater or fewer number of instances to meet those changes in demand, it’s all pre-configured (under your guidance) and invoked automatically.
(4) Agility
By using either the CLI or browser based interfaces it is usually very straightforward to deploy and configure whatever cloud-based resources your applications need quickly - whenever your requirements change. And this extends to quickly being able to replicate your services in other geographic locations - to ensure a secure and efficient compute experience regardless of customer physical location.
(5) Geographic distribution
The benefit of geographic distribution is that you can deploy your (or a third parties) software, databases, and data to regional data centers around the globe, thereby ensuring that your customers always have the best performance in their specific region. This also allows for the high availability mentioned above, and the piece of mind that comes from disaster recovery (which I’ll discuss next), especially where a particular geographic region contains multiple data centers.
(6) Disaster recovery
By taking advantage of cloud-based backup services, data replication, and geographic distribution, you can deploy your applications and data knowing that your data is safe in the event of a disaster. Should one server, data center, or even an entire region fail (with the probability of those events decreasing in the order as listed) you can be sure that your data is safe and your applications continue running since the cloud service provider automatically replicates your work across several data centers and regions. Thus regardless of what happens, say anything from a localized power outage through to an event effecting a much larger geographic region, your cloud based business operations remains safe.
The Consumption-based Model
In the above I alluded to the Capital and Operation expense considerations of cloud computing offerings. For Capital Expenditure (CapEx) the up-front spending is placed on the computing hardware and infrastructure necessary to implement the cloud. That expense would then be amortized or depreciated from the accounts over time to accound for the assets’ limited useful lifespan. This leads you naturally into a Private or Hybrid cloud deployment.
On the other hand, with Operational Expenditure (OpEx), the spending incurred is only on those services and computations happening right now. Thus, above, when we discussed Elasticity and Agility, you only pay for what you use - meaning additional demand incurs a higher cost, but that cost then drops as demand falls off.
It’s no surprise that the OpEx form of expenditure, where you only pay for what you use, is one of the strongest benefits of cloud computing. Most cloud service providers operate in this model, also referred to as the consumption-based model, meaning you are only paying if you are actually using a service or performing computations. There are no up-front costs, no need to purchase and manage hardware or infrastructure (so no CapEx), and no worries that hardware capacity will either go unused or, conversely, not be sufficient. And if your business needs change, you simply remove your applications and services from operation and your payments immediately drop to zero.
Cloud Service Models
In addition to the deployment models, benefits, and expenditure styles mentioned above, cloud computing services can also be grouped according to the service model being implemented. There are three levels of model to consider:
- IaaS - Infrastructure as a Service.
- PaaS - Platform as a Service.
- SaaS - Software as a Service.
Infrastructure as a Service
With IaaS most of the management of cloud services and infrastructure lies with you, the cloud “tenant”. Here, the cloud provider ensures the hardware is kept up-to-date and secure (e.g. in terms of physical security and operational concerns). However, responsibility for maintenance of the operating system and configuration of any networks remains with the cloud tenant. Virtual Machines (VMs) operating in data centers would be a typical example of an IaaS Service Model. The advantages come from your ability, as cloud tenant, to rapidly deploy new compute devices instead of having to procur, install, and configure the physical servers yourself. IaaS is the most flexible of cloud service models as it gives you complete control over the hardware that you use to run your applications alongside an agility and flexibility over time.
Platform as a Service
PaaS is best described as a managed hosting environment - that is, the cloud provider would be expected to manage the compuation devices (virtual machines) and networking resources. It would therefore be the cloud tenant’s responsbility to deploy their applications into this managed hosting environment. If you are a developer you may have come across platforms such as Heroku - this is a good example of a Platform as a Service (from Heroku’s point of view and their relationship with their cloud service provider). Here, developers (you, for example) can upload their web applications without having to worry about the physical hardware and software requirements.
Software as a Service
In opposition to Infrastructure as a Service we with Software as a Service where most of the management responsibility lies with the cloud service provider. It is the cloud provider therefore who manages all aspects of the application environment, such as virtual machines, networking resources, data storage, and applications. The cloud tenant only needs to provide their data to the application managed by the cloud provider. If you’ve ever used Google Sheets, GMail, Microsoft Outlook, or Microsoft Office browser based tools then you’ve experienced SaaS.
Conclusions
Cloud computing is the delivery of computing services over the internet. You have a range of options for deployment and service level - providing you a route into an even larger grouping of computation and data services that cover all aspects of modern application development - right the way through to state of the art machine learning tools. Servers, data storage, networking, data analytics and intelligence make up the broad strokes of what business gain through cloud computing. And of course this is layered into a domain that is always innovating (and innovates rapidly), a domain that is flexible to your computing needs, and which provides you the economies of scale that you can take advantage of as your business grows and needs change.
There is, of course, so much more that can be said about cloud computing and the particulars of each cloud service provider. But that can wait for another article!
Footnotes
-
Including both Platform as a Service (PaaS) and Infrastructure as a Service (IaaS). ↩