Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Oleksandr Nahirniak "Microservices delivery pipeline with .NET Core, Docker and AWS"

134 views

Published on

In the process of deploying .NET Core application there may be a bunch of problems that need to be solved very quickly, although, of course, it's better not to allow them at all. Such problems can be: different configuration of applications in different environments, different versions of infrastructure services, the need to rollback to earlier versions of the application, disabling the application in the deployment process.

My presentation focuses on the demonstration of modern and effective solutions for the aforementioned issues of deploying .NET Core application based on Amazon Web Services and Docker. The presentation is purely practical and based on the real experience with .NET Core, AWS and Docker.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Oleksandr Nahirniak "Microservices delivery pipeline with .NET Core, Docker and AWS"

  1. 1. Microservices delivery pipeline with .NET Core, Docker and AWS Oleksandr Nahirniak EPAM Systems
  2. 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
  3. 3. INTRO
  4. 4. Who we are? • What are merge and acquisition? • How did it work earlier? • What do we solve? • Startup for the customer? 4
  5. 5. What do we use? - Timmy, where are my containers?! - What’s up guys? - Keep calm, Johnny, here they are. -UPDATE_IN_PROGRESS
  6. 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
  7. 7. DELIVERY EVOLUTION
  8. 8. Old way of delivery 8
  9. 9. Old way of delivery 9
  10. 10. Old way of delivery 10
  11. 11. Old way of delivery 11
  12. 12. Old way of delivery 12
  13. 13. Old way of delivery 13 -HEY! I NEED ONE MORE ENV!
  14. 14. Old way of delivery 14 -HEY! I NEED ONE MORE ENV!
  15. 15. New way of delivery image IMAGE STORAGE
  16. 16. New way of delivery image IMAGE STORAGE
  17. 17. New way of delivery 17 image
  18. 18. New way of delivery 18 image container container container …
  19. 19. New way of delivery 19 image container container container … -HEY! I NEED ONE MORE ENV!
  20. 20. New way of delivery 20 UATprod - NO PROBLEM!
  21. 21. OUR DELIVERY WAY
  22. 22. Delivery strategies & concepts • What are artifacts? • Service deployment • Infrastructure deployment • Service interaction • Summary • F*ckups
  23. 23. What are artifacts?
  24. 24. SERVICE DEPLOYMENT
  25. 25. Delivery strategy dev staging (code)git push prodUAT - development
  26. 26. Delivery strategy dev staging (code)git push UAT prod - development - release
  27. 27. Delivery strategy dev staging UAT prod (code)git push - development - release
  28. 28. Delivery strategy dev staging UAT prod (code)git push - development - release
  29. 29. HOTFIXES
  30. 30. Hotfix strategy dev staging UAT prod - development - release (code)git push
  31. 31. Hotfix strategy dev staging UAT prod - development - release (code)git push
  32. 32. Hotfix strategy dev staging UAT prod - development - release (code)git push - hotfix
  33. 33. Hotfix strategy dev staging UAT prod - development - release (code)git push - hotfix
  34. 34. Hotfix strategy dev staging UAT prod - development - release (code)git push - hotfix
  35. 35. ZERO-DOWNTIME DEPLOYMENT
  36. 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. 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. 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. 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
  40. 40. INFRASTRUCTURE DEPLOYMENT
  41. 41. Problem statement dev staging UAT prod
  42. 42. Problem statement dev staging UAT prod
  43. 43. Problem statement dev staging UAT prod V2 V2V2
  44. 44. Problem statement dev staging UAT prod V3 V3V2 V2
  45. 45. Problem statement dev staging UAT prod V4 V3V2 V2
  46. 46. Infrastructure as a code dev/staging/UAT/prod
  47. 47. Infrastructure as a code
  48. 48. Infrastructure as a code
  49. 49. Infrastructure as a code CONFIDENTIAL | © 2019 EPAM Systems, Inc.
  50. 50. SERVICE INTERACTION
  51. 51. Service interaction Users Documents GET
  52. 52. Service interaction Documents Client
  53. 53. Service interaction Users Documents Notifications Client Client Client
  54. 54. Service interaction Users Documents Notifications WebBFF MobileBFF Internet GET POST MESSAGE MESSAGEGET
  55. 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. 56. F*ckups 56 • Classical pitfall with removing database column • Return infrastructure to the 3 months earlier state • Shutting down of whole ECS cluster
  57. 57. THE END

×