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, deploy and scale them seamlessly on a cluster with Amazon ECS.
3. Order UI User UI
Shipping
UI
Order
Service
User
Service
Shipping
Service
Data
Access
4.
5. Order UI User UI
Shipping
UI
Order
Service
User
Service
Shipping
Service
6. Order UI User UI UI
Order
Service
Service
Shipping
Service
Order UI
Order UI
User UI UIShipping
UI
Order
ServiceOrder
Service
Service
Service
Service
Service
User
Service
Shipping
Service
7.
8. Containers: A natural fit for microservices
Simple to model; any app, in any language
Portable, Fast, Efficient
Built in versioning
Test & deploy same artifact
Stateless servers decrease change risk
FROM java:7
COPY . /usr/src/app
WORKDIR /usr/src/app
RUN javac Main.java
EXPOSE 80
CMD [ “java”, “Main” ]
10. 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
11. 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.
Amazon ECS will maintain the state of your cluster,
ensuring availability of your containers and tasks .
12. Container Management at Any Scale
Nothing to run
Manages resources & availability
Control and monitoring
Scale
13. Nothing to run…
https://convox.com
An open source PaaS built on Amazon ECS.
Build, deploy, and manage
applications with ease.
Stop worrying about servers
and focus on your code.
CONVOX
h t t p s : / / c o n v o x . c o m
19. Who are Skyscanner?
• 40m app downloads
• 50m Unique monthly visitors
• Rapidly growing B2B relationships
• 800 staff, with 50 nationalities
• 10 offices around the globe
• Regard ourselves as a Tech company, rather than a Travel company
• 50% of our staff are engineers
20. We aim to be the most trusted
and most usedonline travel
brandin theworld
21. A (brief) evolution of computing @ Skyscanner
5000+ Production VM’s
2000+ Development
VM’s
22. A (brief) evolution of computing @ Skyscanner - Part Deux
18 Months
~1500 EC2 instances
Critical Production workloads
9 Months
Aggressive containerization
using Docker + ECS
Honorable Mention: Lambda
23. Why do we need containerization?
Rapid growth is one of the nicer problems to have
24. Why do we need to evolve?
Growth necessitates change
25. “Ch-ch-ch-ch-chaaaaaanges”
Organizational change
• Adopted a squads/tribes model
• Localized ownership of services
• “You build it, you run it”
• Remove bottlenecks to delivery
• Delegation of previously
centralized capabilities
Architectural change
• Adopt Cloud
• Monolithic code releases are
too slow
• Loosely coupled
microservices
• Data driven experiments
• Automate all the things
26. Enabling change in a non-scary way…
Developer Enablement Tribe
• AWS Architectural guidance
• Set and enforce best practices
• Provide internal training
• Create reusable code snippets
• Build automation and deployment tooling
• Provide template microservices containers
• Maintain shared platforms and tooling
• Handle shared VPC’s, Direct connects, DNS,
SSL.
• Co-ordinate cost management activities
• Perform vulnerability auditing and testing
• Run demo’s and showcases
• “Eat the dogfood”
• Etc….
WS
27. MBA Conan! What is best in life?
“To accelerate your product
delivery --
Satisfy your users needs
faster and better,
and hear the lamentation of
your competitors!“
28. Accelerating product delivery
3 Years ago? à
Today? à
How?
• Containerized Microservices
• In-house automation tooling
• AWS API driven infrastructure
6 to 8 weeks
6 to 8 minutes
29. More pipeline problems than Mario
Hands up if you’re a developer!
Does your development/deployment pipeline look a bit like this?
30. Why Microservices?
Old school release pipeline
Development à Integration à Test à Pre-prod
à Production
New release pipeline
Development à Live!
31. Automation tooling - Slingshot
Gitlab
Build
Packa
ge
Continuous
Integration
Continuous
Deployment
SWF
“From source to service in zero clicks…”
Your
Service
ECS
API
Lambda
Publis
h
Route 53
ELB
32. Please remember to rate this
session under My Agenda on
awssummit.london
@paulmaddox @w0nderd0g