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

CodeCamp23 Enabling Microservice Success

CodeCamp23 Enabling Microservice Success

Microservices can be a very effective approach to speeding up delivery of value to your organisation and to your customers. If you get them right.

If you don’t, then microservices are just something that makes everything you do more complicated, from working out where things are going wrong to upgrading the same dependency in tens or hundreds of services.

Sarah will draw on ten years of experience building and operating microservices at the Financial Times to talk about:
• what it means to be “successful” with your architecture and technology choices. Can you move fast? Understand what is happening in production? Avoid having to start again?
• what you need in place to make microservices work, from technology maturity and leadership support through to platform engineering and observability
• where we go next with microservices: what are the new tools and approaches that will help us get the most out of them?

Sarah Wells

May 04, 2023
Tweet

More Decks by Sarah Wells

Other Decks in Technology

Transcript

  1. @[email protected] Accelerate defines performance in terms of the impact on

    the productivity, profitability and market share of your business, compared to competitors
  2. @[email protected] Four outcomes that link to high performance: • short

    lead time • high deployment frequency • low change fail percentage • short mean time to restore
  3. @[email protected] 1. Regularly delivering real business value 2. Adapting to

    change 3. Maintaining appropriate service levels 4. Spending most of your time on meaningful work 5. Not having to start again 6. Keeping risk to an acceptable level
  4. @[email protected] Reasons to use microservices • Because loose coupling supports

    flow • For the developer experience • Aids compliance and security
  5. @[email protected] Reasons to use microservices • Because loose coupling supports

    flow • For the developer experience • Aids compliance and security • Scaling only where needed
  6. @[email protected] Reasons to use microservices • Because loose coupling supports

    flow • For the developer experience • Aids compliance and security • Scaling only where needed • Increased robustness
  7. @[email protected] Reasons to use microservices • Because loose coupling supports

    flow • For the developer experience • Aids compliance and security • Scaling only where needed • Increased robustness • Increased flexibility
  8. @[email protected] Challenges • Estate complexity • Operational complexity • Finding

    the right granularity • Handling change • Developer experience is very different
  9. @[email protected] Challenges • Estate complexity • Operational complexity • Finding

    the right granularity • Handling change • Developer experience is very different • Organisational change
  10. @[email protected] Challenges • Domain understanding • Products not projects •

    Leadership support • Teams that want autonomy • Support for that autonomy
  11. @[email protected] Challenges • Domain understanding • Products not projects •

    Leadership support • Teams that want autonomy • Support for that autonomy • Technical maturity
  12. @[email protected] 1. Regularly delivering real business value 2. Adapting to

    change 3. Maintaining appropriate service levels 4. Spending most of your time on meaningful work 5. Not having to start again 6. Keeping risk to an acceptable level
  13. @[email protected] Four outcomes that link to high performance: • short

    lead time • high deployment frequency • low change fail percentage • short mean time to restore
  14. @[email protected] "For many years, the tongue-in-cheek definition of software architecture

    was “the stuff that’s hard to change later.” Later, the microservices architecture style appeared, where change is a first-class design consideration." From the preface of Fundamentals of Software Architecture, Mark Richards and Neal Ford
  15. @[email protected] Four outcomes that link to high performance: • short

    lead time • high deployment frequency • low change fail percentage • short mean time to restore
  16. @[email protected] https://lamport.azurewebsites.net/pubs/distributed-system.txt “A distributed system is one in which the

    failure of a computer you didn't even know existed can render your own computer unusable”
  17. @[email protected] "Habitability is the characteristic of source code that enables

    people coming to the code later in its life to understand its construction and intentions and to change it comfortably and confidently." Habitability and Piecemeal Growth, Richard P Gabriel, https://www.dreamsongs.com/Files/PatternsOfSoftware.pdf
  18. @[email protected] Daniel Bryant, quoted in https://thenewstack.io/ the-future-of-microservices-more-abstractions/ “companies.. are creating

    a Heroku-like CLI for their developers, so that a command like ‘create new microservice’ spins up some scaffolding, plugs into CI, plugs into pipelines, plugs into observability”
  19. @[email protected] https://redmonk.com/jgovernor/2022/02/21/what-is-developer -experience-a-roundup-of-links-and-goodness/ “Why would a developer put up with

    a poor developer experience when they can likely find a job that better aligns with their needs and preferences?”
  20. @[email protected] Autonomy comes with responsibility Jason Yip, Thoughts on the

    Spotify model, https://jchyip.medium.com/my- critique-of-the-spotify-model-part-1-197d335ef7af