Advertisement
Advertisement

More Related Content

Slideshows for you(19)

Similar to DLJCJUG 2015: The Seven Deadly Sins of Microservices(20)

Advertisement

More from Daniel Bryant(20)

Advertisement

DLJCJUG 2015: The Seven Deadly Sins of Microservices

  1. The Seven DEADLY SINS OF Microservices Daniel Bryant @danielbryantuk OpencRedo (WITH Credit to Tareq Abedrabbo)
  2. The Seven Deadly Sins 1. LUST … 2. GLUTTONY 3. GREED… 4. SLOTH 5. WRATH 6. ENVY 7. PRIDE 12/08/15   @danielbryantuk  
  3. The Seven Deadly Sins (of Microservices) 1. LUST - Using the latest and greatest tech… 2. GLUTTONY - Excessive communication protocols 3. GREED - All your service are belong to us… 4. SLOTH - Creating a distributed monolith 5. WRATH - Blowing up when bad things happen 6. ENVY - The shared single domain fallacy 7. PRIDE - testing in the world of transience 12/08/15   @danielbryantuk  
  4. Who Am I? •  Principle Consultant at OpenCredo ü  Agile, CI/CD, DevOps ü  Microservices and cloud ü  Docker, Mesos and Kubernetes •  London Java Community Associate •  Adopt OpenJDK and JSR •  InfoQ Editor and DZone MVB 12/08/15   @danielbryantuk  
  5. So, What is a microservice? “Loosely coupled service oriented architecture with bounded contexts” Adrian Cockcroft “Applications that fit in your head” James Lewis 12/08/15   @danielbryantuk  
  6. 1. Lust - Using THE LATEST and Greatest Tech… 12/08/15   @danielbryantuk  
  7. Microservices... They solve all of our problems, Right? 12/08/15   @danielbryantuk  
  8. No... Not necessarily good for speed 12/08/15   @danielbryantuk   skillsma7er.com/skillscasts/6143-­‐microservices-­‐for-­‐speed     AddiConal  Reading!!   marCnfowler.com/bliki/ MonolithFirst.html    
  9. 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) 12/08/15   @danielbryantuk  
  10. No... Check your architecture/design skills 12/08/15   @danielbryantuk  
  11. No... Operational maturity is vital 12/08/15   @danielbryantuk   marCnfowler.com/bliki/MicroservicePrerequisites.html    
  12. Microservices are very useful But check your use case... ...Evaluation is a key skill 12/08/15   @danielbryantuk  
  13. Evaluation “I will postpone using this shiny new framework until my peers have validated the proposed benefits with rigorous scientific experiments” - Said by no programmer …ever 12/08/15   @danielbryantuk  
  14. Pick Your (Technical) Battles...… •  As Dan McKinley says, “Choose Boring Technology” – Optimize globally across organisation •  Java and Spring (Boot) are perfectly acceptable •  ... As are tomcat/jetty 12/08/15   @danielbryantuk  
  15. Matt Raible’s Comparison Framework 12/08/15   @danielbryantuk  
  16. 2. GLUTTONY - Excessive Communication PROTOCOLS 12/08/15   @danielbryantuk  
  17. Standardize Across the Organization •  Choose one synchronous protocol –  e.g. JSON over HTTP •  Choose one asynchronous protocol –  e.g. RabbitMQ Don’t gold-plate, but know your options: ProtoBuf, Thrift, ZeroMQ, MQTT 12/08/15   @danielbryantuk  
  18. Enterprise communication (Beam me up?) 12/08/15   @danielbryantuk   www.dzone.com/research/guide-­‐to-­‐enterprise-­‐integraCon    
  19. 3. GREED - All your service are Belong to us… 12/08/15   @danielbryantuk  
  20. How Do Committees Invent? “organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations” - Melvin Conway, 1968 12/08/15   @danielbryantuk  
  21. 12/08/15   @danielbryantuk   Dev   QA   Ops   Hand-­‐off  delays  Hand-­‐off  delays   Slow  feedback   Slow  feedback   Lack  of  cohesion,  shared  understanding  and  joint  accountability   Front-­‐end   Database   Middleware  
  22. 12/08/15   @danielbryantuk  
  23. Technical problems are often people problems... 12/08/15   @danielbryantuk   bit.ly/1L43U4H    
  24. Cross-functional Teams •  Spotify (bit.ly/1C46ZKo) –  Culture •  Amazon (bit.ly/1F3Dgkm) –  Communication •  Gilt (gi.lt/1rgyWvO) –  Strategic alignment 12/08/15   @danielbryantuk  
  25. Conway was Telling the Truth... Deal with it! 12/08/15   @danielbryantuk  
  26. Final Thoughts for the organisation Can your business team take advantage of microservices? 12/08/15   @danielbryantuk  
  27. Inspiration (for the business) 12/08/15   @danielbryantuk   bit.ly/1Mi3hDi    
  28. 4. SLOTH - Creating a distributed monolith 12/08/15   @danielbryantuk  
  29. Can’t Deploy Services Independently? Check your ‘bounded contexts’ and/or data ‘fault-lines’ (Also, check you have separated deploy and release) 12/08/15   @danielbryantuk  
  30. Can’t Deploy Services Independently? •  Schema-first design –  Michael Bryzek (Gilt): APIdoc •  Consumer-driven Contracts FTW –  Martin Fowler: CDC - A Service Evolution Pattern “CDC is BDD for microservices” 12/08/15   @danielbryantuk  
  31. Architecture - not a Dirty Word •  Technical leadership (bit.ly/1EUwpLl) •  Communication (bit.ly/1Ia3u8o) •  Promote shared understanding •  ‘Just enough’ up front design 12/08/15   @danielbryantuk  
  32. 5. WRATH - Blowing up when bad things happen 12/08/15   @danielbryantuk  
  33. Bring in Michael Nygard (Or some monkeys) 12/08/15   @danielbryantuk  
  34. Distributed computing - your new best friend •  Notes on distributed systems for young bloods –  Jeff hodges (bit.ly/1pKVepz) •  8 Fallacies of distributed computing –  Sun Microsystems, ROTEM-GAL-OZ (bit.ly/1IEpFC0) •  Distributed systems theory for the distributed systems engineer –  Henry Robinson (bit.ly/1qcxqZ3) 12/08/15   @danielbryantuk  
  35. OPERATIONAL Concerns: Technical •  Continuous delivery is a microservice prerequisite – Rapid provisioning – Basic monitoring – Rapid application deployment •  I.E. Agile & DevOps 12/08/15   @danielbryantuk  
  36. Operational Concerns: Social •  Failure happens all the time... Get used to it! •  'Gameday' or 'Disaster in recovery testing' (Real) Scenarios •  Failure injection testing (FIT): – Building 'Failure as a Service' at Netflix without the Simian Army 12/08/15   @danielbryantuk  
  37. Share the pain... 12/08/15   @danielbryantuk  
  38. “Dev-on-call” An occasional spike to the head is a good thing... ...metaphorically speaking •  You write it, you run it –  Accountability –  Shared responsibility –  Communication 12/08/15   @danielbryantuk  
  39. 6. ENVY - The shared SINGLE domain fallacy 12/08/15   @danielbryantuk  
  40. One Model to Rule Them All... •  One model… –  Breaks encapsulation –  Introduces coupling •  Know your DDD –  Entities –  Value Objects –  Aggregates and Roots 12/08/15   @danielbryantuk  
  41. But... how do I generate Reports? •  Aggregated reporting pattern – Pull by service •  Data Pumps – Push (Event sourcing?) 12/08/15   @danielbryantuk  
  42. 7. PRIDE - testing in the world of transience 12/08/15   @danielbryantuk  
  43. People are surprisingly quiet about this... 12/08/15   @danielbryantuk   marCnfowler.com/arCcles/microservice-­‐tesCng/    
  44. Testing With Microservices is Difficult... •  Invest in your build pipeline testing – Serenity BDD – Wiremock / Saboteur – Jenkins Performance plugin 12/08/15   @danielbryantuk  
  45. Testing With Microservices is Difficult... •  Do it in production(?) –  Netflix –  Hailo –  Gilt •  This is an advanced pattern! –  Automation is essential! 12/08/15   @danielbryantuk  
  46. Summary 1. LUST - Using the latest and greatest tech… 2. GLUTTONY - Excessive communication protocols 3. GREED - All your service are belong to us… 4. SLOTH - Creating a distributed monolith 5. WRATH - Blowing up when bad things happen 6. ENVY - The shared single domain fallacy 7. PRIDE - testing in the world of transience 12/08/15   @danielbryantuk  
  47. 12/08/15   @danielbryantuk  
  48. THANKS... @danielbryantuk daniel.bryant@opencredo.com https://www.parleys.com/tutorial/seven-deadly-sins-microservices (Credit to Tareq Abedrabbo for inspiration/guidance) 12/08/15   @danielbryantuk  
Advertisement