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

Microservices 101 - The Big Why?

Yamen Sader
September 03, 2014

Microservices 101 - The Big Why?

Exploring the drivers behind the Microservices hype, and defining the prerequisites in architecture and infrastructure needed before contemplating this path.

Presented at the first Sydney Microservices Meetup - Small Talk.

Yamen Sader

September 03, 2014
Tweet

More Decks by Yamen Sader

Other Decks in Programming

Transcript

  1. System Why  Are  We  Here? • TradiHonal  3-­‐Her  ‘architecture’  to

      build  ‘systems’   • But  what  is  an  architecture?   • And  what  is  a  system? UI Logic Data
  2. Architecture • Defining  the  boundaries  between   components  (modularisaHon)  to

      • minimise  dependencies  between   components  (coupling)  and   • maximise  cohesiveness  within   components   ! • Equips  us  to  deal  with  CHANGE High Cohesion Low Coupling High Cohesion
  3. System • A  unit  of  deployment  and/or   development  and/or

     (most  likely)   purchase  or  commissioning   • Independent  of  other  systems   • UI  and  persistence   • Development  and  evoluHon   • OperaHons   • Frameworks  and  languages   • Underlying  runHme  ‘process’   • Limited  interacHon  with  other  systems Independent Limited Independent
  4. System Early  ObjecHves • This  is  the  natural  way  to

     start   building  systems   • Easy  to  develop   • Homogenous   • Small  number  of  concerns,  so   highly  cohesive   • ‘Simple’ UI Logic Data
  5. System Over  Time • New  funcHonal  concepts  and   concerns

     are  added   • Has  no  concept  of  the  ‘funcHonal   separaHon’  of  concerns   • Only  decouples  technical   concerns   • But  technical  concerns  change   the  least  o^en!   • How  does  this  architecture  evolve   as  a  ‘system’  grows  over  Hme? UI Logic Data
  6. System Please  Don’t  Ever  Change • You  know  you  have

     a  monolith  if   change  is  slow  and  terrifying   • It’s  slow  and  terrifying  because:   • Each  layer  has  very  low  cohesion   (covers  many  concerns)   • Each  layer  depends  on  the  layer   below  it  (albeit  abstracted)  very   significantly   • The  ‘unit  of  change’  requires  too   big  of  a  ‘unit  of   understanding’  (doesn’t  fit  in  your   head) UI Logic Data
  7. Other  Concerns • Long  term  commitment  to   technology  stack

      • Difficult  to  onboard  new   developers   • Slow  and  overloaded   development  environment   • Slow  applicaHon  startup   • Difficult  to  conHnuously  test  and   deploy   • Very  difficult  to  scale  applicaHon   horizontally   • Difficult  to  scale  development   • Difficult  to  idenHfy  boelenecks   and  issues   • Very  difficult  to  cleanly  integrate   with  other  systems
  8. System The  First  Step • Admit  that  this  horizontal  

    layering  is  insufficient  past  a   certain  scale  (mulHple  funcHonal   concerns  in  a  fast-­‐changing   environment)   • The  layers  must  create   boundaries  that  meet  the   principles  of  architecture   (modules  with  high  cohesion  and   low  coupling) UI Logic Data
  9. VerHcal  (Domain)  Slices • This  is  MUCH  beeer   •

    A  change  is  much  more  likely  to   affect  a  single  slice   • This  can  be  VERY  difficult  to  do   correctly Customer Product Billing System
  10. System Billing The  Trap Customer Product UI Data Yes!  Great

     benefit  to  having  a   single,  cohesive  user  interface OK,  let’s  trust  everyone  to   respect  these  boundaries ReferenHal  integrity  and   transacHons  reintroduce   coupling
  11. System Billing The  Prerequisite Customer Product UI Can  you  design

     your  system   without  sharing  the   database?   (This  is  the  hardest  part)
  12. Once  reliance  on  a  shared   database  between   components

     is  removed,  the   system  boundary  becomes   arbitrary   ! i.e.,  you  can  choose  the  most  appropriate  system  boundary
  13. Conway’s  Law OrganizaHons  which  design  systems   …  are  constrained

     to  produce   designs  which  are  copies  of  the   communicaHon  structures  of  these   organizaHons   —  M  Conway Boundary Boundary Monolith Monolith
  14. No  Man’s  Land Domain System Organisation Note: Organisational boundaries tend

    to be far more complex (domains align with business, systems align with IT, organisations cut across both)
  15. Microservices  Defined The  confluence  of  boundaries   between  the  Domain

     Architecture,   the  System  and  OrganisaHonal   Structure This is the only new thing
  16. Microservices  Land Domain System Organisation This is the basis of

    alignment between Microservices and DevOps maturity
  17. Macro  Architecture Monitoring Data  ReplicaHon
 Protocols
 Messaging UI  IntegraHon ?

    Service  Discovery Deployment ReporHng Distributed  Tracing  &  ExcepHon  Handling
  18. The  Hard  Bits • UI  IntegraHon  &  SSO   •

    Data  IntegraHon  &   DuplicaHon   • Monitoring   • Deployment  &  Management   • Service  RegistraHon  &   Discovery   • Developer  Tooling   • Distributed  ParHHoning   • (No)  TransacHons   • ReporHng   • Data  MigraHon   • Protocols  &  Standards   • Distributed  Tracing  &  Error   Handling   • Resiliency And  many  more!
  19. My  Opinion hep://www.sixtree.com.au/arHcles/2014/microservices-­‐characterised/ Services  with  uniform   interfaces Small  with

     a  single   responsibility Containerless Organised  “verHcally”   along  business   capabiliHes Loose  coupling,  favouring   choreography  over   orchestraHon Decentralised  governance   where  only  the  interfaces   are  agreed Decentralised  data   management Infrastructure  is   automated Design  for  failure 100  to  1000  lines  to  code EssenHal Why? Why??!???!?
  20. I  guess  it  is  easier  to  use  a  new  name

      (Microservices)  rather  than  say  that  this  is   what  SOA  actually  meant  –  re  hep://t.co/ gvhxDfDWLG     —  Arnon  Rotem-­‐Gal-­‐Oz  (@arnonrgo)           March  16,  2014
  21. Further  Reading • Master  Reading  List:  hep://www.maesHne.com/microservices   • The

     Big  MoHvaHon:  hep://www.infoq.com/presentaHons/Breaking-­‐the-­‐Monolith   • Asking  Why:  hep://genehughson.wordpress.com/2012/07/15/most_important_quesHon/   • On  Architecture:  hep://genehughson.wordpress.com/2012/04/04/architecture-­‐versus-­‐design/   • Great  Series:  hep://www.Hgerteam.dk/category/soa/microservices/   • Life  Beyond  Distributed  TransacHons:  hep://www.ics.uci.edu/~cs223/papers/cidr07p15.pdf   • Distributed  Big  Balls  of  Mud:  hep://www.codingthearchitecture.com/2014/07/06/ distributed_big_balls_of_mud.html   • Reality:  heps://rclayton.silvrback.com/failing-­‐at-­‐microservices   • Our  Thoughts:  hep://www.sixtree.com.au/arHcles/tag/microservices.html