Getting Started with AWS Cloud
Tags: aws, career, cloudcomputing, amazonwebservices
Published: 2023-09-01 13:53:17

**What is the Cloud?**

In the past, companies and organizations hosted and maintained hardware such as compute, storage, and networking equipment in their own data centers. They needed to allocate entire infrastructure departments to take care of them, resulting in a costly operation that made some workloads and experimentation impossible.

As internet usage became more widespread, the demand for compute, storage, and networking equipment increased. For some companies and organizations, the cost of maintaining a large physical presence was unsustainable. To solve this problem, cloud computing was created.

**What is the Cloud Computing?**

Cloud computing is the on-demand delivery of IT resources over the internet with pay-as-you-go pricing. You no longer have to manage and maintain your own hardware in your own data centers. Companies like AWS own and maintain these data centers and provide virtualized data center technologies and services to users over the internet.

Cloud computing not only saves time but also provide reliability, scalability, cost effectiveness, presistancy, predictiveness.

**The Six Benefits of Cloud Computing**

- You will pay for what, you have used
- Auto Scalability
- High Speed Support
- Stop spending money for maintaining data centers
- Deploy your application in minutes or in few clicks

**On-Premise vs Cloud:**

Case 1:
What if, we save our important data in our laptop but unfortunately laptop has stolen. There is no way to recover that data, if it is not backed-up on Cloud. 

Case 2:
What if, the Cloud datacenter got destroyed through fire. No worries, in this case our data is still safe because Data Centers are decentralized, which means all of the data centers are connected with each other. 

In any case of uncertainty, the second datacenter keep on running under the absence of first data center. That, cluster of datacenter is called **Availability Zone**. The clusters of AZ (Availability Zone) is called as Region.

When a cluster of AZ in region-1 is down for any reason then cluster of AZ in region-2 will start working.

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

**Three thing you might consider while selecting region:**

It must contains:
- Low latency rate
- Less Pricing in that region
- Service availability

As of March 8, 2023, AWS has 32 regions and 102 Availability Zones (AZs) around the world. AWS is constantly expanding its global infrastructure, so the number of regions and AZs is always changing. You can find the latest information on the AWS website.

Now, Lets drive deeper in AWS (Amazon Web Services). 
There are **3 ways** to interact the **AWS service** on AWS Platform:

- AWS Management Console
- Command Line Interface
- Software Development Kits (SDks)

IN AWS Management Console, We use UI interface, from where we can easily navigate to the service that we want to use.

![AWS Management Console](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/16qzyquq9nlorjz6exes.png)

In Command Line Interface, We use terminal and type command run any aws service.

![Command Line Interface](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tdahi9ob6xn94xihstvl.png)

In SDKs, We use can integrate it with the scripting tools like python script in VS Code. SDKs are open-source and maintained by AWS for the most popular programming languages, such as C++, Go, Java, JavaScript, .NET, Node.js, PHP, Python, and Ruby. Developers commonly use AWS SDKs to integrate their application source code with AWS services. 

Here is an example of code you can implement to work with AWS resources using the Python AWS SDK.

import boto3

ec2 = boto3.client('ec2')

response = ec2.describe_instances()

print(response)
 
**What is shared responsiblity model?**

AWS emphasize on shared responsiblity model. Which means both the customer and AWS are responsible for managing and taking care of AWS. Some of the things, customer are the responsible like security. While other things, AWS took care about it like, Hardware issues, networking, compute etc.


![Shared Responsiblity model](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/utvdb0t4199g7hxc50c5.png)

**AWS Access Control** 
- Root User
- IAM User

AWS strongly recommend that do enable MFA (Multi-factor Authentication) and don't use Root User on day to day routine. Instead create an IAM (Identity Access Management) Role allow access of the services and use IAM User in daily routine, just for the safety reasons.

**Authentication & Authorization:**

Authentication allow user to logged into the account [AWS Account] while Authorization allow user to give access or grant permission to use specific service. **Example:** In a company, every person logged into the account to mark attendance but only HR (Human Resource) is authorized to see the attendance of employees.

> **Everything in AWS is an API Call**

IAM Policy allow admin/Root to Grant access to the group user or an Individual User.


![IAM Policy](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6l4n5rkzlknvhaejs29o.png)

You cannot apply policy to the root user but you can apply policies to the IAM User. So, It is suggested by **AWS** that you can create IAM Admin from the root user and then logged out from it and then logged in with the IAM Admin user. IAM supports MFA.

**Deploy a Web Application on AWS:**

In order to deploy a web app on AWS, you need to create an instance of **EC2** (Elastic Compute Cloud) where you can add access to IAM Group users, So that all of the **IAM** Users in a IAM Group can get access to the hosted web application. Don't forget to select the Free Tier option while you are in a free tier account, so that will not get charged.