AWS - Non EC2 Compute
ECS : Elastic Container Service
- Launch Docker containers on AWS
- You must provision and maintain the infrastructure (the EC2 instances)
- AWS takes care of starting / stopping containers
- Has integrations with the Application Load Balancer
Fargate
- Launch Docker containers on AWS
- No need to provision the infrastructure (no EC2 instances to manage)
- Serverless offering
- AWS runs containers for you based on the CPU/RAM you need
ECR - Elastic Container Registry
- Private Docker Registry on AWS
- This is where you store your Docker images so they can be run by ECS or Fargate
Serverless - Lambda
- AWS EC2 vs Lambda
- Easy Pricing:
— Pay per request and compute time
— Free tier of 1 million AWS lambda requests then $0.20 per 1 million thereafter and 400K GBs of compute time means 200 seconds if function is 1GB RAM means 3.2 million seconds, if function is 128MB RAM after that $1 for 600K GB-second
- Integrated with the whole AWS suite of services
- Event Driver: functions get invoked by AWS when needed
- Integrated with many programming languages - Node.js, Python, Java, C# (.net core), Golang, C#/Powershell, Ruby, Custome Runtime API (example Rust)
- Easy monitoring through AWS CloudWatch
- Easy to get more resources per functions (Up to 3GB of RAM)
- Increasing the RAM will also improve CPU and network!
Example 1: Serverless Thumbnail creation
Example 2: Serverless CRON Job
AWS Batch
- Fully managed batch processing at any scale
- Efficiently run 100 thousands of computing batch jobs on AWS
- A batch job is a job with start and an end (opposed to continuous)
- batch will dynamically launch EC2 instances or spot instances
- AWS batch provisions the right amount of compute/memory
- You submit or schedule batch jobs and AWS Batch does the rest
- Batch jobs are defined as Docker images and run on ECS
- Helpful for cost optimizations and focusing less on infrastructure
Example - Image Processing
Lambda vs Batch
- Lambda has time limit, limited runtime, limited temporary disk space and its serverless
- Batch has no time limit, any runtime as log as its packaged as a Docker image. Rely on EBS/instance store for disk space. Batch is not serverless, but its managed service relies on EC2 instances
Lightsail
- Virtual servers, storage, DB and networking at one place
- Low and predictable pricing
- Simpler alternative to using EC2, RDS, ELB, EBS, Route53 etc
- Great for people with little cloud experience
- Can setup notifications and monitoring of your Lightsail resources
- Use cases:
— simple web application (has templates for LAMP, Nginx, MEAN, Node.js etc)
— Website (templates for Wordpress, Magento, Ples, Joomla)
— Dev/Test environment
- Has HA but no auto scaling, limited AWS integration