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

Microservices are an antipattern

Microservices are an antipattern

Lindsay Holmwood

April 18, 2019
Tweet

More Decks by Lindsay Holmwood

Other Decks in Technology

Transcript

  1. Microservices are
    an antipattern
    Lindsay Holmwood

    View Slide

  2. Microservices are
    an antipattern
    Lindsay Holmwood

    View Slide

  3. Why microservices?

    View Slide

  4. Design strategy to
    manage complexity
    in our systems

    View Slide

  5. Design strategy to
    manage complexity
    in our systems

    View Slide

  6. If the system or team
    get too big, we:
    1. Split the system

    View Slide

  7. If the system or team
    get too big, we:
    1. Split the system

    View Slide

  8. If the system or team
    get too big, we:
    2. Split the team

    View Slide

  9. Popularised by the
    devops movement

    View Slide

  10. Popularised by the
    devops movement

    View Slide

  11. CD + containers
    were the drivers

    View Slide

  12. CD + containers
    were the drivers

    View Slide

  13. In use at the big end of town

    View Slide

  14. “It works for
    Google, so we’ll
    scale it down and
    get the same
    benefits!”

    View Slide

  15. We cargo culted a
    design strategy
    without understanding
    the tradeoffs

    View Slide

  16. Real talk:
    The smallest microservice
    at Google probably does
    more transactions than the
    largest service in your
    organisation.

    View Slide

  17. Real talk:
    We took a pattern for
    managing huge systems,
    extrapolated it down to
    our size, and hoped it
    worked.

    View Slide

  18. Real talk:
    Hope is not a strategy.

    View Slide

  19. Some downsides
    you should think
    about:

    View Slide

  20. Some downsides
    you should think
    about:

    View Slide

  21. You’re replacing
    function calls with
    network calls

    View Slide

  22. Source: “Systems Performance: Enterprise and the Cloud” by Brendan Gregg

    View Slide

  23. Is that latency
    worth it?

    View Slide

  24. What hard limits are
    you imposing to control
    unpredictability?

    View Slide

  25. Microservices are a
    systems multiplier
    for your shitty code

    View Slide

  26. View Slide

  27. How is your
    ◦ modularity?
    ◦ isolation?
    ◦ encapsulation?

    View Slide

  28. Refactor
    first

    View Slide

  29. Then scale when the
    performance
    impacts users

    View Slide

  30. 1. Make it work
    2. Make it right
    3. Make it fast

    View Slide

  31. 1. Make it work
    2. Make it right
    3. Make it fast
    Refactor

    View Slide

  32. 1. Make it work
    2. Make it right
    3. Make it fast
    Refactor
    Microservice

    View Slide

  33. Microservices have
    a higher cost of
    ownership

    View Slide

  34. Operational requirements:
    ◦ CD pipelines
    ◦ Network & compute & storage
    ◦ Logging
    ◦ Monitoring
    ◦ Tracing & observability

    View Slide

  35. Security requirements:
    ◦ Authentication
    ◦ Identity
    ◦ Monitoring

    View Slide

  36. This costs more
    (both in systems bills and engineering time)

    View Slide

  37. But what if we
    just… didn’t?

    View Slide

  38. But what if we
    just… didn’t?

    View Slide

  39. Problems are
    harder to debug

    View Slide

  40. Incidents have
    > MTTD & MTTR

    View Slide

  41. Delivery slows

    View Slide

  42. Increased
    communication +
    coordination overhead
    between teams

    View Slide

  43. Sequencing of
    changes across
    multiple services

    View Slide

  44. Poor service boundaries?
    You have to get multiple
    teams moving in the same
    direction to deliver a change.

    View Slide

  45. Stakeholders for technical changes
    are rarely exclusively technical

    View Slide

  46. Requires coordination
    across disciplines like
    product, design,
    marketing, analytics, …

    View Slide

  47. You need
    established and understood
    communication paths

    View Slide

  48. You need
    established and understood
    change coordination

    View Slide

  49. You need
    established cultural norms
    for resolving conflict

    View Slide

  50. Microservices are an
    effective way to
    separate concerns in
    complex systems

    View Slide

  51. Microservices are an
    inefficient way of
    organising people in
    organisations
    < 1,000 people

    View Slide

  52. The smaller the org,
    the smaller the return

    View Slide

  53. You are not
    Google/Netflix/
    AWS/Facebook/…

    View Slide

  54. Do the job you have,
    not the job you want.

    View Slide

  55. Thank you!
    (fight me)

    View Slide