Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Come i Microservizi favoriscono il lavoro dei Feature Teams

381 views

Published on

In un contesto Agile i Feature Teams sono una delle strutture organizzative più efficaci per sviluppare un ecosistema complesso in modo rapido, mantenendo alta la qualità e basso il TCO (total cost of ownership). Spesso questi team sono però vincolati da architetture monolitiche, o a lasagna/spaghetti, che non consentono di operare end-to-end sulle feature, creando dipendenze tra team, colli di bottiglia e frustrazione. Lo stile architetturale a Microservizi (sì, è uno stile e non un pattern e quindi va interpretato a seconda dei casi) da una mano a questi team ad essere più indipendenti tra loro e li aiuta a lavorare tutti con lo stesso scopo: generare valore per gli utenti finali in modo continuo. In questo talk vedremo come organizzare più team che lavorano su uno stesso prodotto e come lo stile architetturale a Microservizi supporti questa organizzazione evolvendo con l'evolversi dei team.

Published in: Business

Come i Microservizi favoriscono il lavoro dei Feature Teams

  1. 1. Come i Microservizi favoriscono il lavoro dei Feature Teams Giulio Roggero
  2. 2. Il problema 2
  3. 3. Chi ha bisogno di supporto L’esperto sommerso di lavoro time-to-market rallentato, stress, bassa qualità, aumento degli imprevisti, caos, no controllo Attesa! 3
  4. 4. Product Owner A B Features C facciamo un esempio A Catalogo prodotti B C Acquisto prodotti Review dei prodotti e-Commerce 4
  5. 5. Team Backend Team Frontend A B Features C 5
  6. 6. Team Backend Team Frontend A B Features C 6
  7. 7. Team Backend Team Frontend A B Features C ? 7
  8. 8. Team Backend Team Frontend A B Features C ? 8
  9. 9. Team Backend Team Frontend A B Features C ? 9
  10. 10. Team Backend Team Frontend A B Features C ? ? 10
  11. 11. Team Backend Team Frontend A B Features C ? ? 11
  12. 12. Team Backend Team Frontend A B Features C ? ? 12
  13. 13. Team Backend Team Frontend A B Features C ? ? 13
  14. 14. Team Backend Team Frontend A B Features C ? ? ! 14
  15. 15. Team Backend Team Frontend A B Features C ? ? ! 15
  16. 16. Team Backend Team Frontend A B Features C ? ? ! ! OK 16
  17. 17. Team Backend Team Frontend A B Features C ? ? ! ! OK 17
  18. 18. Team Backend Team Frontend A B Features C ? ? ! ! OK Resolution time 18
  19. 19. E’ possibile evitare questo “balletto”? 19
  20. 20. Stop Starting, Start Finishing 20
  21. 21. Team Backend Team Frontend A B Features C 21
  22. 22. Team Backend Team Frontend A B Features C ? 22
  23. 23. Team Backend Team Frontend A B Features C ? Tempo che spendo per fare un lavoro che si può interrompere 23
  24. 24. Team Backend Team Frontend A B Features C ? ! OK Tempo che spendo per fare un lavoro che si può interrompere 24
  25. 25. Team Backend Team Frontend A B Features C ? ! OK Tempo che spendo per fare un lavoro che si può interrompere 25
  26. 26. Team Backend Team Frontend A B Features C ? ! OK Tempo che spendo per fare un lavoro che si può interrompere 26
  27. 27. Team Backend Team Frontend A B Features C ? ! OK Resolution time Tempo che spendo per fare un lavoro che si può interrompere 27
  28. 28. La difficoltà per creare questa situazione è riuscire a sincronizzarsi tra 2 o più team. Non si hanno sotto controllo tutte le dinamiche di tutti i team e gli imprevisti ci sono sempre. Soprattutto quando il software è in produzione. Per cui la situazione di attesa ci sarà spesso e questo a cascata crea questo coas! 28
  29. 29. Come favorire la sincronizzazione? OK 29
  30. 30. Team Frontend FE A B C Team Backend API BE A B C 30
  31. 31. FE A B C API BE A B C Feature Team 1 Feature Team 2 Il team è completamente autonomo su tutta l’architettura verticale: ● UX/UI ● Frontend ● Backend ● API ● Logiche di business ● Test ● Deploy ● Ops 31
  32. 32. A B Features C Feature Team 1 Feature Team 2 32
  33. 33. A B Features C Feature Team 1 Feature Team 2 ? 33
  34. 34. A B Features C ? OK Feature Team 1 Feature Team 2 Meno stress, comunicazione più facile, focus sul problema 34
  35. 35. Quali sono gli ostacoli per organizzarsi in Feature Teams? 35
  36. 36. Know-how Skills Mancanza di autonomia Mancanza di 36
  37. 37. FE BE Android A Catalogo prodotti B C Acquisto prodotti Review dei prodotti Team 2 Web Web Web Componenti Cart Checkout Reviews DB Reviews Analytics Review Rank iOS Android iOS iOS Android Product DB Product Img Product Availability Team 1 Componenti Payment 37
  38. 38. FE BE Team 2 iOS Android Web iOS Android Web iOS Android Web Product DB Product Img Product Availability Team 1 Componenti Componenti A Catalogo prodotti B C Acquisto prodotti Review dei prodotti Cart Checkout Payment Reviews DB Reviews Analytics Review Rank Per mancanza di know-how e skills spesso i features teams si trasformano in component teams. 38
  39. 39. Qualsiasi organizzazione che progetta un sistema (definito in senso lato) produrrà un disegno la cui struttura è una copia della struttura di comunicazione dell'organizzazione — Melvin E. Conway https://en.wikipedia.org/wiki/Conway%27s_law e-Commerce A Catalogo prodotti B Acquisto prodotti E Pricing D Disponibilità prodotti C Review dei prodotti F Delivery H Recommendations I Product highlights G Customer support Feature Team 1 Feature Team 2 39
  40. 40. Lo stile architetturale a microservizi favorisce i Feature Teams 40
  41. 41. A B ED CF H I G Product Microservice Customer Support Microservice A Catalogo prodotti B Acquisto prodotti E Pricing D Disponibilità prodotti C Review dei prodotti F Delivery H Recommendations I Product highlights G Customer support 41
  42. 42. A B ED CF H I G Product Microservice Customer Support Microservice I team sono dedicati ad un’area di business. Se usano nativo probabilmente un team è più Mobile e uno più Web. I servizi sono raggruppati per team. Si parte piccolo e già disegnandoli modulari e con pattern port/adapter. Web Team 2 iOSAndroid Team 1 ATTENZIONE: ci sono ancora dipendenze dirette tra i team! iOSAndroid Web 42
  43. 43. Introducendo il concetto di Backend-for-Frontends ogni team può disegnare la propria esperienza utente adattando le API generiche esposte dai Servizi per le esigenze di logica di prossimità dei device (una tabella o un wizard su mobile hanno una logica diversa di interazione con l’utente e quindi hanno bisogno dei dati in ordine diverso). I BFF consentono anche di non bloccarsi quando il servizio dell’altro team non è ancora pronto. Mobile BFF Web BFF A B ED CF H I G Product Microservice Customer Support Microservice iOSAndroid Web Team 1 Team 2 43
  44. 44. Nel tempo i microservizi possono spezzarsi in ulteriori servizi. Questo succede quando: ● Parti del servizio devono scalare diversamente da altre ● La loro complessità è aumentata ● Il loro ciclo di vita è molto diverso dagli altri componenti del servizio Mobile BFF Web BFF A B Product & Buy Microservice CG Customer Support Microservice iOSAndroid Web Team 1 Team 2 HI Recommendation Microservice Microservices Event Broker Pricing & Availability Service ED F Delivery Microservice Team Logistics 44 API Gateway
  45. 45. Week 1 https://spotifylabscom.files.wordpress.com/2014/03/spotify-engineering-culture-part1.jpeg Come funzionano i rilasci? 45
  46. 46. Week 1 https://spotifylabscom.files.wordpress.com/2014/03/spotify-engineering-culture-part1.jpeg Come funzionano i rilasci? Team Products Team Customer Team Logistics 46
  47. 47. Week 1 https://spotifylabscom.files.wordpress.com/2014/03/spotify-engineering-culture-part1.jpeg Come funzionano i rilasci? A C I G Team Products Team Customer Team Logistics 47
  48. 48. Week 1 https://spotifylabscom.files.wordpress.com/2014/03/spotify-engineering-culture-part1.jpeg A C I G Team Products Team Customer Team Logistics A C G I Come funzionano i rilasci? 48
  49. 49. Week 1 https://spotifylabscom.files.wordpress.com/2014/03/spotify-engineering-culture-part1.jpeg Grazie ai feature toggles! Altrimenti la sincronizzazione tra i team è un inferno A C I G Team Products Team Customer Team Logistics A C G I Visibilità A C G I 49
  50. 50. Week 1 Week 2 https://spotifylabscom.files.wordpress.com/2014/03/spotify-engineering-culture-part1.jpeg A B C I G H Team Products Team Customer Team Logistics A C G I B G H Visibilità A C G I Visibilità H G B E di volta in volta li accendo I I 50
  51. 51. Team Products Team Customer Component Lib Service Frontend Ops Mantainers Users Come gestire le dipendenze tra microservizi? 51
  52. 52. Team Products Team Customer Chiedendo Aiuto! Ask for an improvement 52 Component Lib Service Frontend Ops
  53. 53. Team Products Team Customer Ma non sempre è possibile sincronizzarsi Ask for an improvement 53 Component Lib Service Frontend Ops
  54. 54. Team Products Team Customer Il codice è di tutti, per cui lo modifico rispettando le regole che ci siamo dati ispirate ai Modelli Open Source! Implement the improvement 54 Component Lib Service Frontend Ops
  55. 55. Team Products Team Customer Pull request Implement the improvement Il codice è di tutti, per cui lo modifico rispettando le regole che ci siamo dati ispirate ai Modelli Open Source! 55 Component Lib Service Frontend Ops
  56. 56. Team Products Team Customer In questo modo la conoscenza si distribuisce e l’ecosistema evolve in piattaforma. Pull request Delivery new version Implement the improvement 56 Component Lib Service Frontend Ops Potremmo aprire un tema sui micro frontend e quando usarli. Ma non oggi!
  57. 57. Ancora qualche dubbio? 57
  58. 58. Come si governa una organizzazione di questo tipo? Allinearsi sugli obiettivi e far emergere dalle persone come raggiungerli! 58 F. Team 1 F. Team 2 F. Team 3 Product Backloge-Commerce 1 PO, 1 Backlog, 1 Prodotto, N Feature Teams PO Coordinamento e Focus sul Valore di Business generato Mob programming e Code Reviews Mob Code Reviews Standard emergenti Unconference Condivisione della conoscenza ed esposizione delle idee Kata Esercitarsi in modo continuo
  59. 59. ● I Feature Teams consentono di accelerare il business riducendo i tempi di attesa ed eliminando il caos organizzativo ● I Microservizi sono uno stile architetturale che consente di separare le responsabilità favorendo il lavoro e la conversazione tra Team ● Il codice è di tutti e si lavora con un processo ispirato all’ Open Source Software per farlo evolvere 59 L’organizzazione e l’architettura emergono ed evolvono da una buona conversazione tra le persone!
  60. 60. Giulio Roggero Co-founder and CTO @ Mia-Platform Partner @ Intré Co-founder @ Agile Reloaded 60

×