Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Managing Microservices at Scale

Managing Microservices at Scale

Presented at MERGE 2016

Microservices allow for extensible app architecture and a vendor-agnostic, scalable infrastructure. While microservices simplify app deployments, they come at a price: because they’re so fragmented, it is more difficult to track and manage all the independent, yet interconnected components of an app. All this information (requirements, code, test cases and results, build artifacts, and deployment blueprints) needs to live somewhere and most importantly be versioned. Using a real example and a live demonstration of Perforce Helix, Docker and Selenium, get best practices and tips for enabling a robust, scalable and extensible pipeline to support today’s modern app delivery.

Ab74508166c61d551a7a27360caabc28?s=128

Avantika (Avan) Mathur

April 25, 2016
Tweet

More Decks by Avantika (Avan) Mathur

Other Decks in Technology

Transcript

  1. Managing Microservices at Scale Avan Mathur Global Technical Account Manager

    - Electric Cloud
  2. 2 Introductions Avan Mathur @avantika_ec Global Technical Account Manager at

    Electric Cloud I work with large enterprises to design and implement their DevOps automation and application release pipelines at scale.
  3. 3 Electric Cloud: Powering Continuous Delivery ElectricFlow Deploy Pipeline &

    Release Management ElectricAccelerator Build & Test Acceleration DevOps Automation Platform Build DELIVERY Plugs right in to your existing tools CONTINUOUS Build Test DEV OPS
  4. Intro Docker

  5. 5 Containers vs. VMs

  6. 6 Enter Docker  https://docker.io/  Open Source  Used

    to wrap LXC, now has its own container implementation  Really, really fast. Start measuring in milliseconds
  7. 7 Why are people excited about containers?  Builds can

    be done inside the container, gives file system isolation and reproducibility.  Development/Production Parity. The container is the deployable artifact.  Container start up times measured in milliseconds
  8. Microservices

  9. 9 What are Microservices?  A pattern for building distributed

    systems: • A suite of services, each running in its own process, each exposing an API • Independently developed • Independently deployable • Each service is focused on doing one thing well “Gather together those things that change for the same reason, and separate those things that change for different reasons.” – Robert Martin
  10. 10 What’s good/bad about monolithic apps?  Can be easier

    to test  Can be easier to develop  Can’t deploy anything until you deploy everything  Harder to learn and understand the code  Easier to produce spaghetti code  Hard to adopt new technologies  You have to scale everything to scale anything
  11. 11 What’s cool about Microservices?  Loose coupling, so each

    service can: • choose the tooling that’s appropriate for the problem it solves • can be scaled as appropriate, independent of other services • can have its own lifecycle independent of other services  Makes it easier to adopt new technologies  Smaller more autonomous teams are more productive
  12. 12 Am I ready for Microservices?  If you’re just

    starting out, stay monolithic until you understand the problem better  You need to be good at infrastructure provisioning  You need to be good at rapid application deployment  You need to be good at monitoring http://martinfowler.com/bliki/MicroservicePrerequisites.html
  13. Pipelines

  14. 14 Designing your pipeline  Independent CI and Deployment pipelines

    per service  “Automate all things” • plug in all of your toolchain to orchestrate the entire pipeline  Tools/environment agnostic to support each team’s workflow and tool chain  Test automation and service virtualization
  15. 15 Designing your Pipeline  Record the log of each

    artifact as it makes its way through the pipeline  Use parameters and modeling of the pipeline components for reusability  Bake compliance into the pipeline by binding certain security checks and acceptance tests  Allow for both automatic and manual approval gates
  16. 16 Pipeline view and Monitoring  Consistent monitoring across all

    services  Provide a real-time view of all pipeline statuses  Plug pipeline automation into monitoring so alerts can trigger automatic processes
  17. What I’m about to show you

  18. 18 Microservices Images from https://www.nginx.com/blog/introduction-to- microservices

  19. 19 All of the above

  20. 20 All of the above

  21. 21 Containers Images from http://slides.com/kennycoleman/introdocker

  22. 22 Weather Dashboard  12 weather widgets  Initially show

    as a Monolith  CD pipelines for each microservice
  23. 23 Pipeline

  24. A few words before I demo

  25. 25 Everything can be done via the Community Edition http://electric-cloud.com/downloads/electricflow/communityedition

  26. 26 But this is not a product pitch

  27. Demo!

  28. Wrap up

  29. 29 Thoughts • So much more to explore! So much

    glossed over. • Separate hosts and environments per microservice • Tools and practices for monitoring • Zero downtime, Rolling deploys and Roll back.
  30. @avantika_ec amathur@electric-cloud.com