History ❖ Starts in ~2012 / 2013 ❖ A synchronized evolution ❖ Helped by cloud evolution ❖ Pioneers: James Lewis from ThoughtWorks and Adrian Cockcroft from Netflix ❖ Advocators like Martin Fowler from ThoughtWorks
Who uses it ❖ Heavy user ❖ Unknown number of services ❖ ~100-150 service called/page ❖ Pioneer ❖ Open-Source and blog a lot! ❖ ~800 services ❖ ~6 service called/api call
ACID / Availability ❖ ACID is hard to ensure in a distributed system ❖ Occasion to define which service need ACID or not ❖ The number of view might not, the billing yes definitely
Asynchronism ❖ With more communication, harder to stay synchronous ❖ For a query, may require collaboration of severals micro- services ❖ Difficulties with HTTP ❖ Mandatory for event-driven reactions
Value by composition ❖ « dumb-pipe, smart endpoint » ❖ Some value is made by service composition ❖ Harder to visualize and think about ❖ Need tooling and design upfront
Distributed system ❖ Everything is a distributed system ❖ In monolith, easy to forget ❖ Network is not resilient ❖ Design for failure ❖ https://blogs.oracle.com/jag/resource/Fallacies.html
-Conway’s law « organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations »
Organisation ❖ Each team should manage the service lifetime from value definition to production and maintenance, « you build it, you run it » ❖ Require cross-functional teams ❖ Amazon’s Two Pizza Team (i.e. the whole team can be fed by two pizzas)
Monolith defenders ❖ Most companies don’t need micro-services ❖ Etsy, Facebook architecture are monolith at scale ❖ Focus on internal architecture first
MicroServices & Monolith ❖ How to evolve? ❖ Keep legacy monolith ❖ New features as services ❖ Static, safe and legacy core ❖ Update on just one micro-service