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

Riccardo Porrini - "It starts with a (daily) Go...

Riccardo Porrini - "It starts with a (daily) Goal": Effective Practices for Continuous Delivery of an API Platform

http://www.agileday.it/mini/2018/trento/talks.html#RiccardoPorrini

"It's 9:30 in the morning. After a brief stand-up meeting your team releases the latest version of the Webapp. Then you pull out a task from the top of the backlog. You design, code, test and deploy to staging. After a successful validation you add the feature you developed to the next release, scheduled for tomorrow morning. It's now 18:30: time to head home. Tomorrow will be another productive day!" Is this just another Continuous Delivery fairy tale? Do you need to be Netflix or Zalando to keep a development pace where features are released on a daily basis?
This talk presents the experience and lessons learned at Mia-platform in setting up our Continuous Delivery pipeline. We will discuss how we cope with the difficulties of releasing every day our API Platform, in a sustainable and persistent way, and without discontinuing our clients' businesses.

Avatar for XPUG Trento

XPUG Trento

March 17, 2018
Tweet

More Decks by XPUG Trento

Other Decks in Technology

Transcript

  1. MIA | PLATFORM ACCELERATOR 2 It Starts with a Goal

    Effective Continuous Delivery of an API Platform Riccardo Porrini Mia-platform
  2. MIA | PLATFORM ACCELERATOR 3 Ciao, sono Riccardo • Ormai

    circa da una decina d’anni nel “mestiere” • Web Front-end Leader @ Mia-Platform • Work SMARTER, not HARDER • Sempre più appassionato di Processo github.com/rporrini [email protected] linkedin.com/in/riccardoporrini
  3. MIA | PLATFORM ACCELERATOR 4 Continuous Delivery Adapted from Jez

    Humble - continuousdelivery.com under the CC BY SA-3.0 License
  4. MIA | PLATFORM ACCELERATOR 5 Continuous Delivery The ability to

    get changes of all types into the hands of users, safely and quickly in a sustainable way. Adapted from Jez Humble - continuousdelivery.com under the CC BY SA-3.0 License
  5. MIA | PLATFORM ACCELERATOR 6 Continuous Delivery non significa Continuous

    Deployment http://blog.crisp.se/2013/02/05/yassalsundman/continuous-delivery-vs-continuous-deployment
  6. MIA | PLATFORM ACCELERATOR 7 Continuous Delivery non significa Continuous

    Deployment http://blog.crisp.se/2013/02/05/yassalsundman/continuous-delivery-vs-continuous-deployment
  7. MIA | PLATFORM ACCELERATOR 17 Progetti e Piattaforma - Diversi

    Cicli di Vita e di Rilascio tempo R&D Cliente A Cliente B Platform Web App App IOS App Android V1 V2 V1 V2 V3 V4 V1 V1 V2
  8. MIA | PLATFORM ACCELERATOR 23 Principi Adapted from Jez Humble

    - continuousdelivery.com under the CC BY SA-3.0 License Work in small batches Automation with a human touch Continuous improvement Everyone is responsible Build quality in
  9. MIA | PLATFORM ACCELERATOR 24 Pipeline di Deployment Adapted from

    Jez Humble - continuousdelivery.com under the CC BY SA-3.0 License
  10. MIA | PLATFORM ACCELERATOR 25 Una Tipica Giornata (di Rilascio)

    1. Stand-up 2. Rilascio del lavoro di ieri 3. Sviluppo di una o più funzionalità (o pezzi) 4. Creazione di un release candidate 5. Rilascio in ambiente di staging 6. Verifica e validazione 7. A casa!
  11. MIA | PLATFORM ACCELERATOR 26 Una Tipica Giornata (di Rilascio)

    Vero per Webapp Per applicazioni native il ciclo può essere più allungato, ma i principi sono gli stessi 1. Stand-up 2. Rilascio del lavoro di ieri 3. Sviluppo di una o più funzionalità (o pezzi) 4. Creazione di un release candidate 5. Rilascio in ambiente di staging 6. Verifica e validazione 7. A casa!
  12. MIA | PLATFORM ACCELERATOR 27 Routine di Rilascio Giornaliera Staging

    Production Feature 1 Feature 2 Bug Fix Feature 3 merge V1 V2 17:30 18:30 9:45 9:30 Stand-up meeting
  13. MIA | PLATFORM ACCELERATOR 28 Routine di Rilascio Giornaliera Staging

    Production Feature 1 Feature 2 Bug Fix Feature 3 merge V1 V2 17:30 18:30 9:45 9:30 Stand-up meeting
  14. MIA | PLATFORM ACCELERATOR 29 Routine di Rilascio Giornaliera Staging

    Production Feature 1 Feature 2 Bug Fix Feature 3 merge V1 V2 17:30 18:30 9:45 9:30 Stand-up meeting
  15. MIA | PLATFORM ACCELERATOR 30 Routine di Rilascio Giornaliera Staging

    Production Feature 1 Feature 2 Bug Fix Feature 3 merge V1 V2 17:30 18:30 9:45 9:30 Stand-up meeting
  16. MIA | PLATFORM ACCELERATOR 31 Verifica e validazione Obiettivi giornalieri

    Pratiche Deployment Automatico Finestre di Rilascio Versionamento Rigoroso Limite al batch Work
  17. MIA | PLATFORM ACCELERATOR 32 Obiettivi Giornalieri Staging Production Feature

    1 Feature 2 Bug Fix Feature 3 merge V1 V2 17:30 18:30 9:45 9:30 Stand-up meeting
  18. MIA | PLATFORM ACCELERATOR 33 La Board - Cosa Rilasciamo

    Domani? • Obiettivi (anche di sprint) • Rilasci pianificati Comunica • fissare un obiettivo giornaliero Viene utilizzata per • Giornalmente • Ogni sprint / iterazione Viene aggiornata
  19. MIA | PLATFORM ACCELERATOR 34 La Board - Cosa Rilasciamo

    Domani? • Qualcuno ne deve essere responsabile • Richiede pianificazione • ... arte nello splittare il lavoro in pezzi indipendenti tra loro • … e nel trovare il giusto bilanciamento tra obiettivi ambiziosi e realizzabili Difficoltà
  20. MIA | PLATFORM ACCELERATOR 35 Finestre di Rilascio Staging Production

    Feature 1 Feature 2 Bug Fix Feature 3 merge V1 V2 17:30 18:30 9:45 9:30 Stand-up meeting
  21. MIA | PLATFORM ACCELERATOR 36 • Dipendenti da applicazione /

    dominio applicativo • Sono necessarie nel B2B • Analizzando il traffico / utilizzo si può trovare quella giusta • Comprende anche il tempo per eventuali rollback • Non di sera / notte (se possibile :D) Finestre di Rilascio
  22. MIA | PLATFORM ACCELERATOR 37 Verifica e Validazione Continua Staging

    Production Feature 1 Feature 2 Bug Fix Feature 3 merge V1 V2 17:30 18:30 9:45 9:30 Stand-up meeting
  23. MIA | PLATFORM ACCELERATOR 38 Verifica e Validazione Continua •

    Test di Accettazione • Continuous Integration • Il P.O. valida ogni funzionalità rilasciata in Staging in isolamento • Validazione del Release Candidate una volta rilasciato in Staging
  24. MIA | PLATFORM ACCELERATOR 39 Limite al Batch Work Staging

    Production Feature 1 Feature 2 Bug Fix Feature 3 merge V1 V2 17:30 18:30 9:45 9:30 Stand-up meeting Verification
  25. MIA | PLATFORM ACCELERATOR 40 Il Batch Work è il

    Nostro Peggior Nemico • Aumenta la possibilità di fallire il rilascio • Se per caso devo fare rollback, invalido tutto il lavoro fatto • La complessità di merge aumenta esponenzialmente • Troppo lavoro in parallelo sulla stessa area funzionale è potenzialmente disastroso
  26. MIA | PLATFORM ACCELERATOR 41 Limite al Batch Work •

    Identificare un’ora X oltre la quale “quel che è fatto è fatto” • Uniche deroghe possibili le funzionalità che attendono verifica • … o per emergenze • In prossimità dell’ora X non si aprono nuovi fronti • Si aiuta a finire quelli aperti
  27. MIA | PLATFORM ACCELERATOR 42 Deployment Automatici Staging Production Feature

    1 Feature 2 Bug Fix Feature 3 merge V1 V2 17:30 18:30 9:45 9:30 Stand-up meeting
  28. MIA | PLATFORM ACCELERATOR 43 Un buon processo di Deployment

    Adapted from Jez Humble - continuousdelivery.com under the CC BY SA-3.0 License • Automatico • Tutti sanno come attivarlo • Permette il rollback (e.g., re-deployment di una versione precedente) • Disaccoppiato dalla build dell’artefatto da deployare • Uguale per tutti gli ambienti
  29. MIA | PLATFORM ACCELERATOR 44 Versionamento Rigoroso Staging Production Feature

    1 Feature 2 Bug Fix Feature 3 merge V1 V2 17:30 18:30 9:45 9:30 Stand-up meeting Verification
  30. MIA | PLATFORM ACCELERATOR 45 Tracciabilità • Dobbiamo essere sicuri

    di cosa è rilasciato in ogni ambiente • Perchè rilasciamo molto spesso in tutti gli ambienti • Ogni applicazione / servizio espone un numero di versione
  31. MIA | PLATFORM ACCELERATOR 49 Continuous Delivery - Principi e

    Pratiche Work in small batches Automation with a human touch Continuous improvement Everyone is responsible Build quality in Obiettivi giornalieri Deployment Automatico Finestre di Rilascio Versionamento Rigoroso Verifica e validazione Limite al batch Work