deliver docker containers continuously on aws
TRANSCRIPT
ECS Cluster: Deployment OptionsAWS Console AWS CLI ECS CLI CloudFormation
Easy to start Yes No Yes No
Automation No Yes Yes Yes
Configuration as Code No No No Yes
Auto Scaling Yes Yes No Yes
Service description
● Loadbalancing● AutoScaling● Deployment
configuration
Task definition
● Task Role● Volumes● Network Mode
Container definition
● Image● Port mapping● Volume mapping● Network options● Docker options
ECS Service: Deployment OptionsECS CLI CloudFormation
Easy to start Yes No
Automation Yes Yes
Configuration as Code Partially Yes
Auto Scaling No Yes
Load Balancer No Yes
Classic Load Balancer (ELB)
● Layer 4
● Static Port Mapping
Your ChoiceApplication Load Balancer (ALB)
● Layer 7
● Supports path-based routing
● Custom health checks
● WebSockets and Http/2 support
● Dynamic Port Mapping
Application Load Balancer (ALB)
Source: https://aws.amazon.com/blogs/compute/microservice-delivery-with-amazon-ecs-and-application-load-balancers/
ECS Cluster
● Use EC2 AutoScaling Group
● CloudWatch Metrics per Cluster:
○ CpuUtiliziation
○ MemoryUtilization
○ CPUReservation
○ MemoryReservation
AutoScalingECS Service
● New Application AutoScaling
● CloudWatch Metrics per Service
○ CPU Utilization
○ Memory Utilization
● Needs IAM Role
IAM Security Roles
ecsAutoScalingRole
ecsInstanceRole
ecsServiceRole
ecsTaskRole
● Read CloudWatch Metrics● Modify App AutoScaling
● ECR: Get Images● ECS: De/Register
Container Instances
● De/Register Instances with Load Balancer
● Everything your task needs to do
Your choiceElastic File System (EFS)
● Shared access across instances
● Limited to Region
● Scales automatically
Elastic Block Storage (EBS)
● Volume per Container Instance
● Limited to Availability Zone
● No automatic scaling
● Additional tooling needed
https://autoscout24.github.io/hiring
Philipp Garbe
http://garbe.io
@pgarbe
https://github.com/pgarbe