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

3f4444967dfc7a5a2a71d24175d94c3c?s=128

Jelmer Snoeck

August 19, 2016
Tweet

Transcript

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

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

  3. whoami @jelmersnoeck - Lost My Name

  4. @jelmersnoeck @jelmersnoeck - Lost My Name

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

  6. @jelmersnoeck - Lost My Name

  7. @jelmersnoeck - Lost My Name

  8. @jelmersnoeck - Lost My Name

  9. @jelmersnoeck - Lost My Name

  10. Issues @jelmersnoeck - Lost My Name

  11. Confusion @jelmersnoeck - Lost My Name

  12. No preview @jelmersnoeck - Lost My Name

  13. @jelmersnoeck - Lost My Name

  14. @jelmersnoeck - Lost My Name

  15. Platform @jelmersnoeck - Lost My Name

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

  17. Goals @jelmersnoeck - Lost My Name

  18. Goals • Preview • Print • Reliable • Reusable •

    Language agnostic • Extendable @jelmersnoeck - Lost My Name
  19. Preview @jelmersnoeck - Lost My Name

  20. Print @jelmersnoeck - Lost My Name

  21. Reliable @jelmersnoeck - Lost My Name

  22. Reliable @jelmersnoeck - Lost My Name

  23. Language Agnostic @jelmersnoeck - Lost My Name

  24. Reusable @jelmersnoeck - Lost My Name

  25. Microservices @jelmersnoeck - Lost My Name

  26. Microservices2 • Fault tolerant • Easy development • Language agnostic

    • Scaling 2 simplified summary @jelmersnoeck - Lost My Name
  27. @jelmersnoeck - Lost My Name

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

  29. Framework @jelmersnoeck - Lost My Name

  30. What to use? • REST vs RPC • HTTP vs

    Message Bus • JSON vs Protobuf • Containers vs VMs • … @jelmersnoeck - Lost My Name
  31. Toolkit • gRPC • go-kit • go-micro • gizmo •

    … • our own? @jelmersnoeck - Lost My Name
  32. go-micro @jelmersnoeck - Lost My Name

  33. golumn 3 • configuration • bootstrap • extra functionality 3

    Like Twitter's Finagle or Netflix's Karyon, makes services "reusable" @jelmersnoeck - Lost My Name
  34. Language agnostic @jelmersnoeck - Lost My Name

  35. @jelmersnoeck - Lost My Name

  36. golumn x N @jelmersnoeck - Lost My Name

  37. @jelmersnoeck - Lost My Name

  38. @jelmersnoeck - Lost My Name

  39. Service discovery @jelmersnoeck - Lost My Name

  40. Service discovery • etcd • consul • zookeeper • linkerd.io

    • … @jelmersnoeck - Lost My Name
  41. Consul @jelmersnoeck - Lost My Name

  42. @jelmersnoeck - Lost My Name

  43. Containers @jelmersnoeck - Lost My Name

  44. nope. @jelmersnoeck - Lost My Name

  45. Orchestration @jelmersnoeck - Lost My Name

  46. @jelmersnoeck - Lost My Name

  47. @jelmersnoeck - Lost My Name

  48. Now what? @jelmersnoeck - Lost My Name

  49. @jelmersnoeck - Lost My Name

  50. @jelmersnoeck - Lost My Name

  51. @jelmersnoeck - Lost My Name

  52. Tooling @jelmersnoeck - Lost My Name

  53. Tooling • Metrics • Distributed Tracing4 • Logs 4 Google

    Dapper @jelmersnoeck - Lost My Name
  54. Metrics @jelmersnoeck - Lost My Name

  55. @jelmersnoeck - Lost My Name

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

  57. @jelmersnoeck - Lost My Name

  58. Logs @jelmersnoeck - Lost My Name

  59. @jelmersnoeck - Lost My Name

  60. Think about your business • Containers • Orchestration • Tooling

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

  62. Thanks @jelmersnoeck - Lost My Name

  63. Reading list What is Site Reliability Engineering? Uber Engineering Netflix

    Techblog Google Dapper Scaling with AWS Lambda Experiment @jelmersnoeck - Lost My Name