Cloud Computing and AWS
Tags: aws, cloud, beginners, programming
Published: 2022-06-01 13:22:00

## Overview 

Large Companies, startups and even individuals are all switching to the cloud and carrying out most of their activities in the cloud. Cloud computing is emerging with a great demand.

Companies like AWS provides cloud computing platforms and major services for individuals, companies, and even the government. The services they provide are on-demand and affordable.

AWS has four foundation services which are :

- Compute
- Storage
- Database
- Network

I didn't know about cloud computing until I got accepted into the AWS Community Builders program. AWS are doing a great work in bringing people's awareness to what Cloud Computing is and the need to migrate to the cloud.

In this article, I am going to explain the concept of cloud computing in simple ways. This article is divided into five sections to make you understand cloud computing and why you need to migrate. The sections are:

## Table of contents
* [**Concept of Cloud Computing?**](#**Concept of Cloud Computing?**)
* [**Benefits of Cloud Computing**](#**Benefits of Cloud Computing**)
* [**Cloud Computing Models**](#**Cloud Computing Models**)
* [**Deployment Models**](#**Deployment Models**)
* [**Conclusion**](#**Conclusion**)

**Let's get started!!!**

## Concept of Cloud Computing? <a name="**Concept of Cloud Computing?**"></a>

Companies, startups and even individuals spend a lot of money to set up data centers. They take into consideration; the amount of compute power they need, the servers, storage e.t.c, order for servers and different materials before setting up a data center. These technology services are useless when there is no work to do and they end up becoming redundant. Cloud computing is here to solve these problems.

### What is Cloud Computing?


![Cloud Computing](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0m4s1bs4cm5l9o1w9y5r.jpg)

>Cloud Computing is the **on-demand** delivery of **IT resources** over the internet with **PAY-AS-YOU-GO** pricing.

**IT resources**: _compute, storage, database and network_ which are needed by companies make them go through too much stress to set up data centers which will become useless when they don't need them no more. Cloud Computing provides these technology services exactly when you need them -_on-demand_- with pay-as-you-go pricing i.e _you only pay for what you use_.

In other words,
>Cloud Computing is a remote virtual pool of **on-demand** shared resources offering **compute, storage, database, and network** services that can be rapidly deployed at scale.

Companies like AWS has a large data centers offering IT resources for others to benefit from. Providing it for them exactly when they need them while they pay for only what they use. But this is impossible without **Virtualization**.

>When multiple _virtual machines (VMs)_ -each running essentially a separate operating system and applications- are installed on one physical server with each performing their tasks uninterruptedly, we said it is **Virtualization**. 

Vendors like AWS refers these VMs as **intances**. They make it available to be bought and used by users with various configuration. 

Suppose you need to use a large amount of storage without setting up a data center, all you have to do is order for the **Amazon S3(simple storage service)** and put it to a good use.

This is how it work: 

You buy the instance(VM) for storage from vendor e.g AWS. Once you launch this instance, it got installed on the AWS Large physical hardware in their data center. When you make a request to use a certain amount of storage, the request goes via the **Hypervisor** which handles the request. 

>A Hypervisor is a piece of software used to create the _virtualized environment_ allowing for multiple VMs to be installed on the same host.

The Hypervisor sits between the VMs and the physical hardware and creates a shared pool of virtual hardware for each of them to access. 

The Hypervisor reaches out to AWS Physical Hardware to provide for you the amount of storage you requested for. Every VM installed on the hardware sees the hardware but they don't see each other. The hypervisor ensures the hardware resources are shared between all the VMs as needed and as configured.

>Everyone using the cloud gets what they want exactly when needed paying for only what they use. 


## Benefits of Cloud Computing <a name="**Benefits of Cloud Computing**"></a>


![Benefits of Cloud Computing](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kfm5ov747b4h3p0ekmkr.jpg)

As a developer, you would surely be curious about the reason why you need to adopt cloud computing and migrate to the cloud. Below are various benefits that would convince you to adopt cloud computing:

- **High security** - Every developer, companies and enterprises are always concern about their data. Cybercrimes are increasing with hackers breaching into many companies storage, accessing their data and using it for crime purposes. This has put many companies in a devastating state, reduced revenue due trust loss in them by customers. 

 Cloud storage is the most secure because it offers a great security. Many features and configurations allows only the architect to have access to company's data and can only give access to any qualified employee. This has improved security greatly and reduced data breaches.

- **Adoption of Variable expense** - variable expense means you only pay for what you use. Traditional approach of companies to access IT resources is the _upfront expense_, where they have to invest in data centers , physical servers before knowing how to use them. 

 Adopting variable expense that cloud computing offers will give a chance of inventing innovative services while saving cost and time. 

- **Stop guessing capacity** - Cloud computing makes it possible to use resources exactly when you need them. Instead of predicting how much infrastructure you need before deploying application, all you have to do is just launch an instance. You only pay for what you use.

- **Speed and Agility** - Cloud computing makes it easy to have access to the resources you need within minutes. Applications are deployed faster unlike un data centers where you have to wait for weeks before having access to resources which delays work and make you less productive.

- **Go global in minutes** - AWS Global infrastructure makes it possible for you to go global in minutes. Your customers can have access to your applications within minutes. 

WIN WIN for everyone.

## Cloud Computing Models <a name="**Cloud Computing Models**"></a>


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

There are three main models cloud computing offers. Individuals or companies can choose between these models based on their product requirements. The models are explained below:

1. **INFRASTRUCTURE AS A SERVICE (IAAS)** : **IAAS** contains the basic building blocks for the cloud IT and typically provides access to networking features, computers (virtual or on dedicated hardware), and data storage space. 
   **IAAS** provides you with highest level of flexibility and management control over your IT resources and is the similar to existing IT resources that many IT departments and developers are familiar with today.

2. **PLATFORM AS A SeRVICE (PAAS)** : **PAAS** removes the need for your organization to manage the underlying infrastructure (usually hardware and operating systems) and allows you to focus on the deployment and management of your management of your applications.  
   This helps you be more efficient as you don't need to worry about resource procurement, capacity planning, software maintenance, patching, or any of the other undifferentiated heavy lifting involved in running your application.

3. **SOFTWARE AS A SERVICE(SAAS)** : **SAAS**  provides you with a completed product that is run and managed by the service provider. In most cases, people referring to **SAAS** are referring to **end-user** applications.

  With **SAAS** offering, you do not have to think about how the service is maintained or how the underlying infrastructure is managed; you only need to think about how you will use that particular piece of software.

## Deployment Models <a name="**Deployment Models**"></a>


![Deployment Models](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gmeyrm4lzozkguagosur.jpeg)

Traditional deployment are what we are all familiar with. Applications are deployed using **on-premises** resources which are not easy to set up. 

With _cloud computing_, we have three options of using IT resources when deploying applications. Applications are deployed faster with less stress and less budget, you only pay for what you use. The models are explained below:

- **ClOUD** : Applications can be created in the cloud or can be migrated from an existing infrastructure to take full advantage of the cloud. A **cloud-based** application is fully deployed in the cloud and all the parts of the application run in the cloud. 

Cloud-based applications can be built on a low-level infrastructure pieces or can use higher level services that provide abstraction from the management, architecting, and scaling requirements of core infrastructure.

This gives birth to **Public Cloud**. 

>A Public Cloud is where a vendor e.g [AWS](https://aws.amazon.com/free/?trk=73c6744c-29f5-4966-bdc7-8599174c182d&sc_channel=ps&sc_campaign=acquisition&sc_medium=ACQ-P|PS-GO|Brand|Desktop|SU|Core-Main|Core|EEM|EN|Text&s_kwcid=AL!4422!3!444219541634!e!!g!!aws&ef_id=Cj0KCQjwnNyUBhCZARIsAI9AYlHw3ZiL_OEqa742mbokbU2kSa81Z1SYEv3N7cos1MvEfPKvYyV1gE4aArMwEALw_wcB:G:s&s_kwcid=AL!4422!3!444219541634!e!!g!!aws&all-free-tier.sort-by=item.additionalFields.SortRank&all-free-tier.sort-order=asc&awsf.Free%20Tier%20Types=*all&awsf.Free%20Tier%20Categories=*all) makes available the use of shared infrastructure which includes all IT resources: _compute, storage, database and network_ services. These resources can be accessed over the internet with _pay-as-you-go_ pricing.

- **ON-PREMISES** : The use of **private cloud** -deployment of resources using _virtualization_ and resource management tools- to deploy and manage applications is one of the deployment models cloud computing. 

A private cloud is privately hosted, managed and owned by individuals using it. This gives improved and more direct control of the company's data. The hardware is held on-premises

- **HYBRID** : A hybrid cloud makes use of both the _public cloud_ and the _private cloud_. A connection of infrastructure and applications between cloud-based resources and existing resources that are not located in the cloud is established. This is often used to extend, and grow an organization's infrastructure into the cloud while connecting cloud resources to the internal systems. 

>The **Cloud** is the easiest to use as it offers on-demand delivery of IT resources over the internet while you only pay for what you use.

## Conclusion <a name="**Conclusion**"></a>

The cloud is the now and future, data centers will soon be forgotten when every migrate to the cloud.

Vendors like AWS have made it very easy to use cloud.


MIGRATE NOW!!!