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

[2019.01 Meetup][TALK] Daniel Bryant - Seven Mo...

DevOps Lisbon
January 14, 2019
130

[2019.01 Meetup][TALK] Daniel Bryant - Seven More Deadly Sins of Microservices

All is not completely rosy in microservice-land. It’s often a sign of an architectural approach’s maturity that anti-patterns begin to be identified and classified alongside well-established principles and practices. Daniel Bryant introduces seven deadly sins from real projects, which left unchecked could easily ruin your next microservices project.

Daniel offers an updated tour of some of the nastiest anti-patterns in microservices from several real-world projects he’s encountered as a consultant, providing a series of anti-pattern “smells” to watch out for and exploring the tools and techniques you need to avoid or mitigate the potential damage.

DevOps Lisbon

January 14, 2019
Tweet

More Decks by DevOps Lisbon

Transcript

  1. The Seven (more) Deadly Sins of Microservices 1. LUST -

    Using the (Unevaluated) latest and greatest tech… 2. GLUTTONY - Communication lock-in 3. GREED - What'S Mine is mine (within the organisation)… 4. SLOTH - Getting lazy with NFRs 5. WRATH - Blowing up when bad things happen 6. ENVY - The shared single domain (and data store) fallacy 7. PRIDE - testing in the world of transience 13/01/2019 @danielbryantuk
  2. @danielbryantuk • Tech Consultant, Product Architect at Datawire • Agile,

    architecture, CI/CD, Programmable infrastructure • Java, Go, JS, microservices, cloud, containers • Continuous delivery of value through effective technology and teams 13/01/2019 @danielbryantuk bit.ly/2jWDSF7 oreil.ly/2E63nCR
  3. No... Not necessarily good for speed 13/01/2019 @danielbryantuk skillsmatter.com/skillscasts/6143-microservices-for-speed Additional

    Reading!! martinfowler.com/bliki/MonolithFirst.html segment.com/blog/goodbye-microservices/
  4. No... Check your architecture/design skills “If you can't build a

    [well-structured] monolith, what makes you think microservices are the answer?” Simon Brown (bit.ly/1n7D0vp) 13/01/2019 @danielbryantuk
  5. Microservices are very useful But check your use case... ...Evaluation

    is a key skill Both for architecture and technology 13/01/2019 @danielbryantuk
  6. Technology Evaluation “I will postpone using this new microservice framework

    until my peers have validated the proposed benefits with rigorous scientific experiments” - Said by no programmer …ever 13/01/2019 @danielbryantuk
  7. AN example: To containerise, or not to containerise? (dockaH, dockah,

    dockah... Dockah?) 13/01/2019 @danielbryantuk
  8. The ESB is dead - long live the esb! 13/01/2019

    @danielbryantuk • Is this an ESB? • Or an API gateway?
  9. The ESB is dead - long live the API Gateway!

    13/01/2019 @danielbryantuk • Watch for the API Gateway morphing into an Enterprise service bus – Loose coupling is vital • But let me be clear... – The API Gateway pattern is awesome – Centralise cross-cutting concerns – Prevent wheel-reinvention (plugins) – Check out kong, apigee, Mulesoft etc
  10. Previously... • Conway'S Law • Microservices are about people, as

    much as they are tech – Maybe more – Particularly in a migration / transformation 13/01/2019 @danielbryantuk
  11. We hear this a lot... “We’ve decided to reform our

    teams around squads, chapters and guilds” • Beware of cargo-culting – Repeat three times “We are not spotify” • Understand the practices, principles, values etc 13/01/2019 @danielbryantuk
  12. Getting lazy with non-Functional Requirements “The driving technical requirements for

    a system should be identified early to ensure they are properly handled in subsequent design” Aidan Casey Guiding principles for evolutionary architecture 13/01/2019 @danielbryantuk
  13. Testing NFRs in the build pipeline • Security testing –

    Findsecbugs / OWASP Dependency check – Bdd-security (OWASP ZAP) / Arachni – Gauntlt / Serverspec – Docker Bench / Kube Bench 13/01/2019 @danielbryantuk
  14. People Pain point - How does Devops fit into this?

    • http://web.devopstopologies.com/ • Books 13/01/2019 @danielbryantuk
  15. Devops - the 'fullstack engineer' myth “I'M sorry, but if

    you'RE not designing the computer chips and writing the website, then I don'T wanna hear from you” Charity Majors (@mipsytipsy), CraftConf 2016 http://www.ustream.tv/recorded/86181845 13/01/2019 @danielbryantuk
  16. Devops - define responsibilities • Do you really want to

    build an entire microservices platform? • Focus on what matters – Ci/CD – Mechanical sympathy – Logging – Monitoring 13/01/2019 @danielbryantuk
  17. 6. ENVY - The shared SINGLE domain (and Data Store)

    fallacy 13/01/2019 @danielbryantuk
  18. Previously - One Model to Rule Them All... • One

    model… – Breaks encapsulation – Introduces coupling • Know your DDD – Entities – Value Objects – Aggregates and Roots 13/01/2019 @danielbryantuk
  19. Context mapping (static) & event storming (dynamic) 13/01/2019 @danielbryantuk |

    @spoole167 40 www.infoq.com/articles/ddd-contextmapping ziobrando.blogspot.co.uk/2013/11/introducing-event-storming.html
  20. Choose (and use) data stores appropriately • RDBMS – Valuable

    for structured data • Cassandra is Awesome – but don'T treat it like an RDBMS! • Don'T build a graph with RDBMS – Use neo4j, Titan etc • Beware of operational overhead 13/01/2019 @danielbryantuk
  21. The test pyramid (is just a model) • This model

    was created before the rise in popularity of microservices… – …but after David Parnas’ modularity • Applies at system and service level • Probably needs updating… 13/01/2019 @danielbryantuk martinfowler.com/bliki/TestPyramid.html
  22. The Seven (more) Deadly Sins of Microservices 1. LUST -

    Using the (Unevaluated) latest and greatest tech… 2. GLUTTONY - Communication Lock-in 3. GREED - What'S Mine is mine (within the organisation)… 4. SLOTH - Getting lazy with NFRs 5. WRATH - Blowing up when bad things happen 6. ENVY - The shared single domain (and data store) fallacy 7. PRIDE - testing in the world of transience 13/01/2019 @danielbryantuk