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

The Dark Side Of Microservices

The Dark Side Of Microservices

The term "microservices" has been around for a while now. We've seen a lot of information on why you should adopt this type of architecture, but no one tells you why you shouldn't. This talk won't do that either, but we'll go over some of the issues and traps that microservices bring with it.

We'll look at what kind of tools you need to get a system like this up and running. What kind of decisions do you have to take to roll out a system like this?

How do you communicate between services? REST or RPC? XML or JSON? What framework do we use? micro or go-kit? Where do we store our metrics? How do we create new services? How do we develop these newly created services and communicate with existing services?

These are all decisions a team can get hung up on and spend a lot of time on. This talk aims to help in the decision making and give some insights in our decisions.

Besides the tools and decisions, we'll also look at the extra complexity this system brings with it. How do you debug multiple services? How do you keep track of all these services?

Resources:

- What is `Site Reliability Engineering`?: https://landing.google.com/sre/interview/ben-treynor.html
- Uber Engineering: https://eng.uber.com/
- Netflix Techblog: http://techblog.netflix.com/
- Google Dapper: http://research.google.com/pubs/pub36356.html
- Scaling with AWS Lambda: https://jelmersnoeck.com/2016/08/10/lambda.html
- Experiment: https://github.com/jelmersnoeck/experiment

Jelmer Snoeck

August 19, 2016
Tweet

More Decks by Jelmer Snoeck

Other Decks in Programming

Transcript

  1. the dark side of
    microservices
    @jelmersnoeck - Lost My Name

    View full-size slide

  2. let's talk
    microservices
    @jelmersnoeck - Lost My Name

    View full-size slide

  3. whoami
    @jelmersnoeck - Lost My Name

    View full-size slide

  4. @jelmersnoeck
    @jelmersnoeck - Lost My Name

    View full-size slide

  5. whois lostmy.name
    @jelmersnoeck - Lost My Name

    View full-size slide

  6. @jelmersnoeck - Lost My Name

    View full-size slide

  7. @jelmersnoeck - Lost My Name

    View full-size slide

  8. @jelmersnoeck - Lost My Name

    View full-size slide

  9. @jelmersnoeck - Lost My Name

    View full-size slide

  10. Issues
    @jelmersnoeck - Lost My Name

    View full-size slide

  11. Confusion
    @jelmersnoeck - Lost My Name

    View full-size slide

  12. No preview
    @jelmersnoeck - Lost My Name

    View full-size slide

  13. @jelmersnoeck - Lost My Name

    View full-size slide

  14. @jelmersnoeck - Lost My Name

    View full-size slide

  15. Platform
    @jelmersnoeck - Lost My Name

    View full-size slide

  16. Being a seasonal company
    @jelmersnoeck - Lost My Name

    View full-size slide

  17. Goals
    @jelmersnoeck - Lost My Name

    View full-size slide

  18. Goals
    • Preview
    • Print
    • Reliable
    • Reusable
    • Language agnostic
    • Extendable
    @jelmersnoeck - Lost My Name

    View full-size slide

  19. Preview
    @jelmersnoeck - Lost My Name

    View full-size slide

  20. Print
    @jelmersnoeck - Lost My Name

    View full-size slide

  21. Reliable
    @jelmersnoeck - Lost My Name

    View full-size slide

  22. Reliable
    @jelmersnoeck - Lost My Name

    View full-size slide

  23. Language Agnostic
    @jelmersnoeck - Lost My Name

    View full-size slide

  24. Reusable
    @jelmersnoeck - Lost My Name

    View full-size slide

  25. Microservices
    @jelmersnoeck - Lost My Name

    View full-size slide

  26. Microservices2
    • Fault tolerant
    • Easy development
    • Language agnostic
    • Scaling
    2 simplified summary
    @jelmersnoeck - Lost My Name

    View full-size slide

  27. @jelmersnoeck - Lost My Name

    View full-size slide

  28. … or not?
    @jelmersnoeck - Lost My Name

    View full-size slide

  29. Framework
    @jelmersnoeck - Lost My Name

    View full-size slide

  30. What to use?
    • REST vs RPC
    • HTTP vs Message Bus
    • JSON vs Protobuf
    • Containers vs VMs
    • …
    @jelmersnoeck - Lost My Name

    View full-size slide

  31. Toolkit
    • gRPC
    • go-kit
    • go-micro
    • gizmo
    • …
    • our own?
    @jelmersnoeck - Lost My Name

    View full-size slide

  32. go-micro
    @jelmersnoeck - Lost My Name

    View full-size slide

  33. golumn 3
    • configuration
    • bootstrap
    • extra functionality
    3 Like Twitter's Finagle or Netflix's Karyon, makes services "reusable"
    @jelmersnoeck - Lost My Name

    View full-size slide

  34. Language agnostic
    @jelmersnoeck - Lost My Name

    View full-size slide

  35. @jelmersnoeck - Lost My Name

    View full-size slide

  36. golumn x N
    @jelmersnoeck - Lost My Name

    View full-size slide

  37. @jelmersnoeck - Lost My Name

    View full-size slide

  38. @jelmersnoeck - Lost My Name

    View full-size slide

  39. Service discovery
    @jelmersnoeck - Lost My Name

    View full-size slide

  40. Service discovery
    • etcd
    • consul
    • zookeeper
    • linkerd.io
    • …
    @jelmersnoeck - Lost My Name

    View full-size slide

  41. Consul
    @jelmersnoeck - Lost My Name

    View full-size slide

  42. @jelmersnoeck - Lost My Name

    View full-size slide

  43. Containers
    @jelmersnoeck - Lost My Name

    View full-size slide

  44. nope.
    @jelmersnoeck - Lost My Name

    View full-size slide

  45. Orchestration
    @jelmersnoeck - Lost My Name

    View full-size slide

  46. @jelmersnoeck - Lost My Name

    View full-size slide

  47. @jelmersnoeck - Lost My Name

    View full-size slide

  48. Now what?
    @jelmersnoeck - Lost My Name

    View full-size slide

  49. @jelmersnoeck - Lost My Name

    View full-size slide

  50. @jelmersnoeck - Lost My Name

    View full-size slide

  51. @jelmersnoeck - Lost My Name

    View full-size slide

  52. Tooling
    @jelmersnoeck - Lost My Name

    View full-size slide

  53. Tooling
    • Metrics
    • Distributed Tracing4
    • Logs
    4 Google Dapper
    @jelmersnoeck - Lost My Name

    View full-size slide

  54. Metrics
    @jelmersnoeck - Lost My Name

    View full-size slide

  55. @jelmersnoeck - Lost My Name

    View full-size slide

  56. Distributed Tracing4
    4 Google Dapper
    @jelmersnoeck - Lost My Name

    View full-size slide

  57. @jelmersnoeck - Lost My Name

    View full-size slide

  58. Logs
    @jelmersnoeck - Lost My Name

    View full-size slide

  59. @jelmersnoeck - Lost My Name

    View full-size slide

  60. Think about your business
    • Containers
    • Orchestration
    • Tooling
    @jelmersnoeck - Lost My Name

    View full-size slide

  61. set your own priorities
    @jelmersnoeck - Lost My Name

    View full-size slide

  62. Thanks
    @jelmersnoeck - Lost My Name

    View full-size slide

  63. Reading list
    What is Site Reliability Engineering?
    Uber Engineering
    Netflix Techblog
    Google Dapper
    Scaling with AWS Lambda
    Experiment
    @jelmersnoeck - Lost My Name

    View full-size slide