Fundamentals of Cloud Computing 
Tags: cloud, beginners, tutorial, azure
Published: 2020-08-05 13:40:14

Before we start, I want to state that this tutorial is **for absolute beginners** who want to get started with Cloud Computing.
(And there are going to be a lot of cloud jokes, I am sorry in advance &#128514; )

The tutorial has **no specific prerequisites**.

After reading this tutorial you’ll be able to answer the following questions:

- **[What is a Cloud?](#cloudDefinition)**
- **[What is Cloud Computing?](#cloudComputing)**
- **[What are the various Cloud Computing services?](#cloudServices)**
- **[What are the benefits of Cloud Computing?](#benefits)**
- **[What are the various service models of Cloud Computing?](#serviceModels)**
- **[What are the various Cloud Deployment Models?](#deploymentModels)**

![Alright, let's do this one last time](https://dev-to-uploads.s3.amazonaws.com/i/elcyg7wrzvinuul5asp4.jpg)

-----------------------------------------------------------
<a name="cloudDefinition"></a>
# <center>What is a cloud :cloud: ?</center>
<br>

**Definition by Cloudflare.com**
The cloud refers to servers that are accessed over the Internet, and the software and databases that run on those servers.

**In Layman's Term**
*It is someone else’s computer that you can rent remotely and can be accessed through the internet*.

Cloud servers are located in data centres all around the world.

Cloud allows the user to access the same files and applications from almost any device from anywhere in the world, as the storage and computing takes place in data centres.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/logxjjs5ym77vdia128w.jpg)

-------------------------------------------------------
<a name="cloudComputing"></a>

# <center>What is cloud computing?</center>

- Cloud computing **refers to renting resources, like compute
power or storage space, on some other company's computers.**
- **You only pay for what you use**. 
- The _company providing these services is referred to as a **cloud provider**_.
- The **cloud provider is responsible for the maintenance of
physical hardware** required to execute your work, and for
keeping it up to date. 
- The cloud computing services offered tend to vary by cloud provider.

![cloud computing meme](https://dev-to-uploads.s3.amazonaws.com/i/wvzab3xcoutaa9ijaske.jpeg)

---------------------------------------------------------
<a name="cloudServices"></a>

# <center>Some Cloud Computing Services :white_check_mark:<center>

The two most common services that all cloud providers offer are: 
- Compute power
- Storage

## <center>Compute Power</center>
There are generally three compute options: 
Virtual Machines, Containers and Server-less computing.

### <center>Virtual Machines:computer:</center>

> When you are building a product on the cloud you can choose how much work you want to do or how much responsibility for the resources do you want. 
If you want to have more control and responsibility for maintenance, you could create a virtual machine. 

- A Virtual Machine on the cloud is _**an emulation of a computer which is remotely accessed through your computer**_. 
- Each Virtual Machine includes an operating system like Linux or Windows. 
- You can then install whatever software you need to run your task. 
- The major advantage of a virtual machine is that you do not have to buy any of the hardware or install the operating
system.

### <center>Containers:gift:</center>

- Containers are very similar to Virtual Machines except they **do not require an operating system.**
- The application and its dependencies are packed into a package called a “container” and then a standard runtime environment is used to execute the app.
- **Docker is a standard open-source project that is used to create, deploy, and run applications using containers.**

### <center>Server-less Computing (I can't find any emoji for this)</center>

- Server-less computing is an approach you go for when you want the least control over the server(s). 
- It lets you run your project without creating, configuring, or maintaining a server. 
- The main idea behind server-less computing is that your application is broken down into separate functions that run when triggered by some action. 
- This type of computing is ideal for the tasks that are automated – for example using chat-bots which are triggered by a specific keyword or tasks.

<center>Image from [docs.microsoft.com](https://docs.microsoft.com/en-gb/learn/modules/principles-cloud-computing/2-what-is-cloud-computing)</center>
![Vm v/s containers v/s server-less computing](https://dev-to-uploads.s3.amazonaws.com/i/xbosxfyhiwzciownmthy.png)


## <center>Storage</center>

![Cloud Storage meme](https://dev-to-uploads.s3.amazonaws.com/i/6qw147f04vf5zmcx23o7.jpeg)

Most applications need storage to read or/and write data for various purposes. 
For example – storing user data, images, videos. 
- Most Cloud Providers offer such services that can take care of all your data storing needs.
- The advantage of using cloud storage is **_you can scale according to your needs_**. 
- **If you need more storage at any given time, you can pay more and expand your available storage**.

------------------------------------------------------------
<a name="benefits"></a>
<center>
# BENEFITS OF CLOUD COMPUTING

One of the best things about cloud computing is that **it is not an all or nothing approach**.
Companies can choose to use cloud resources as much, or as
little, as necessary to fulfil their needs.
</center> 
<center>Let's learn some of the benefits of cloud computing </center>
 
----

## <center>**It is cost-effective** :heart_eyes: :moneybag:</center>
Cloud computing provides a pay-as-you-go model, which means that you only have to pay for the resources that you use. This model brings with it many benefits, including.

- There is no upfront cost.
- You do not need to buy hardware and infrastructure.
- You do not need to maintain the hardware.
- You can stop paying for resources that are no longer
needed.
- It leads to better cost prediction.


## <center>**It is scalable** :chart_with_upwards_trend: :sunglasses:</center>
You can increase or decrease the resources and services at any given time according to your needs. You can scale your resources both vertically and horizontally according to your
need.
- Vertical scaling, also known as “scaling up”, refers to adding resources to increase the power of an existing server. 
For example – adding more GPUs or adding more memory.
- Horizontal Scaling, also known as “scaling out”, refers to adding more servers that function together as one unit.


## <center>**It is reliable** :yellow_heart:</center>
Cloud providers often provide services like data recovery,
disaster recovery and data replication services, as data is the most crucial information and cloud providers help to secure it. 
It is achieved through data redundancy.
So, if one component fails, a backup component will take its place. 
This is known as fault tolerance.


## <center>**It is secure** :mask: :muscle:</center>
- You have physical security – The data centres are equipped with walls, cameras, security personnel, gates, and so on to protect their assets.
- You have digital security – The cloud providers make sure that your data is secure from any potential threats and unauthorised users.

    
## <center>**It is global** :earth_americas: :earth_africa: :earth_asia: </center>
Most cloud providers have fully redundant data centres in various regions throughout the globe allowing you to replicate your services into multiple regions for redundancy and locality.


## <center>**It is current** :rocket:</center>
The cloud hardware is maintained and upgraded by the cloud providers and you can focus on what matters: building and deploying applications.

 
## <center>**It is elastic**:wavy_dash:</center>
Your cloud computing system can compensate for workload changes due to spike or drop-in demand by automatically adding or removing resources.

For example – Imagine your website experiences a sudden spike in traffic due to some reason. The cloud will automatically allocate more computing resources to handle increased traffic. 

When the traffic is normalised the cloud will automatically de-allocate additional resources to minimise cost.
![Cloud meme](https://dev-to-uploads.s3.amazonaws.com/i/s33br4x605vz08o34wjk.png)

----------------------------------------------------------
<a name="serviceModels"></a>
<center>
# MAIN SERVICE MODELS OF CLOUD COMPUTING
## :globe_with_meridians:Software-as-a-Service (SaaS):globe_with_meridians:
SaaS applications are the applications that are hosted on cloud servers and users access then over the internet. 
SaaS is just like renting a fully furnished house: you get to use it as your own, but it is still owned by your landlord.

Example: Google Apps, Dropbox, Salesforce

## :globe_with_meridians:Platform-as-a-service (PaaS):globe_with_meridians:
PaaS is a kind of service in which the vendor offers you everything you need to build your application like development tools, infrastructure, operating system. 
You get a complete environment to build, test and deploy your
application.

Example: Microsoft Azure, Heroku, Google App Engine

## :globe_with_meridians:Infrastructure-as-a-Service (IaaS):globe_with_meridians:
<center>It is the most flexible kind of cloud service. 
In this kind of service, a company rents the infrastructure and storage they need from the cloud vendor and then use that cloud infrastructure to build their application.
IaaS is like leasing land on which you can build whatever you want.

Example: Digital Ocean.

## :globe_with_meridians:Function-as-a-Service (FaaS):globe_with_meridians:
Function as service is also known as serverless computing.
The main idea behind serverless computing is that your
application is broken down into separate functions that run
when triggered by some action.
</center>

-----------------------------------------------------------
<a name="deploymentModels"></a>
<center>
# :cloud:CLOUD DEPLOYMENT MODELS:cloud:

## :zap:Private Cloud:zap: 
In a Private Cloud, you create a cloud environment in a data centre that is completely dedicated to your organisation. This allows simulation of public cloud to your organisation, but you are completely responsible for the maintenance of hardware and the software services you provide.

## :zap:Public Cloud:zap:
Public cloud service is run by an external vendor. Using virtual machines, individual servers are shared by multiple organisations.

## :zap:Hybrid Cloud:zap:
Hybrid cloud is an assortment of Public Cloud and Private Cloud. An organisation might use public cloud for one service and private cloud for some other service.
</center>


-----------------------------------------------------------

###<center> :confetti_ball: :tada: Congratulations :tada:  :confetti_ball: </center>
<center>You have completed this tutorial

**If you liked this tutorial consider supporting by Liking and Sharing this article.**

**Follow me on [Twitter](https://twitter.com/nirbhayvashisht)**

**You can also [Buy Me a Coffee](https://ko-fi.com/nirbhayvashisht)**
 

If you want me to make a tutorial on any computer science concept then leave the topic down in the comments.

Any feedback is appreciated
</center>

-----------------------------------------------------

<center>
### REFERENCES
[cloudflare.com](https://www.cloudflare.com/en-gb/learning/cloud/what-is-the-cloud/)
[docs.microsoft.com](https://docs.microsoft.com/en-gb/learn/modules/principles-cloud-computing/)
</center>