Other Compute Services Flashcards
Docker, ECS, Fargate, ECR, Batch, Lightsail
1
Q
Docker
A
- Docker is a software development platform to deploy apps
- Apps are packaged in containers that can be run on any OS
- Apps run the same, regardless of where they’re run
Any machine
No compatibility issues
Predictable behavior
Less work
Easier to maintain and deploy
Works with any language, any OS, any technology - Scale containers up and down very quickly (seconds)
-
Docker images are stored in Docker Repositories
Public: Docker Hub https://hub.docker.com/
Private: Amazon ECR (Elastic Container Registry)
2
Q
ECS (Elastic Container Service)
A
- ECS = Elastic Container Service
- Launch Docker containers on AWS
- You must provision & maintain the infrastructure (the EC2 instances)
- AWS takes care of starting / stopping containers
- Has integrations with the Application Load Balancer
3
Q
Fargate
A
- Launch Docker containers on AWS
- You do not provision the infrastructure (no EC2 instances to manage) – simpler!
- Serverless offering
- AWS just runs containers for you based on the CPU / RAM you need
4
Q
ECR (Elastic Container Registry)
A
- Private Docker Registry on AWS
- This is where you store your Docker images so they can be run by ECS or Fargate
5
Q
Lambda
A
- Virtual functions – no servers to manage!
- Limited by time - short executions
- Run on-demand
- Scaling is automated!
- Easy Pricing: Pay per request and compute time (calls and duration)
- Invocation time: up to 15 minutes
- Integrated with the whole AWS suite of services
- Event-Driven: functions get invoked by AWS when needed
- Integrated with many programming languages
- Easy monitoring through AWS CloudWatch
- Easy to get more resources per functions (up to 10GB of RAM!)
- Increasing RAM will also improve CPU and network!
- Lambda Container Image
The container image must implement the Lambda Runtime API
ECS / Fargate is preferred for running arbitrary Docker images
Lambda Billing:
* By the time run x by the RAM provisioned
* By the number of invocations
Use cases:
* Create Thumbnails for images uploaded onto S3
* Run a Serverless cron job
6
Q
AWS Batch
A
- Fully managed batch processing at any scale
- Efficiently run 100,000s of computing batch jobs on AWS
- A “batch” job is a job with a 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 the infrastructure
7
Q
Batch vs Lambda
A
* Lambda:
* Time limit
* Limited runtimes
* Limited temporary disk space
* Serverless
* Batch:
* No time limit
* Any runtime as long as it’s packaged as a Docker image
* Rely on EBS / instance store for disk space
* Relies on EC2 (can be managed by AWS)
8
Q
Amazon API Gateway
A
- Example: building a serverless API
- Fully managed service for developers to easily create, publish, maintain, monitor, and secure APIs
- Serverless and scalable
- Supports RESTful APIs and WebSocket APIs
- Support for security, user authentication, API throttling, API keys, monitoring…
- API Gateway: expose Lambda functions as HTTP API
9
Q
Amazon Lightsail
A
- Virtual servers, storage, databases, and networking
- Low & predictable pricing
- Simpler alternative to using EC2, RDS, ELB, EBS, Route 53…
- Great for people with little cloud experience!
- Can setup notifications and monitoring of your Lightsail resources
- Use cases:
Simple web applications (has templates for LAMP, Nginx, MEAN, Node.js…)
Websites (templates for WordPress, Magento, Plesk, Joomla)
Dev / Test environment - Has high availability but no auto-scaling, limited AWS integrations