# Cloud Computing

## Summary


Cloud computing is a model in which resources are remotely accessed via the internet, shared by many users, and automatically allocated or released to meet current requirements. Resources could be compute, storage, memory or networking. Consumers subscribe to a service rather than purchase a dedicated resource. Thus, service abstractions are more important than physical resources or implementations.

Those who provide cloud computing platforms are called *cloud providers*. Those who avail them are called *cloud consumers*. Cloud providers simplify the work of consumers by providing and managing essential resources. Consumers can therefore avoid upfront capital expenditure and focus on building their business applications. Providers also offer different service models and cloud configurations to suit different consumer needs.  

Cloud computing brings many benefits not possible with traditional models of computing. This is prompting businesses to move to the cloud.

## Discussion

### Why do we need cloud computing when there are data centres and web servers?

Data centres and web servers are components of internet computing. A client device could access a remote web server via the internet and avail its services. Data centres brought economies of scale by bringing together many such servers, storage devices, firewalls, routers, and switches. These advances made it possible for enterprises to share data and applications more effectively. However, applications were deployed on a single server or sometimes a cluster of servers. The deployment was fixed. To handle higher loads, either servers had to be upgraded or more servers had to be added manually. 

Cloud computing changes all this. Configurations are not fixed. A cluster of servers share the load. Servers are added or removed automatically to serve the current load. Thus, cloud computing exposes the abstraction of a service and hides the underlying physical implementations. Failure of a single server will not bring down the service.  

In short, cloud computing brings better flexibility, scalability and reliability that was limited with internet computing. 


### What are the characteristics of cloud computing?

The National Institute of Standards and Technology (NIST) identified in 2011 the following characteristics of cloud computing: 

    + **On-Demand Self-Service**: Without help from the cloud provider, consumers can provision and monitor resources on their own.
    + **Broad Network Access**: Any device from mobile phones to powerful workstations can access cloud capabilities over the network.
    + **Resource Pooling**: Resources are shared among many consumers, making it a multi-tenant model. Consumers have no knowledge of the exact location of these resources but may be able to select the country, state or data centre.
    + **Rapid Elasticity**: Resources can be scaled on demand. Scaling can be vertical or horizontal. Scaling can be manual but often semi-automated or fully automated.
    + **Measured Service**: Provider monitors the use of resources. This is used for billing and optimal use of resources.Gong et al. identified the following additional characteristics: service-oriented model that provides the right abstractions; loose coupling between client and server, and among applications running on the same platform; virtualization that enables loose coupling; fault tolerance; pay-per-use business model; and ease-of-use via web interfaces. 


### What are some myths about cloud computing?

Some myths have persisted since the early days:   

    + **Security**: On-premises data centres are perceived to be more secure. In reality, cloud platforms implement best-in-class security principles and are maintained by experts. However, security is really a shared responsibility between the cloud vendor and the user.
    + **Cost**: The cloud model is not necessarily costlier. There are "pay-as-you-go" options. Moving to the cloud isn't only about cost savings. Cloud computing opens up other benefits such as business agility.
    + **Control**: Cloud doesn't result in loss of control or vendor lock-in. Different service and deployment models are available.
    + **Migration**: Moving to the cloud might have caused service downtimes in the past. Today, cloud providers offer seamless migration with minimal downtime.
    + **Value**: Cloud isn't just for big companies. Smaller companies may benefit more by saving on infrastructure and its operations. Another myth is that cloud enables only storage, analytics and IT services. Cloud can streamline operations across all business functions including customer service, sales, marketing, manufacturing, and more.
    + **Strategy**: Moving to the cloud doesn't equal digital transformation. It's only the first step. Applications may need to be refactored to leverage the cloud. Strategy should relate to business goals.

### Which are the different cloud deployment models?

Cloud computing offers three main deployment options:  

    + **Public**: The dominant one. When a user or an enterprise moves to the cloud, their complete infrastructure is fully managed by the cloud provider. Consumers need not purchase or maintain their own infrastructure. It's called "public" because anyone can create an account with the provider. Resources are shared with other users.
    + **Private**: Infrastructure that's dedicated to one consumer. It may be infrastructure belonging to the consumer or rented/leased from a public cloud provider for exclusive use. Existing data centres could become private clouds if operated on the principles of cloud computing, such as virtualization and efficient resource management.
    + **Hybrid**: Combination of both public and private clouds. Consumers might retain critical functions in a private cloud while migrating others to a public cloud. Regulatory compliance and data protection needs make hybrid or private clouds a necessity.Variations of the above include community cloud (a community of users sharing a private cloud), multicloud (using multiple clouds for redundancy),  and polycloud (distributing workloads across multiple clouds). 


### What are the different service models in cloud computing?

Cloud computing three main service models:   

    + **Infrastructure-as-a-Service (IaaS)**: Cloud vendor provides shared or dedicated resources for compute, storage and networking. Operating system, middleware, applications, and many others are under the control and management of the consumer. Thus IaaS gives consumers more flexibility but at the expense of more work to configure and operate. This is somewhat similar to how traditional IT departments manage enterprise infrastructure.
    + **Platform-as-a-Service (PaaS)**: Developers are the main beneficiaries of this model. The cloud provider manages the hardware and virtualization as in IaaS but also provides OS, middleware and application platforms. This simplifies the work for developers who can focus on building and managing their apps.
    + **Software-as-a-Service (SaaS)**: For end users, the entire application is delivered from the cloud. The cloud provider manages all parts of the service from the hardware to the application. Users can access the application via a web browser without installing any dedicated software on their systems. Gmail is an example of SaaS.

### What some specialized service models in cloud computing?

The early service models of IaaS, PaaS and SaaS are very much relevant today. However, these have also been specialized to create niche cloud offerings. Nowadays, many services are being offered remotely on the cloud without customers having to manage them in-house. We briefly describe a few of these:

    + **Backend-as-a-Service (BaaS)**: Cloud providers take care of storage, database management, user authentication, notifications, hosting, and more. With server-side application logic, BaaS offers more that what PaaS offers. Developers can focus on the frontend user interface and client-side application logic. When applied for mobile applications, it's called Mobile Backend-as-a-Service (MBaas).
    + **Containers-as-a-Service (CaaS)**: A subset of IaaS for managing containers and virtualized applications. A further specialization is Kubernetes-as-a-Service (KaaS) if containers are managed using Kubernetes.
    + **Function-as-a-Service (FaaS)**: Enables execution of modular units of code (called functions) in response to events. Resources are allocated and billed for only when used, unlike IaaS or PaaS.
    + **Machine Learning-as-a-Service (MLaaS)**: Provides data scientists and developers ready-to-use ML models and tools to manage or execute those models.Others include Database-as-a-Service (DBaaS), Security-as-a-Service (SECaaS), Identity-as-a-Service (IDaaS), Storage-as-a-Service (STaaS), Test Environment-as-a-Service (TEaaS), Desktop-as-a-Service (DaaS), and many more. 


### Who are the main vendors of cloud computing platforms?

Well-known vendors of public cloud include Alibaba Cloud, Amazon Web Services (AWS), Google Cloud, IBM Cloud, and Microsoft Azure.  Canalys estimated that in Q3 2021, 61% of total cloud spending went to just three vendors: AWS, Microsoft Azure and Google Cloud. 

Many of the public cloud vendors also offer private/hybrid clouds and software stacks that enable the implementation of private/hybrid clouds. Examples include Red Hat OpenStack, Rackspace, IBM Bluemix Private Cloud, Microsoft Azure Stack, VMware Private Cloud, Amazon Virtual Private Cloud (VPC), Cisco Quickstart Private Cloud, Google VPC, HPE GreenLake, IBM Cloud Satellite and Dell. 

Examples of PaaS are IBM SmartCloud Application Services, Google App Engine, AWS Elastic Beanstalk, Apache Stratos, and Magento Commerce Cloud. 

There are also plenty of vendors offering specialized service models. For example, FaaS offerings include AWS Lambda, Google Functions, Azure Functions, IBM Cloud Functions, Alibaba Functions, Oracle Functions, and Cloudflare Workers. MLaaS offerings include Amazon (Polly, Sagemaker, Rekognition, etc.), Google Cloud AutoML, Azure Automated ML, IBM Watson Machine Learning, and more. BaaS offerings include AWS Amplify, Google Firebase, Back4App, Parse, Backendless, Pubnub, and more. 


### What are the typical uses cases of cloud computing?

With IaaS, cloud is useful in offloading the responsibility of installing and operating infrastructure. With PaaS, developers can more quickly build, deploy and monitor their applications from components provided by the cloud provider. With SaaS, users always get the latest versions of the software without any installation from their end. Applications are also becoming cloud-native to get the most out of the cloud. 

Streaming video and audio, storing social media content, storing important documents, running banking applications, CRMs and ERPs, and managing logistics are just some examples where cloud can be used. 

Test and development environments can be set up in the cloud. This saves capital expenditure, manpower and time. Cloud collaboration and testing also enables faster development cycles.  

Cloud is used for data storage. Cloud can also get the best out of both structured and unstructured data via big data analytics. With it's ability to scale dynamically, cloud can perform real-time analytics even when data comes in at varying rates. 

Disaster recovery and data backups are further use cases where cloud saves time and cost.  


### What are some criticisms of cloud computing?

Some of the criticisms are related to the myths surrounding cloud computing. With better understanding, some of these myths can be dispelled. However, there are some valid criticisms.

In the past, users could run applications on standalone systems even without an internet connection. This is not so for cloud-based applications. Good **connectivity** is essential. 

**Security** is another concern. While cloud providers are continually making operations more secure, the fact that applications are accessible online make them less secure than applications or systems that run offline in isolated environments. 

**Data mobility** can be problem. Getting large volumes of data in and out of cloud systems can be expensive and slower than local access. It's also not easy to move data from one cloud provider to another. In general, there's no easy way to migrate an application from one cloud provider to another due to proprietary interfaces and deployments. Hence, there's a danger of **vendor lock-in**. 

## Milestones

1950

At a time when computers are expensive, many users share the use of mainframes from their dumb terminals.  

1969

The first packet is sent on the **ARPANET** (Advanced Research Projects Agency Networks), a network in which a few computers at different geographic locations are interconnected. ARPANET becomes a testing bed for the development of many networking technologies. It would eventually evolve into what would be called the Internet. 

1972

Developed from research work from the late 1960s, IBM releases VM/370. This is a system that can emulate different operating systems and virtual runtime environments to serve the needs of different applications and users. This is the beginning of **Virtual Machines (VMs)**.  

1990

The idea of **grid computing** is proposed in the early 1990s. This is really a metaphor for making computing as accessible as the electric power grid. Grid computing is essentially distributed computing that brings together resources for tasks that would be hard to execute on a single machine alone. As such, it offers an alternate to powerful and specialized supercomputers. 

1996

The term **cloud computing** appears in an internal document at Compaq. This is probably the earliest use of the term. The idea is to enable ISPs to implement and bill for cloud-computing enabled apps. The prediction is that cloud apps would become more important than enterprise apps. The term is borrowed from the word "cloud" that engineers often used for telecom networks. In fact, by early 1990s, patent diagrams had depicted the internet as a cloud. 

1999

*Salesforce* replaces its traditional CRM software with a cloud-based software, thus becoming a pioneer in cloud computing. It's application is the first large-scale example of SaaS. 

Jul  
2002

Amazon creates a subsidiary named *Amazon Web Services (AWS)*. In 2006, AWS launches Simple Storage Service (S3) and Elastic Compute Cloud (EC2) as elements of its IaaS offerings. 

Aug  
2006

At a conference, Google CEO Eric Schmidt introduces the term "cloud computing". By the following year, Amazon, Microsoft and IBM start using the term, signifying that cloud computing has gone mainstream. 

Apr  
2008

As a PaaS, Google releases the beta version of *Google App Engine*. This includes dynamic content serving, persistent storage, automatic scaling, load balancing, use of Google APIs for user authentication and emails, and local development environment. By 2022, Google App Engine supports Python, Java, Node.js, Go, Ruby, PHP, and .NET. 

2009

Vaquero et al. attempt to find a suitable definition of cloud computing. They analyse publications from 2008 and identify as many as 22 different definitions. This shows that not everyone agrees what the cloud represents or provides. They propose a definition that includes scalability, virtualization and pay-per-use utility model. 

Feb  
2010

Microsoft makes its cloud platform called *Windows Azure* generally available. This is initially positioned as a PaaS offering. In subsequent years, this is rearchitected into a IaaS offering and renamed to *Microsoft Azure*. In 2014, Microsoft embraces open source software, and by 2017 40% of VMs on Azure run on Linux. 

Jul  
2010

Rackspace Hosting and NASA jointly launch an open-source cloud-software initiative known as *OpenStack*. OpenStack can be used on commodity hardware to create an IaaS offering. 

2011

The National Institute of Standards and Technology (NIST) publishes a reference model of cloud computing. In a separate document it defines cloud computing as "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." 

Dec  
2019

Amazon announces *AWS Outposts* to bring to its customers a better hybrid cloud offering. AWS Outposts extends AWS infrastructure and services to on-premise deployments and customer data centres.