This document outlines a microservices delivery pipeline from development to production using .NET Core, Docker, and AWS. It describes deploying microservices through continuous integration and delivery pipelines. Key aspects include using Docker containers and container orchestration with ECS for zero-downtime deployments. Infrastructure is provisioned and managed as code using tools like CloudFormation. The pipeline supports hotfixes and rolling back changes when issues arise.
2. Goals of presentation
• Show delivery pipeline of microservices from developer machine to
production
• Demonstrate efficient way to deploy your infrastructure around the services
• Show techniques that we use for successfully deployment our microservices
2
4. Who we are?
• What are merge and acquisition?
• How did it work earlier?
• What do we solve?
• Startup for the customer?
4
5. What do we use?
- Timmy, where are
my containers?!
- What’s up guys?
- Keep calm, Johnny,
here they are.
-UPDATE_IN_PROGRESS
6. How big we are?
• We have 4 environments
• 46 microservices per environment
• 107 running instances
• 16 databases in one RDS cluster
• 20+ GB logs per month
• 30+ message queues
• 14 lambda functions
36. Zero-downtime deployment
• Start with blue service composed of a task
definition and ALB
• Create new task definition based on new version
of Docker image
• Create green service with new task definition
and map to existing ALB
• Scale up green service by incrementing number
of tasks
• Decommission blue service by setting task count
to 0
D E P L O Y M E N T P R O C E S S :
36
container
container
container
Load balancer
ECS Cluster
37. Zero-downtime deployment
• Start with blue service composed of a task
definition and ALB
• Create new task definition based on new version
of Docker image
• Create green service with new task definition
and map to existing ALB
• Scale up green service by incrementing number
of tasks
• Decommission blue service by setting task count
to 0
D E P L O Y M E N T P R O C E S S :
37
container
container
container
container
Load balancer
ECS Cluster
38. Zero-downtime deployment
• Start with blue service composed of a task
definition and ALB
• Create new task definition based on new version
of Docker image
• Create green service with new task definition
and map to existing ALB
• Scale up green service by incrementing number
of tasks
• Decommission blue service by setting task count
to 0
D E P L O Y M E N T P R O C E S S :
38
container
container
container
container
container
container
Load balancer
ECS Cluster
39. Zero-downtime deployment
• Start with blue service composed of a task
definition and ALB
• Create new task definition based on new version
of Docker image
• Create green service with new task definition
and map to existing ALB
• Scale up green service by incrementing number
of tasks
• Decommission blue service by setting task
count to 0
D E P L O Y M E N T P R O C E S S :
39
container
container
container
container
container
container
stopped
stopped
stopped
Load balancer
ECS Cluster
55. Summary
55
• Don’t afraid to use .NET Core with Linux
• Unify your artifacts and minimize their count
• Use tools for provisioning and configuration management yours
apps(carefully)
56. F*ckups
56
• Classical pitfall with removing database column
• Return infrastructure to the 3 months earlier state
• Shutting down of whole ECS cluster