Amazon EC2 Basics
Tags: aws, cloud, opensource, ec2
Published: 2023-07-04 00:40:00

Hello there! I'm Edmond, an advocate of transparent learning, where I openly share my knowledge and experiences with the community while eagerly absorbing insights from others. Currently, I'm working on a blog post focused on a subject within AWS Cloud Computing.

## What is Cloud computing?
Cloud computing provides users with the ability to access abundant computing resources via the internet, surpassing the limitations of individual hardware. It encompasses crucial resources like processing power, memory, and other components necessary for successful program execution. This scalability and accessibility enable users to leverage larger resource quantities than what a single local server or laptop can accommodate, resulting in enhanced computational capabilities.

## Compute resources
Compute resources are measurable quantities of compute power that can be requested, allocated, and consumed for computing activities. Examples of compute resources are:
CPU and Memory.

- **CPU:** Application developer can specify how many allocated CPUs are required for running their application and to process data. It is measured in millicores.

- **Memory:** It is responsible for holding data that is actively being processed by the CPU, as well as the program code and variables necessary for program execution. 

## AWS compute options
Amazon Web Services (AWS) offers a broad range of functionality for your compute workloads or services.
For compute in AWS, the three most commonly used services are as follows:

- **Compute** (AWS EC2)
- **Container services** (AWS ECS & EKS)
- **Serverless services** (Lambda)

Each of these options serves a specific function, provides configurable options, and exists to meet a variety of workloads within the AWS Cloud. 

## Amazon EC2(Elastic Compute Cloud)
Virtual machines(VMs) are basic building blocks that gets computing power from the cloud. A VM is software that can perform all the functions as a physical computer, including running applications and operating systems. It is a digital version of a physical computer.

In AWS compute services, VMs are called instances.

Amazon EC2 is a virtual machine that provides a diverse selection of instance types that can be tailored with different combinations of CPU, memory, storage, and networking resources. This allows users to configure instances according to their specific workload needs. The variety of options enables scalability and efficient resource management for applications hosted on Amazon EC2.

## Instance types
**Instance types** are grouped together into instance families. Each instance family is optimized for specific types of use cases.

**Instance families** have sub-families, which are grouped according to the combination of processer and storage used.

**A virtual central processing unit (vCPU)** is a measure of processing ability. For most instance types, a vCPU represents one thread of the underlining physical CPU core. For example, if an instance type has two CPU cores and two threads per core, it will have four vCPUs.

The AWS instances are currently categorized into five distinct families.

**General Purposes Instances**
It provides a balance of compute, memory, and networking resources and can be used for a wide range of workloads. You can use General Purpose Instances for **_gaming servers, small databases, personal projects, etc_**

**NB**: _If high performance CPUs are not required for your applications, you can go got General Purpose Instance._

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cohfmrhag7yo2n3xcvvv.png)

_The following diagram shows the icons for the general purpose family and sub-families as of this publication._


**Compute Optimized Instances**
it is an ideal for compute-bound applications that benefit from high-performance processors. Instances belonging to this family are well suited for compute-intensive operations, such as the following:
- Batch processing workloads
- Media transcoding
- High performance web servers
- High performance computing (HPC)
- Scientific modeling
- Dedicated gaming servers and ad server engines
- Machine learning (ML) inference 

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/eeud1ehg83pba0elwrc4.png)
**NB:** _The following diagram shows the icons for the compute optimized family and sub-families as of this publication._


**Memory Optimized Instances** 
They are designed to deliver fast performance for workloads that process large data sets in memory.
Memory here defines RAM which allows us to do multiple tasks at a time. Memory is a temporary storage area.
It loads from storage, holds the data, and process it before the computer can run it.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ylc05qdxos8rv78wedlc.png)

**NB:** _The following diagram shows the icons for the memory optimized family and sub-families as of this publication._


**Storage optimized instances** 
They are designed for workloads that require high, sequential read and write access to very large data sets on local storage. 
Distributed file systems, data warehousing applications, and high frequency online transaction processing (OLTP) systems are examples of workloads that are suited for storage instances. 
They are optimized to deliver tens of thousands of low-latency, random input/output (I/O) operations per second (IOPS) to applications.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r51hob9zl1l92raqiuhz.png)


**NB:** _The following diagram shows the icons for the storage optimized family and sub-families as of this publication._


**Accelerated Computing Instances** 
It uses hardware accelerators, or co-processors, to perform some functions more efficiently than is possible in software running on CPUs. Examples of such functions include floating point number calculations, graphics processing, and data pattern matching. Accelerated computing instances facilitate more parallelism for higher throughput on compute-intensive workloads.
Graphics applications, game streaming, and application streaming are all good candidates for Accelerated Computing Instances.
Data pattern matching can be done more efficiently with this instance type.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/79u7g176e8vi2pb230dx.png)

**NB:** _The following diagram shows the icons for the Accelerated optimized family and sub-families as of this publication._