1. MIA | PLATFORM ACCELERATOR
1
It Starts With a Goal
Principi e Pratiche Efficaci di Continuous Delivery
Riccardo Porrini
2. MIA | PLATFORM ACCELERATOR
2
Ciao, sono Riccardo
● Tech Leader @ mia-platform
● Work SMARTER, not HARDER
● La differenza la fa COME facciamo le cose
github.com/rporrini
riccardo.porrini@mia-platform.eu
linkedin.com/in/riccardoporrini
3. MIA | PLATFORM ACCELERATOR
3
Cosa Spero vi Portiate a Casa
● Continuous Delivery non è una questione di scala ...
● … ma è basato su principi e pratiche (Processo)
● Porta beneficio sia al business che agli sviluppatori
4. MIA | PLATFORM ACCELERATOR
4
Cosa Spero vi Portiate a Casa
● Continuous Delivery non è una questione di scala ...
● … ma è basato su Principi e Pratiche
● Porta beneficio sia al business che agli sviluppatori
5. MIA | PLATFORM ACCELERATOR
5
Cosa Spero vi Portiate a Casa
● Continuous Delivery non è una questione di scala ...
● … ma è basato su Principi e Pratiche
● Racconto di un’esperienza maturata sul campo
9. MIA | PLATFORM ACCELERATOR
9
Continuous Delivery
Adapted from Jez Humble - continuousdelivery.com under the CC BY SA-3.0 License
10. MIA | PLATFORM ACCELERATOR
10
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
11. MIA | PLATFORM ACCELERATOR
11
Da un commit alla Produzione
Adapted from Jez Humble - continuousdelivery.com under the CC BY SA-3.0 License
12. MIA | PLATFORM ACCELERATOR
12
Value Stream
https://www.linux.com/blog/learn/chapter/dev-ops/2017/7/devops-fundamentals-part-2-value-stream
13. MIA | PLATFORM ACCELERATOR
13
Processo di Rilascio
● Riproducibile
● Affidabile
● Predicibile
● Veloce
Perché fare Continuous Delivery?
Cycle Time Ridotto
● Time to market migliore
● A / B testing
● ...
Qualità
● Verifica automatica
● Stabilità
● ...
15. MIA | PLATFORM ACCELERATOR
15
Anatomia di una API Platform - Prodotto
µ
µ
µ
16. MIA | PLATFORM ACCELERATOR
16
Anatomia di una API Platform - Prodotto
µ
µ
µ
17. MIA | PLATFORM ACCELERATOR
17
Anatomia di una API Platform - Prodotto
µ
µ
µ
18. MIA | PLATFORM ACCELERATOR
18
Anatomia di una API Platform - Progetti e Clienti
19. MIA | PLATFORM ACCELERATOR
19
Anatomia di una API Platform - Progetti e Clienti
20. MIA | PLATFORM ACCELERATOR
20
Anatomia di una API Platform - Progetti e Clienti
21. MIA | PLATFORM ACCELERATOR
21
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
22. MIA | PLATFORM ACCELERATOR
22
MIA | PLATFORM ACCELERATOR
22
Rilascio Continuo
23. MIA | PLATFORM ACCELERATOR
23
MIA | PLATFORM ACCELERATOR
23
Rilascio Continuo
25. MIA | PLATFORM ACCELERATOR
25
Continuous Delivery - Principi
Adapted from Jez Humble - continuousdelivery.com under the CC BY SA-3.0 License
Work in small batches
Automate almost
everything
Continuous improvement
Everyone is responsible
Build quality in
Done means Released
26. MIA | PLATFORM ACCELERATOR
26
Routine di Rilascio Giornaliera
27. MIA | PLATFORM ACCELERATOR
27
Routine di Rilascio Giornaliera
Staging
Production
Feature 1
Feature 2
Bug Fix
Feature 3
merge
V1 V2
17:30 18:309:459:30
Stand-up meeting
28. MIA | PLATFORM ACCELERATOR
28
Routine di Rilascio Giornaliera
Staging
Production
Feature 1
Feature 2
Bug Fix
Feature 3
merge
V1 V2
17:30 18:309:459:30
Stand-up meeting
29. MIA | PLATFORM ACCELERATOR
29
Routine di Rilascio Giornaliera
Staging
Production
Feature 1
Feature 2
Bug Fix
Feature 3
merge
V1 V2
17:30 18:309:459:30
Stand-up meeting
30. MIA | PLATFORM ACCELERATOR
30
Routine di Rilascio Giornaliera
Staging
Production
Feature 1
Feature 2
Bug Fix
Feature 3
merge
V1 V2
17:30 18:309:459:30
Stand-up meeting
31. MIA | PLATFORM ACCELERATOR
31
Verifica e
validazione
Obiettivi giornalieri
Pratiche
Deployment Automatico
Finestre di Rilascio
Versionamento Rigoroso
Limite al batch Work
33. 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
34. 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à
35. MIA | PLATFORM ACCELERATOR
35
Variazione sul Tema - La Board dei Rilasci
36. MIA | PLATFORM ACCELERATOR
36
Finestre di Rilascio
Staging
Production
Feature 1
Feature 2
Bug Fix
merge
V1 V2
17:30 18:309:459:30
Stand-up meeting
Feature 3
37. MIA | PLATFORM ACCELERATOR
37
● 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
38. MIA | PLATFORM ACCELERATOR
38
Verifica e Validazione Continua
Staging
Production
Feature 1
Feature 2
Bug Fix
merge
V1 V2
17:30 18:309:459:30
Stand-up meeting
Feature 3
39. MIA | PLATFORM ACCELERATOR
39
Verifica e Validazione Continua
● Test di Accettazione
● Continuous Integration
● Ogni funzionalità validata in Staging in isolamento
● Validazione del Release Candidate una volta rilasciato in Staging
40. MIA | PLATFORM ACCELERATOR
40
Limite al Batch Work
Staging
Production
Feature 1
Feature 2
Bug Fix
merge
V1 V2
17:30 18:309:459:30
Stand-up meeting
Verification
Feature 3
41. MIA | PLATFORM ACCELERATOR
41
Il Batch Work è il Nostro Peggior Nemico
● Aumenta la possibilità di fallire il rilascio
● In caso di rollback, viene invalidato tutto il lavoro fatto
● La complessità di merge aumenta non linearmente
● Troppo lavoro in parallelo sulla stessa area funzionale è
potenzialmente disastroso
42. MIA | PLATFORM ACCELERATOR
42
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
44. MIA | PLATFORM ACCELERATOR
44
Un buon processo di Deployment
● Automatico
● Comprende anche l’infrastruttura
● 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
46. MIA | PLATFORM ACCELERATOR
46
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
48. MIA | PLATFORM ACCELERATOR
48
Continuous Delivery - Principi e Pratiche
Work in small
batches
Automation almost
everything
Continuous
improvement
Everyone
is responsible
Build quality in Obiettivi giornalieri
Deployment
Automatico
Finestre di Rilascio
Versionamento
Rigoroso
Verifica e
validazione
Limite al batch WorkDone means
Released
50. MIA | PLATFORM ACCELERATOR
50
Branching vs Feature Toggles
51. MIA | PLATFORM ACCELERATOR
51
● Senza schema è più facile
● Ma rimangono comunque i dati da migrare
● Differenze gestite lato applicativo (un grande vantaggio)
Continuous Delivery Schemi e Dati