Cloud Computing : A fun Introduction.
Tags: cloud, beginners, aws, azure
Published: 2023-04-08 23:25:01

The **Cloud**, you have probably heard about this term again and again. You may wonder, what is it all about? Googling the expression **Cloud Computing** probably lead you to discover IAAS,PAAS and SAAS acronyms; What are they? 
In this article we are going to discover what is cloud computing. To help you through this journey, we are going to use examples, common terms you probably know and at the end of this reading, you will definitely understand the main cloud concepts. Are you ready? Let's go. 

Let's start with an example. 
Kalvin is a mobile application developer and she just launched her first mobile application. It is a social media app. One week after launching, the app has 1000 users but 10 days after the number of users amazingly increases. She now has 100 000 users to manage. This is huge right? But the worst is still to come. Actually at the start of the project she did not foresee such an amazing growth. The resources she allocated to the project were quite small. Which resources? Storage, Network, Hardware, etc. Now, with this abrupt growth she must increase her infrastructure. But think about it, increasing her infrastructure means having new buildings, augmenting the storage structures, hiring more employees...... It simply means investing more time and money in the project for unpredictable human behaviours. Having this example in mind, let's define cloud computing.  

**1. WHAT IS CLOUD COMPUTING?**

Cloud computing is the on-demand delivery of compute power, database storage, applications and other IT resources through a cloud service platform via the internet with pay as you go pricing.
Let us break down this definition into key points. 

- **On-demand:** In the cloud, the resources or services are delivered based on the demand made by the clients. It may seem obvious, but stick and continue reading.

- **Cloud service platform or Service provider:** This denotes the fact that to access a cloud service, you must pass through a platform or the provider of that service.

- **Pay as you go:** This is one of my favourite point, you pay resources used as per their usage. 

Now that you know what is cloud computing, you can easily figure out why cloud computing is used over traditional data centres. 

**2. BENEFITS OF CLOUD COMPUTING**

- **Low cost:** Cloud computing reduces cost by trading capital expenses(CaPex) for operational expenses(OpEx). But what are these? **CaPex** represents all the upfront cost endorsed when building a data centre (i.e costs for the building, servers and supporting the equipments). **OpEx** on the other hand represents the day to day expenses of a business. Take it like this, after the initial build of a data centre, ongoing connectivity, utility and maintenance costs are considered OpEx.

- **Benefit from massive economies of scale:** Cloud services are used by multiple users at different scales. The services providers can hence offer these services at affordable prices. Also remember the Pay as you go concept. This helps each enterprise to pay just the resources they use at a certain point in time.

- **High availability:** Availability in cloud computing is the extent to which an app is fulfilling its intended business purpose. Applications that are highly available are built in a manner where a single failure won't lessen the application's ability to be fully operational. The different services offered by cloud providers often increases availability. 

- **High scalability:** Scalability refers to the ability to increase or decrease IT resources as needed to meet changing demand. In cloud we have two types of scalabilities.

**a. Horizontal Scaling:** This is adding additional instance(s) of the resource(s) you have. To better understand, imagine you have a Virtual Machine running in the cloud. Scaling Horizontally implies adding the number of identical Virtual Machines in the cloud. See it like duplicating your resources.

**b. Vertical Scaling:** Vertical scaling refers to adding more or faster CPUs, memory, or I/O resources to an existing server, or replacing one server with a more powerful server. Here we simply increase the size of the resources we need. 


![Scalability](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ctwulh4mzugwhelotvxq.png)

- **Increase speed and agility:** This makes a major difference between a traditional data centre and cloud. It takes a matter of minutes, seconds or hours to provision resources when needed once requested. Yes cloud computing helps us go global in minutes. 

- **High security:** Cloud helps ensure that all your resources deployed are safe from natural disaster, cyber threats and also meet regulatory and compliance requirements.

- **Stop guessing capacity:** No need to be guessing capacity as the resources can adjust their sizes based on the demand/usage.

**3. CLOUD COMPUTING CONCEPTS**

**- Elasticity:** This is the ability to acquire resources as you need them and release resources when you no longer need them. This joins the on-demand point explained above. In the cloud, you generally want to do this automatically.

**- Reliability:** This is a solution's ability to provide functionality for its users when it is needed. 

**- Agility:** The cloud lowers the cost of truing new ideas , reduces the time required to maintain infrastructure, reduces risk for the organisation around security and compliance and provides to emerging technologies.

**4. TYPES OF CLOUD COMPUTING SERVICES**

There are 3 main types of cloud computing services.

**a. IAAS(Infrastructure As A Service):** IAAS is a form of cloud computing that delivers fundamental compute, network, and storage resources to consumers on-demand, over the internet, and on a pay-as-you-go basis. This is the most flexible type of cloud service as it provides users with control and flexibility over the application. While the the cloud provider manages the infrastructure, it places a responsibility on the users to manage the platform, the application and the data.

<u>Use Case:</u>Lifting and shift migration
<u>Example:</u>Machine

**b. PAAS(Platform As A Service):** Platform as a service supplies an on-demand platform for developing, testing and managing software applications. The purpose of PAAS is to make it easy for developers to quickly create an application without having to worry about the underlying infrastructure. 
It is the middle ground between renting a space in a datacenter (IAAS) and paying for a complete and deployed service (SAAS). In PAAs, the cloud provider maintains the physical infrastructure as well as the platform, while user manages application and data. 

<u>Example:</u>Azure web application

**c. SAAS(Software As A Service):** Software as a service (SaaS) is a software distribution model in which a cloud provider hosts applications and makes them available to end users over the internet. In this model, an independent software vendor (ISV) may contract a third-party cloud provider to host the application.
Here, the cloud provider hosts and manages the infrastructure, platform and application. In this case, the user is completely renting or using a fully developed application. This is the least flexible, easiest to run and requires the least amount of technical knowledge. 

<u>Example:</u> Outlook, Skype, One drive, etc.

To summarise this section always remember IAAS offers maximum control and SAAS minimum maintenance with PAAS in the middle.


![Cloud Computing Services](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/knosiznk903776dh7mtt.png)

**5. CLOUD DEPLOYMENT MODELS**

Let's now talk of 3 cloud deployment models.


![Cloud deployment models](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f6eifhx8mnm6xhn8ko3u.png)

**- Public Cloud**
Owned and controlled by cloud services providers.Here customers pay for services consumed and resources in the cloud are shared with other consumers. 

**Advantages**
- No capital expenditure to set up 
- Scalability
- On demand self-service

**Disadvantages**
- Less control 
- Less security

**- Private Cloud**
Computing, storage and network resources are provided for a single entity or organisation without sharing e.g IBM.

**Advantages**
- Full control and management over the cloud system. 
- Regulatory governance.
- Good for legacy application.

**Disadvantages**
- Higher cost
- Full responsibility
- Less flexibility

**- Hybrid Cloud**
Uses both public and private cloud.

**Advantages**
- Scalability
- Lower CaPex expenditure
- Better security management

**Disadvantages**
- Complexity to manage
- Difficult to implement

## CONCLUSION

This article help us discover what is cloud computing. What are its main concepts, deployment models and services. What's next? Like, share and follow for more articles.