Cloud Computing

Exploration of concepts and cloud providers

Subsections of Cloud Computing

Overview

A brief overview of common cloud computing terms and concepts.

Subsections of Overview

Introduction

Definition

Cloud computing allows developers to provision and manage computational and network resources, such as servers, networks, or data stores, through a web interface, such as a web page or API. The National Institute of Standards and Technology (NIST) formally defines cloud computing as follows:

Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction.

Cloud Computing Overview Cloud Computing Overview

Companies and third-parties with cloud computing platform offerings are known as cloud providers. Popular cloud providers incude Amazon Web Services (AWS), Microsoft Azure, and Google Cloud Platform (GCP).

Benefits

Cloud computing affords engineers numerous benefits when developing applications, such as:

  • On-Demand: Servers, networks, and other cloud resources and be rapidly provisioned.
  • Coss-Effectivness: Cloud providers operate at a scale beyond most organizations. As a result, customers are able to benefit from massive economies of scale when leveraging the cloud.
  • Scalability: Organizations can horizontally and vertically scale infrastructure as needed.

Virtualization

To enable the on-demand provisioning, cloud providers heavily utilize virtualization to allocate and isolate computational resources and application processes amongst customers. It provides a layer of abstraction of the data center resource pool and can provide interfaces of storage, networking, and computation devices.

While cloud providers often use virtualization, certain use cases prohibit the use of shared CPU/Memory usage due to regulatory requirements. As such, cloud providers typically provide access to physical, non-virtualized hardware at additional costs.

Classifications

Cloud service offerings typically provide trade-offs between user configurability, costs, and overhead, ranging from fully user-configurable servers and virtual environments to completely managed services, such as for databases. Cloud services are broadly categorized as:

  • Infrastructure as a Service (IaaS): Provides access to the underlying infrastructure.
  • Platform as a Service (PaaS): Provides a runtime environment for easily deploying applications to the cloud.
  • Software as a Service (SaaS): Software hosted in the cloud where end-users are not concerned with the underlying platform or infrastructure.

Cloud Native

The rise of cloud computing has accelerated the adoption of practices for developing robust cloud applications, collectively known as cloud-native development. These practices include microservices, containerization, and serverless development for improving application scalability, portability, deployability, and development speed.

Benefits

An increasing number of companies are either leveraging cloud computing or considering migrating existing on-premise applications to the cloud. Because of this, it is important for developers to be aware of the common benefits of working in such environments.

On-Demand

In traditional on-premise environments, if software engineers required additional infrastructure for hosting or scaling web services, a considerable amount of time was necessary to install and configure the hardware within an organization’s private data center. Conversely, cloud resources can typically be provisioned anywhere between a few seconds to a few minutes through a web API call. This on-demand provisioning of resources enables more rapid development and experimentation

Cost-Effectivness

Cloud computing can potentially be more economical than traditional on-premise hosting. Cloud resources can be provisioned with no up-front cost, instead utilizing a pay-as-you-go model. All hardware management is offloaded from organizations to the cloud provider. Additionally, because cloud providers purchase hardware in bulk, they are able to leverage economies of scale and pass those savings onto cloud customers.

Info

Readers should note that the above is a broad generality and should always consider the specifics of their organization when performing a cost-benefit analysis. For instance, Dropbox initially developed their SaaS platform using cloud technologies, notably AWS S3, before later migrating to their own infrastructure, which increased product performance and cost-effectiveness.

Scalability

Cloud providers have more computational resources available than most private data centers. Therefore, cloud services can be more readily scaled to account for increases or decreases in application load. A common example would be online retailers provisioning more servers for handling holiday traffic. Conversely, resources can be scaled down to save on costs, such as outside business hours.

There are two types of scaling, horizontal and vertical. Horizontal scaling refers to the addition or removal of servers to account for increased load in a distributed fashion. This type of scaling typically can be accomplished with minimal delay or application downtime.

Figure 1: With horizontal scaling, additional resources may be provisioned to handle increases in system load.

Figure 1: With horizontal scaling, additional resources may be provisioned to handle increases in system load.

Vertical scaling refers to modifying the underlying hardware configuration of cloud resources, such as memory, CPU, or storage. This operation is typically disruptive and may result in application downtime.

Figure 2: Vertical scaling changes the underlying hardware configuration for cloud resources, such as CPU or memory.

Figure 2: Vertical scaling changes the underlying hardware configuration for cloud resources, such as CPU or memory.

Classifications

For on-premise applications, companies manage all the underlying compute, storage, and networking infrastructure for their systems and services. Cloud computing can manage some or all of these aspects for their customers, depending on the type of service classification. There are three cloud computing service models, Infrastructure as a Service (IaaS) Platform as a Service (PaaS), and Software as a Service (SaaS). 1 2

Figure 1: Cloud computing service classifications.

Figure 1: Cloud computing service classifications.

Infrastructure as a Service - IaaS

IaaS provides virtualized or physical servers for hosting applications. Cloud providers maintain the underlying network and hardware infrastructure while allowing cloud engineers control of the host OS and software. The hardware can be configured upon initially provisioning a new service, such as CPU, memory, storage, networking, GPU, etc. AWS EC2 service provides virtual servers known as instances for developers to host applications.

Platform as a Service - PaaS

PaaS manages all the components maintained by IaaS services in addition to host operating system and execution runtime, allowing users to primarily focus on application development. PaaS offerings typically manage infrastructure autoscaling, monitoring, and logging. Examples of PaaS would be Heroku, which allows developers to upload their applications to a server without having to worry about provisioning the underlying hardware or OS. The AWS offers a similar service known as Elastic Beanstalk.

A related offering would be Functions as a Service (FaaS), which, similar to PaaS services, allows for developers to deploy and execture code in the cloud. However, unlike PaaS, FaaS services tend to run in more restricted environments, such as limited CPU and memory configuration, execution time, application size, etc. while running in a more ephemeral environment.

Software as a Service - SaaS

For SaaS services, users manage none of the underlying infrastructure or application logic and are instead strictly service consumers. An example of this would be Dropbox or the AWS S3 service, where users can upload data through a web console or API while AWS maintains all backend storage.