These are my personal notes to better understand AWS compute services and be able to answer related questions in the Cloud Practitioner certification. I’m keeping it simple and clear β not trying to be exhaustive, just making sure I get it.
π₯οΈ Amazon EC2 (Elastic Compute Cloud)
EC2 lets me launch virtual servers in the cloud. I can choose how much memory, CPU, storage, and which OS I want β and AWS handles the physical hardware. Itβs like renting a server, but only when I need it.
βοΈ EC2 Instance Types
There are different types of EC2 instances depending on what the app needs:
- General Purpose β balanced: good default choice
- Compute Optimized β more CPU power (e.g., data processing)
- Memory Optimized β more RAM (e.g., databases, analytics)
- Storage Optimized β fast access to local disk (e.g., big data)
- Accelerated Computing β GPU or FPGA for ML or graphics
πΈ EC2 Pricing Options
βοΈ On-Demand
I pay by the second or hour. No commitment. Great for testing or short-lived stuff.
π Reserved Instances (RI)
I commit to using a specific instance type in a region for 1 or 3 years. In return, I get up to 72% discount. Good if I know Iβll use it consistently.
π΅ Savings Plans
I commit to spending a fixed amount per hour (e.g., $5/hour), and AWS gives me discounts on EC2, Lambda, and Fargate β up to that amount. Itβs more flexible than Reserved Instances.
π Spot Instances
These use spare capacity, and I can save up to 90%. But AWS can stop the instance at any time (with a 2-minute warning). Great for background jobs or anything I can restart easily.
π§ Dedicated Hosts
This is for when I need to run my stuff on a dedicated physical server β maybe for licensing or compliance reasons.
π Auto Scaling & Load Balancing
π EC2 Auto Scaling
This automatically adds or removes EC2 instances depending on usage (CPU, memory, etc.). It’s useful to handle peaks and save money when there’s less traffic.
βοΈ Elastic Load Balancer (ELB)
This spreads incoming traffic across multiple instances. If one fails, traffic goes to the others. Great for high availability.
π£ Amazon SNS (Simple Notification Service)
SNS lets me send notifications or messages to:
- Email addresses
- SMS numbers
- SQS queues
- Lambda functions
- HTTP endpoints (webhooks)
Itβs useful to connect AWS services together or notify someone when something happens.
π¬ Amazon SQS (Simple Queue Service)
SQS is a message queue. One service puts a message in the queue, another service reads it later. Itβs a way to decouple services so they donβt depend on each other directly.
SNS + SQS = classic combo. πͺ
π§ AWS Lambda
Lambda runs small bits of code without servers. I just upload the function, set a trigger, and AWS runs it.
β Pros:
- No server to manage
- Auto scaling
- Pay only for what I use
β οΈ Limitations:
- Max 15 minutes per execution
- Stateless (no memory between runs)
π³ ECS & βΈοΈ EKS (Container Orchestration)
π΅ ECS (Elastic Container Service)
This is AWSβs own container service. I define what Docker container to run, and ECS runs it on EC2 or Fargate. Simple, AWS-native.
βοΈ EKS (Elastic Kubernetes Service)
This is managed Kubernetes on AWS. More flexible and powerful, but more complex too. Ideal if I (or my team) already know Kubernetes.
π AWS Fargate
Fargate is awesome: I just define how much memory and CPU I need for my container β and AWS runs it for me.
No EC2 instances, no infrastructure, just my app.
π Super simple
πΈ More expensive if I run something 24/7
Works with both ECS and EKS.