micrsoservices unleashed with containers and ecs
TRANSCRIPT
Microservices UnleashedwithContainersandECSYaniv Donenfeld,SolutionsArchitect
Agenda
• Evolution of computing
• What is Amazon EC2 Container Service?
• Overcoming micro-services challenges
Scaling Applications
Order UI User UI Shipping UI
Order Service
User Service
Shipping Service
Data Access
Order UI User UI Shipping UI
Order Service
User Service
Shipping Service
Order UI User UI UI
Order Service Service Shipping
Service
Order UIOrder UI
User UI UIShipping UI
Order ServiceOrder
ServiceService
ServiceService
ServiceUser
Service
Shipping Service
What are Containers?
What are Containers?
container
What is Docker?
Docker container
• Declarative modeling
• Packaging
What is Docker?
• Portable
• Flexible
• Fast
• Efficient
Containers are Natural for Microservices
• Simple to model
• Any app, any language
• Image is the version
• Test & deploy same artifact
• Stateless servers decrease change risk
Server
Guest OS
Bins/Libs Bins/Libs
App2App1
Managing One Host is Straightforward
Managing a Fleet is Hard
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
AZ 1 AZ 2
AZ 3
What is Amazon ECS?
Amazon EC2 Container Service (Amazon ECS) is a highly scalable, high performance container management service.
You can use Amazon ECS to schedule the placement of containers across your cluster.
You can also integrate your own scheduler or third-party scheduler to meet business or application specific requirements.
Docker
Task
Container Instance
Amazon ECS
Container
ECS Agent
ELB
Internet
ELB
User / Scheduler
API
Cluster Management Engine
Task Container
Docker
Task
Container Instance
Container
ECS Agent
Task Container
Docker
Task
Container Instance
Container
ECS Agent
Task Container
AZ 1 AZ 2
Key/Value Store
Agent Communication Service
Docker
Task
Container Instance
Amazon ECS
Container
ECS Agent
ELB
Internet
ELB
User / Scheduler
API
Cluster Management Engine
Task Container
Docker
Task
Container Instance
Container
ECS Agent
Task Container
Docker
Task
Container Instance
Container
ECS Agent
Task Container
AZ 1 AZ 2
Key/Value Store
Agent Communication Service
What are Microservices Challenges?
• Resource and state management
• Monitoring
• Deployment
• Service discovery
• 36,000,000 users
• 35 container instances running 450 containers
• 400,000 new users a day during BTS
What are Microservices Challenges?
• Resource and state management
• Monitoring
• Deployment
• Service discovery
Monitoring with Amazon CloudWatch
Metric data sent to CloudWatch in 1-minute periods and recorded for a period of two weeksAvailable metrics: CPUReservation, MemoryReservation, CPUUtilization, MemoryUtilizationAvailable dimensions: ClusterName, ServiceName
Monitoring with Amazon CloudWatch
Monitoring with Amazon CloudWatch
Use the CloudWatch monitoring scripts to monitor additional metrics: e.g., disk space
# Edit crontab
> crontab -e
# Add command to report disk space utilization to CloudWatch every five minutes
*/5 * * * * <path_to>/mon-put-instance-data.pl --disk-space-util --disk-space-used --disk-space-avail --disk-path=/ --from-cron
Monitoring Amazon ECS with Datadog
What are Microservices Challenges?
• Resource and state management
• Monitoring
• Deployment
• Service discovery
Scheduling Containers on ECS
Batch Jobs
ECS Task schedulerRun tasks once
Batch jobsRunTask (auto-placed)
StartTask (placed)
Long-Running Apps
ECS Service schedulerHealth managementScale-up and scale-downAZ awareGrouped Containers
Long-running app: Deploy using the least space
minimumHealthyPercent = 50%, maximumPercent = 100%
Long-running App: Deploy quickly without reducing service capacity
minimumHealthyPercent = 100%, maximumPercent = 200%
Scheduling Containers: Long-running App
Blue-Green Deployments
• Define two ECS services• Each service is associated w/ ELB• Both ELBs in Route 53 record set
with weighted routing policy, 100% Primary, 0% Secondary
• Deploy to Blue or Green service and switch weights
TaskTask
Route 53 record set
with weighted routing policy
0%100%
Demo
Demo
TaskTask
Demo
TaskTask
Demo
TaskTask
Demo
TaskTask
Demo
TaskTask
Task
What are Microservices Challenges?
• Resource and state management
• Monitoring
• Deployment
• Service discovery
Service Discovery with ECS Services & Route 53
• Wrapp delivers personal offers and rewards based on where you shop, dine and the brands
you follow.
• Infrastructure:
• 13 ECS Clusters
• 50+ Instances
• 90+ Services
• Technology Stack:
• Operating System – Ubunu
• Consul, Registrator, AWS(EC2, ECS, Lambda), Docker, HAProxy
• Languages - Go, Python, Java
Wrapp: Service Discovery with ELB, Consul and HAProxy
api
8080
Consulserver-b
Consul server-a
Consulserver-c
users
8082
auth
8081
users
8082
Registrator Registrator Registrator
ConsulAgentConsulAgentConsulAgent
Key/value store
Servicecatalog
10.0.0.1 10.0.0.2 10.0.0.3
HAConsulCluster
Service Discovery @ Wrapp
Service Discovery with Weaveworks
• DNS interface for cross-host container communication
• Gossip protocol to share grouped updates
• Overlay network between hosts