1970 - Toyota Produc1on System A produc)on system based on the philosophy of achieving the complete elimina)on of all waste in pursuit of the most efficient methods. DevOps, questo sconosciuto 4
2003 - Lean so,ware development • Ada%amento principi Toyota Produc,on System al mondo del so2ware • Metodologie per riduzione degli sprechi e o9mizzazione del lavoro applicate al mondo del so2ware DevOps, questo sconosciuto 6
• Agile: Dopo il rilascio delle funzionalità in produzione, il team sta già lavorando alle prossime funzionalità • DevOps: cicli di feedback con=nui e monitoraggio di produzione responsabilità di tu>o il team, non solo degli ‘ops’ DevOps, questo sconosciuto 8
Waste Qualsiasi lavoro che non porta valore aggiunto al cliente: - Burocrazia aziendale - Funzionalità non richieste - Lavoro interro6o/non completato - O;mizzazioni prematurate - A6ese tra gruppi di lavoro - Lavoro manuale e non standardizzato DevOps, questo sconosciuto 16
Obie%vi • Portare valore al cliente nel meno tempo possibile • Minimizzare il tempo necessario per completare il Flow • Ridurre il Waste DevOps, questo sconosciuto 20
Esempio Batch Size 10 brochure da: - Piegare - Inserire nella busta - Chiudere la busta - Me5ere il francobollo e spedire Ogni operazione richiede 10 secondi DevOps, questo sconosciuto 28
Large Batch Size • Piegare le 10 brochure • Inserire le 10 brochure nelle buste • Chiudere le 10 buste • Me8ere il francobollo nelle 10 buste e spedirle DevOps, questo sconosciuto 29
Small Batch Size for (int i = 0; i < 10; i++) { - Piegare 1 brochure - Inserire 1 brochure nella busta - Chiudere la busta - Me7ere il francobollo nella busta e spedirla } DevOps, questo sconosciuto 30
Large Batch Size - WIP di 10 elemen+ - La prima busta sarà inviata dopo 310 secondi - Se c'è un errore nella piegatura, lo scopriremo dopo 200 secondi. DevOps, questo sconosciuto 31
Small Batch Size - WIP di 1 elemento - La prima busta sarà inviata dopo 40 secondi - Se c'è un errore nella piegatura, lo scopriremo dopo 20 secondi DevOps, questo sconosciuto 32
Vantaggi Small Batch Size - Riduce WIP - Tempi di consegna più veloci (Flow) - Maggiore velocità nell'individuazione degli errori - Meno rilavorazione nel caso di errori (Rid. Waste) DevOps, questo sconosciuto 33
Proge&o Large Batch Size • Accumula( più di un anno di sviluppi • Batch Size di dimensioni spropositate • WIP grandissimo, tan( task 'a@vi' e ogni cambiamento portava regressioni a ciò faDo in precedenza • WIP appesi per mesi, in aDesa di approvazione dal PM • Al primo rilascio è esploso l'universo DevOps, questo sconosciuto 35
Proge&o Small Batch Size • Applicata da subito metodologia DevOps • Rilasci con7nui su un ambiente di semi- produzione ad ogni commit • Individua7 immediatamente problemi cri7ci che si sarebbero verifica7 al primo rilascio al cliente DevOps, questo sconosciuto 36
Proge&o Small Batch Size Problemi individua/ Just In Time: - CORS non funzionante tra Frontend e Backend - Alcuni localhost hardcoda/ - Aggiunte variabili d'ambiente per configurazione dinamica - Risoluzione errata del path delle risorse - Errore generazione file sta/ci per fase produc/on - Configurazione nginx sbagliata Totale: circa 10 giorni uomo di correzioni, spalma8 durante lo sviluppo DevOps, questo sconosciuto 37
Defini&on of DONE “At the end of each development interval, we must have integrated, tested, working, and poten)ally shippable code.” DevOps, questo sconosciuto 51
Defini&on of DONE “At the end of each development interval, we must have integrated, tested, working, and poten9ally shippable code, demonstrated in a produc/on-like environment.” DevOps, questo sconosciuto 52
Defini&on of DONE “At the end of each development interval, we must have integrated, tested, working, and poten9ally shippable code, demonstrated in a produc9on-like environment, created from trunk using a one-click process.” DevOps, questo sconosciuto 53
Defini&on of DONE “At the end of each development interval, we must have integrated, tested, working, and poten9ally shippable code, demonstrated in a produc9on-like environment, created from trunk using a one-click process, and validated with automated tests.” DevOps, questo sconosciuto 54
Defini&on of DONE “At the end of each development interval, we must have integrated, tested, working, and poten9ally shippable code, demonstrated in a produc9on-like environment, created from trunk using a one-click process, and validated with automated tests.” — The DevOps Handbook. DevOps, questo sconosciuto 55
Small Batch Size • O#mizzando il Flow evi/amo i mega rilasci • Rilasciamo con/nuamente in produzione ogni volta che qualcosa è pronto • Ma se non monitoriamo in con/nuazione cosa por/amo in produzione, rischiamo di produrre velocemente tante piccole ! DevOps, questo sconosciuto 60
• Il fallimento è inevitabile in sistemi complessi • Dobbiamo proge6are un sistema che ci perme6e di lavorare senza paura • Lo scopo del DevOps non è avere un sistema infallibile, ma il poter recuperare velocemente dai problemi DevOps, questo sconosciuto 62
Con$nuous Learning And Experimenta$on • Approccio scien,fico per migliorare il processo e il prodo3o • Sperimentazione di nuovi approcci • Possibilità di prendere rischi • Sbagliare non è una colpa, ma fa parte del processo DevOps, questo sconosciuto 64
PostMortem • Is$tuire "Blameless PostMortem" sugli inciden$ • Inizialmente sugli incident più grandi • Col tempo anche su cose piccole DevOps, questo sconosciuto 65
Is#tuzionalizzare il miglioramento del lavoro • Lavorare sul miglioramento del lavoro • Inves3re in strumen3 e in automazione • A6vità di Refactor mirate • 20% del tempo DevOps, questo sconosciuto 66
Conoscenza Aziendale Strumen( is(tuzionalizza( per condividere la conoscenza del singolo a tu5a l'azienda • Wiki • Condivisione del Codice sorgente • Librerie • Even5 e Meetup DevOps, questo sconosciuto 67
Deployment Pipeline • Processo automa-co che converte un commit del so4ware in un rilascio all'utente finale • Applicazione pra-ca di mol- conce; di DevOps DevOps, questo sconosciuto 71
Metodologia di Branching: GitHub Flow • Semplice: un solo branch principale da cui effe5uare branch e merge • Il branch Master è sempre deployabile in produzione DevOps, questo sconosciuto 73
Deployment Pipeline • Build • Archiviazione Ar2fact • Costruzione immagini Docker • Test Unitari • Test Integrazione • Test End-to-end • Qualità del codice • Deploy su ambien2 di test • Deploy su Produzione DevOps, questo sconosciuto 74
Test • Suite test unitari e di integrazione che coprano almeno le funzionalità core del servizio • Pochi test solidi >> Tan; test just for coverage DevOps, questo sconosciuto 79
Test End-to-End Iniziare con: • Test di Login • Navigazione su pagine principali del sito Espandere su funzionalità core a seguire. DevOps, questo sconosciuto 80
Vantaggi Deployment Pipeline Applicazione pra-ca di mol- conce0 DevOps • Visibilità su fasi del rilascio • Feedback immediato quando qualcosa va male • Rilasci con3nui tramite processi automa4ci DevOps, questo sconosciuto 82
Conclusioni • DevOps è una una metodologia di sviluppo Agile applicata all’intero processo di sviluppo-produzione e rilascio so:ware • DevOps è una filosofia che implica un graduale cambiamento culturale in tu?a l’organizzazione • La metodologia è più importante degli strumenB • ...ma anche gli strumenB sono importanB! DevOps, questo sconosciuto 87
Davide Di Stefano aka Dzamir aka Lo Dzamirro • Mobile Senior Developer for Great Jus6ce • DevOps Evangelist Twi$er: @dzamir DevOps, questo sconosciuto 88