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.

Micro services may not be the best idea

290 views

Published on

It might be that micro-services are not the best idea for your project. In this presentation I explore the pains we had creating ContinuousPipe.io with a micro-services architecture.

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

Micro services may not be the best idea

  1. 1. SAMUEL ROZE MICRO-SERVICES
 (MAYBE NOT)
 A GREAT IDEA
  2. 2. 2 WHY THIS TALK?I SPENT A FEW YEARS BUILDING MICRO-SERVICES BASED APPLICATIONS Samuel Roze PHP Software Engineering background and consultancy. Worked with micro- services architectures and containers to help development teams' velocity. ContinuousPipe.io Continuous deployment pipeline for containerised applications. Kubernetes- powered PaaS. Increase your development team velocity and the collaboration between the technical and business project members.
  3. 3. 3 A GROWING ARCHITECTURENUMBER OF MICRO-SERVICES 0 3 6 9 12 2015 Aug Oct Dec Feb Apr June Aug Oct Dec Jan Mar May Jul
  4. 4. 3 A GROWING ARCHITECTURENUMBER OF MICRO-SERVICES 0 3 6 9 12 2015 Aug Oct Dec Feb Apr June Aug Oct Dec Jan Mar May Jul
  5. 5. 4 ARCHITECTURE OVERVIEWA LONG JOURNEY TO GET TO THESE SERVICES accountuser-interface river pipe k8s-watcher cluster-health-checker gcb-builder builder logstream kube-proxy kube-status dashboard
  6. 6. 4 ARCHITECTURE OVERVIEWA LONG JOURNEY TO GET TO THESE SERVICES accountuser-interface river pipe k8s-watcher cluster-health-checker gcb-builder builder logstream kube-proxy kube-status dashboard
  7. 7. 4 ARCHITECTURE OVERVIEWA LONG JOURNEY TO GET TO THESE SERVICES accountuser-interface river pipe k8s-watcher cluster-health-checker gcb-builder builder logstream kube-proxy kube-status dashboard
  8. 8. 4 accountuser-interface river pipe k8s-watcher cluster-health-checker gcb-builder builder logstream kube-proxy kube-status dashboard
  9. 9. 4 accountuser-interface river pipe k8s-watcher cluster-health-checker gcb-builder builder logstream kube-proxy kube-status dashboard github docker-hub bitbucket firebase ...
  10. 10. 4 accountuser-interface river pipe k8s-watcher cluster-health-checker gcb-builder builder logstream kube-proxy kube-status dashboard github docker-hub bitbucket firebase ...
  11. 11. 5 WHEN WE SAID "TOO MUCH"CHANGING THE BILLING MODEL accountriver
  12. 12. 5 WHEN WE SAID "TOO MUCH"CHANGING THE BILLING MODEL accountriver
  13. 13. 5 WHEN WE SAID "TOO MUCH"CHANGING THE BILLING MODEL accountriver How much is 
 used ?
  14. 14. 5 WHEN WE SAID "TOO MUCH"CHANGING THE BILLING MODEL
  15. 15. 6 CONSEQUENCESOF SUCH A COMPLEX INFRASTRUCTURE OPS COSTS had to manage multiples instances of databases, queues and cache
  16. 16. 6 CONSEQUENCESOF SUCH A COMPLEX INFRASTRUCTURE OPS COSTS ON-BOARDING SPEED had to manage multiples instances of databases, queues and cache "How can I run the platform on my laptop?"
  17. 17. 6 CONSEQUENCESOF SUCH A COMPLEX INFRASTRUCTURE OPS COSTS CHANGE
 COMPLEXITYON-BOARDING SPEED had to manage multiples instances of databases, queues and cache Changes across code repositories and different programming languages "How can I run the platform on my laptop?"
  18. 18. 6 CONSEQUENCESOF SUCH A COMPLEX INFRASTRUCTURE OPS COSTS CHANGE
 COMPLEXITYON-BOARDING SPEED FAULT TOLERANCE had to manage multiples instances of databases, queues and cache Changes across code repositories and different programming languages "How can I run the platform on my laptop?" Fault-tolerance is key, but now applies on much more dependencies
  19. 19. 6 CONSEQUENCESOF SUCH A COMPLEX INFRASTRUCTURE OPS COSTS CHANGE
 COMPLEXITY TESTS ON-BOARDING SPEED FAULT TOLERANCE had to manage multiples instances of databases, queues and cache Changes across code repositories and different programming languages Good note. No other choice than doing TDD ! "How can I run the platform on my laptop?" Fault-tolerance is key, but now applies on much more dependencies
  20. 20. 1 STEP Start with a monolith.
 Until you are really blocked. WHAT SHOULD WE DO?
  21. 21. 1 STEP 2 STEP Start with a monolith.
 Until you are really blocked. Use managed services, as much as possible. We replaced all the stateful services by managed alternatives in Google Cloud or compose. WHAT SHOULD WE DO?
  22. 22. 3 STEP 1 STEP 2 STEP Start with a monolith.
 Until you are really blocked. Use managed services, as much as possible. We replaced all the stateful services by managed alternatives in Google Cloud or compose. If you really require another technology, create another service. WHAT SHOULD WE DO?
  23. 23. 3 STEP 4 STEP 1 STEP 2 STEP Start with a monolith.
 Until you are really blocked. Use managed services, as much as possible. We replaced all the stateful services by managed alternatives in Google Cloud or compose. If you really require another technology, create another service. Split applications when you are already doing hundreds of deployments a day, and can't deal with more developers WHAT SHOULD WE DO?
  24. 24. 8 • Tolerance
 PHP fault-tolerance library, including tracing
 https://tolerance.io
 • gRPC
 Remote procedure call framework, for multiple languages.
 https://grpc.io 
 • Istio
 Open platform to connect, manage, and secure microservices.
 https://istio.io
 • Kubernetes Service Catalog
 Provision, bind and use services, regardless of their location on the cluster(s).
 https://github.com/kubernetes-incubator/service-catalog
  25. 25. 9

×