Let's Talk Cloud Computing
Published: 2024-05-26 10:30:27

When people hear, cloud computing or the cloud they see it as something very supernatural, vague and complex at least I did. This article is the first of my cloud series where I would be breaking down these cloud concepts.

---

## Let's Define Cloud Computing

Cloud Computing is providing computing services or resources (storage, computing power and network) over the internet. It is simply delivering computing resources (storage, compute power, networking and so on) that’s virtual to a user via the internet.

>💡Major thing to note is that these computing resources are virtual to a user, that is the user does not have physical access to these resources, but they can access then through the internet.

## Why the Name Cloud?

When people hear cloud, they think these resources are somewhere up there😬. Unfortunately, that’s not the case. The word cloud is more like a metaphor to describe something that is virtual to a user. It’s presumed that the users do not actually have physical access to these services in as much as these services are in a physical location.

## Before the Cloud

Let’s look into how applications are deployed before cloud computing came about. It is quite important to look at how things were done before and what exactly cloud computing is solving.

Traditionally, to deploy an application an organization or individual has to buy servers with the correct memory and storage requirements, keep them on-premises and use them to host their applications. This brought about a lot of capital cost (purchasing servers) alongside operational costs (electricity, employing skilled professionals or training staffs). Aside from the **costs**, there were issues of **security**, that is ensuring that the servers are safe from attacks, and **scaling** issues. Scaling involves increasing or decreasing the number of computing resources.

Thanks to cloud computing, users can scrape out the capital costs that comes with deployment, instead they pay for what they use without bothering about the security of these servers. Finally, with cloud computing scaling is quite easy as users can add or remove resources easily.

>💡You can see cloud computing as paying for utility bills instead of building your private or personal power station in your backyard which would be more expensive. You have to worry about the safety of the power station, so you don’t have your neighbors tapping light without your consent. Finally, when you are producing excess electricity there won’t be enough appliances to feed and it would be difficult to scale down.

## Categories of Cloud Computing

Cloud computing can be categorized based on deployment model and type of services provided.

### Deployment Model

Cloud computing can be divided into 3 types based on deployment model which includes.

* **Public Cloud**: In public cloud, resources and services are offered by third party providers (cloud service providers like AWS, Azure, GCP and so on) over the internet. These resources are offered and shared to multiple users or organizations as a pay-as-you-go basis.
    
* **Private Cloud**: In private cloud, the resources are dedicated solely to a single organization or user. It can be hosted on-premises or by a third-party provider.
    
* **Hybrid Cloud**: From the name, the hybrid cloud combines the elements of the public and private cloud. It is a perfect solution for organizations that want to migrate from an on-premises to cloud services.
    

### Type of Service

In terms of services offered, cloud computing can be divided into.

* **Infrastructure as a Service (IaaS)**: This is a type of cloud computing whereby cloud service providers are responsible for providing the computing resources or infrastructures (servers, storage and network) but the client or user is in control of these infrastructures (security, providing information and so on). Example: Azure Virtual machines.
    
* **Platform as a Service (PaaS)**: This is a type of cloud computing that provides users the ability to develop and deploy applications without actually bothering about the management of the infrastructures. This service allows developers to focus more on the code implementation. Example: Azure web apps.
    
* **Software as a Service (SaaS)**: This type of cloud service allows users to access a software by organization on the cloud via a subscription. The user does not need to install any application on their local device, instead the software can be accessed via the web or an API. Example: Microsoft 365.


![Azure Shared Responsibility Model from Microsoft Learn](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/eysnq42klznz10cil7n9.png)

>💡The shared responsibility model from Microsoft Learn above helps you understand the cloud deployment model better. It just shows who is responsible for securing different aspects of the cloud computing environment between the cloud service providers (In this case Microsoft) and the user.

## Cloud Computing Concepts

Let’s look at some cloud jargons that we might have heard.

* **Visualization**: You can see virtualization as creating the virtual version of something for instance your computer hardware. This concept brings about virtual machines and virtual desktops. It allows you to utilize the full capacity of a physical machine by sharing it among multiple people or users at once.
    

>💡Virtualization solves the problem of underutilized hardware resources for instance; an organization is running 3 servers (one for legal &amp; compliance purposes, one for email services and last for web hosting) unfortunately each server are used to about 25% of its capacity which is a quarter of their capacity. With virtualization, you can split one of these servers into 3 unique that can handle independent tasks, so this way servers are effectively and efficiently utilized with less cost.

* **Containerization**: In simple terms containerization is a form of virtualization that allows you to package and tun applications and their dependencies in units called a container. containers provide a consistent and isolated environment, ensuring that an application runs smoothly across various computing environments. Different systems or environments have different operating systems, and these operating systems need different dependencies or requirements to run certain applications.
    

>💡As a developer we get to hear things like “<strong>it’s working on my own system but it’s not working on yours</strong>”, this is the issue containerization is trying to resolve.

* **Serverless Computing**: When people hear serverless computing, they assume there are no servers involved. Just like in cloud computing resources are not in the cloud, in serverless computing servers are also involved. Instead serverless computing simply means that cloud providers allocate resources to users on a demand basis. Serverless computing is event driven, works on the pay as you go basis and involves auto-scaling.
    

>💡Let’s use a dinner party as an analogy. Let’s say you are hosting a group of friends for dinner, instead of preparing a single meal for all to eat, you create a menu and hire a team of chefs to prepare a fresh meal for anyone based on their order.

## Cloud Service Providers

Before a cloud resource can be accessed or used, one needs to go through a cloud service provider.

Cloud Service Providers are firms or companies (people) that offer cloud resources. There are several cloud service providers like Microsoft Azure, Amazon Web Services (AWS), Google Cloud Platform (GCP), Oracle, IBM and so on.

Throughout this series, we would be working with Microsoft Azure, looking at its different services, where when and how to utilize these services.

---