"In recent years, Docker containers have become a key component of modern application design. Increasingly, developers are breaking their applications apart into smaller components and distributing them across a pool of compute resources. Using Docker on your local development machine is simple, but running Docker applications at scale in production can be difficult.
In this session, we will discuss the difficulties of running Docker in production and how Amazon EC2 Container Service (ECS) can be used to reduce the operational burdens. We will give an overview of the core architectural principles underlying Amazon ECS, and we will walk through a number of patterns used by our customers to run their microservices platforms, to run batch jobs, and for deployments and continuous integration. We will also demonstrate how to define multi-container applications with Docker Compose and deploy and scale them seamlessly on a cluster with Amazon ECS."
6. Services evolve to microservices
Monolithic application
Order UI User UI Shipping UI
Order
service
User
service
Shipping
service
Data
access
Host 1
Service A
Service B
Host 2
Service B
Service D
Host 3
Service A
Service C
Host 4
Service B
Service C
7. Containers are natural for microservices
Simple to model
Any app, any language
Image is the version
Test and deploy same artifact
Stateless servers decrease change risk
10. Scheduling a cluster 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
29. Designed for use with other AWS services
Elastic Load Balancing
Amazon Elastic Block Store
Amazon Virtual Private Cloud
Amazon CloudWatch
AWS Identity and Access Management
AWS CloudTrail
39. Create service
Load balance traffic across containers
Automatically recover unhealthy containers
Discover services
Elastic Load Balancing
Shared data volume
Containers
Shared data volume
Containers
Shared data volume
Containers
40. Scale service
Scale up
Scale down
Elastic Load Balancing
Shared data volume
Containers
Shared data volume
Containers
Shared data volume
Containers
Shared data volume
Containers
41. Update service
Deploy new version
Drain connections
Shared data volume
Containers
Shared data volume
Containers
Shared data volume
Containers
new new new
Elastic Load Balancing
Shared data volume
Containers
Shared data volume
Containers
Shared data volume
Containers
old old old
42. Update service (cont.)
Deploy new version
Drain connections
Shared data volume
Containers
Shared data volume
Containers
Shared data volume
Containers
new new new
Elastic Load Balancing
Shared data volume
Containers
Shared data volume
Containers
Shared data volume
Containers
old old old
43. Update service (cont.)
Deploy new version
Drain connections
Elastic Load Balancing
Shared data volume
Containers
Shared data volume
Containers
Shared data volume
Containers
new new new