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. Microservices  
    101
    The  Big  Why?

    View Slide

  2. Yamen  
    Sader
    Sixtree  
    Co-­‐Founder  
    Principal  Consultant  
    Hacker  
    !
    @yaamehn  
    #microservices

    View Slide

  3. We  Are  Here

    View Slide

  4. 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

    View Slide

  5. 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

    View Slide

  6. 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

    View Slide

  7. Woah
    Independent
    Limited
    Independent
    High Cohesion
    Low Coupling
    High Cohesion

    View Slide

  8. Horizontal  layering  
    (alone)  is  evil

    View Slide

  9. 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

    View Slide

  10. 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

    View Slide

  11. UI
    Logic
    Data
    MUD
    UI
    Logic
    Data

    View Slide

  12. CONGRATULATIONS!
    You  have  a  Monolith

    View Slide

  13. 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

    View Slide

  14. 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

    View Slide

  15. 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

    View Slide

  16. 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

    View Slide

  17. 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

    View Slide

  18. System
    Billing
    The  Prerequisite
    Customer
    Product
    UI
    Can  you  design  your  system  
    without  sharing  the  
    database?  
    (This  is  the  hardest  part)

    View Slide

  19. And  now,  for  my  next  
    trick…

    View Slide

  20. Billing
    Customer
    Product
    UI

    View Slide

  21. 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

    View Slide

  22. UI
    DistribuHon  &  Scale  Becomes  Possible
    But not necessarily desirable…
    Customer
    Product
    Billing

    View Slide

  23. 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

    View Slide

  24. 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)

    View Slide

  25. Microservices  Defined
    The  confluence  of  boundaries  
    between  the  Domain  Architecture,  
    the  System  and  OrganisaHonal  
    Structure
    This is the only new thing

    View Slide

  26. Microservices  Land
    Domain System Organisation
    This is the basis of alignment between Microservices
    and DevOps maturity

    View Slide

  27. Drawing  the  rest  of  the  owl

    View Slide

  28. Let’s  Take  a  Ride

    View Slide

  29. First  Law  of  DistribuHon
    Don’t

    View Slide

  30. Domain  Architecture
    Customer Product Billing
    Draw  the  boxes  
    Low  rate  of  change

    View Slide

  31. Micro  Architecture
    AngularJS
    MongoDB
    JEE
    Oracle
    NodeJS
    Ninjas
    Build  the  boxes  
    High  rate  of  change

    View Slide

  32. Macro  Architecture
    Monitoring
    Data  ReplicaHon

    Protocols

    Messaging
    UI  IntegraHon
    ?
    Service  Discovery
    Deployment
    ReporHng
    Distributed  Tracing  &  ExcepHon  Handling

    View Slide

  33. 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!

    View Slide

  34. The  (micro)  elephant  in  
    the  room

    View Slide

  35. View Slide

  36. 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??!???!?

    View Slide

  37. This is not a microservice

    View Slide

  38. 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

    View Slide

  39. 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

    View Slide