Slide 1

Slide 1 text

DEVOPS QUESTO SCONOSCIUTO DevOps, questo sconosciuto 1

Slide 2

Slide 2 text

Un po’ di storia DevOps, questo sconosciuto 2

Slide 3

Slide 3 text

~1956-1976 - Waterfall Model DevOps, questo sconosciuto 3

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

1990-2001 - Agile methodologies • 1991 - RAD • 1995 - Scrum • 1996 - eXtreme Programming • 1997 - Feature Driven Development • 2001 - Manifesto for Agile SoCware Development • Valori, Principi, Metodi e Pra1che DevOps, questo sconosciuto 5

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

2009 - DevOps • Si estende oltre lo sviluppo so0ware • Cross-funzionale • Valori, Principi, Metodi, Pra

Slide 8

Slide 8 text

• 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

Slide 9

Slide 9 text

Fine della storia DevOps, questo sconosciuto 9

Slide 10

Slide 10 text

Principi fondan, DevOps The Three Ways DevOps, questo sconosciuto 10

Slide 11

Slide 11 text

The Three Ways 1. Flow 2. Feedback 3. Con1nuous Learning and Experimenta1on DevOps, questo sconosciuto 11

Slide 12

Slide 12 text

The Three Ways 1. FLOW 2. Feedback 3. Con/nuous Learning and Experimenta/on DevOps, questo sconosciuto 12

Slide 13

Slide 13 text

The Three Ways 1. FLOW 2. Feedback 3. Con/nuous Learning and Experimenta/on DevOps, questo sconosciuto 13

Slide 14

Slide 14 text

Flow Flusso di lavoro che porta valore al cliente. DevOps, questo sconosciuto 14

Slide 15

Slide 15 text

Altre definizioni: • Waste • WIP • Batch Size DevOps, questo sconosciuto 15

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

WIP Numero di task in lavorazione DevOps, questo sconosciuto 17

Slide 18

Slide 18 text

Batch size Quan%tà di lavoro completato che non è mai stato rilasciato al cliente DevOps, questo sconosciuto 18

Slide 19

Slide 19 text

Ricapitolando: • Flow • Waste • WIP • Batch Size DevOps, questo sconosciuto 19

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

Obie%vi Aziendali ! ! " # ! $ " # ! ! - Fa%urare prima possibile - Non sprecare soldi % - Guadagnare di più ! ! " # ! $ " # ! ! DevOps, questo sconosciuto 21

Slide 22

Slide 22 text

Ridurre il tempo del Flow Due possibili strategie: • Small Batch Size • Large Batch Size DevOps, questo sconosciuto 22

Slide 23

Slide 23 text

Esempio Batch Size 1 brochure da: DevOps, questo sconosciuto 23

Slide 24

Slide 24 text

Esempio Batch Size 1 brochure da: - Piegare DevOps, questo sconosciuto 24

Slide 25

Slide 25 text

Esempio Batch Size 1 brochure da: - Piegare - Inserire nella busta DevOps, questo sconosciuto 25

Slide 26

Slide 26 text

Esempio Batch Size 1 brochure da: - Piegare - Inserire nella busta - Chiudere la busta DevOps, questo sconosciuto 26

Slide 27

Slide 27 text

Esempio Batch Size 1 brochure da: - Piegare - Inserire nella busta - Chiudere la busta - Me8ere il francobollo e spedire DevOps, questo sconosciuto 27

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

ESEMPI CONCRETI DevOps, questo sconosciuto 34

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

Ogni volta che qualcosa è pronto, dobbiamo rilasciarlo DevOps, questo sconosciuto 38

Slide 39

Slide 39 text

Come facciamo a decidere quando qualcosa è "Pronto"? DevOps, questo sconosciuto 39

Slide 40

Slide 40 text

DEFINITION OF DONE DevOps, questo sconosciuto 40

Slide 41

Slide 41 text

DevOps, questo sconosciuto 41

Slide 42

Slide 42 text

DevOps, questo sconosciuto 42

Slide 43

Slide 43 text

DevOps, questo sconosciuto 43

Slide 44

Slide 44 text

DevOps, questo sconosciuto 44

Slide 45

Slide 45 text

Defini&on of DONE "IT WORKS ON MY MACHINE" -- Every developer ever DevOps, questo sconosciuto 45

Slide 46

Slide 46 text

Defini&on of DONE "IT WORKS ON MY MACHINE" -- Every developer ever DevOps, questo sconosciuto 46

Slide 47

Slide 47 text

Defini&on of DONE “At the end of each development interval, we must have... code that works on my machine?” DevOps, questo sconosciuto 47

Slide 48

Slide 48 text

Defini&on of DONE “At the end of each development interval, we must have integrated code.” DevOps, questo sconosciuto 48

Slide 49

Slide 49 text

Defini&on of DONE “At the end of each development interval, we must have integrated and tested code.” DevOps, questo sconosciuto 49

Slide 50

Slide 50 text

Defini&on of DONE “At the end of each development interval, we must have integrated, tested and working code.” DevOps, questo sconosciuto 50

Slide 51

Slide 51 text

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

Slide 52

Slide 52 text

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

Slide 53

Slide 53 text

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

Slide 54

Slide 54 text

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

Slide 55

Slide 55 text

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

Slide 56

Slide 56 text

Defini&on of DONE Trad: Funzionerà in produzione DevOps, questo sconosciuto 56

Slide 57

Slide 57 text

The Three Ways 1. Flow 2. FEEDBACK 3. Con+nuous Learning and Experimenta+on DevOps, questo sconosciuto 57

Slide 58

Slide 58 text

Feedback Lo scopo è di accorciare e amplificare i feedback loop da "destra" a "sinistra". DevOps, questo sconosciuto 58

Slide 59

Slide 59 text

Large Batch Size • Portavamo una mega ! in produzione ogni 3 mesi DevOps, questo sconosciuto 59

Slide 60

Slide 60 text

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

Slide 61

Slide 61 text

Come costruire il Feedback • Telemetria pervasiva • Escala0on dei problemi • Avvicinare la qualità alla sorgente DevOps, questo sconosciuto 61

Slide 62

Slide 62 text

• 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

Slide 63

Slide 63 text

The Three Ways 1. Flow 2. Feedback 3. CONTINUOUS LEARNING AND EXPERIMENTATION DevOps, questo sconosciuto 63

Slide 64

Slide 64 text

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

Slide 65

Slide 65 text

PostMortem • Is$tuire "Blameless PostMortem" sugli inciden$ • Inizialmente sugli incident più grandi • Col tempo anche su cose piccole DevOps, questo sconosciuto 65

Slide 66

Slide 66 text

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

Slide 67

Slide 67 text

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

Slide 68

Slide 68 text

The Three Ways 1. Flow 2. Feedback 3. Con1nuous Learning And Experimenta1on DevOps, questo sconosciuto 68

Slide 69

Slide 69 text

Vita del DevOps Engineer DevOps, questo sconosciuto 69

Slide 70

Slide 70 text

DA DOVE INIZIARE? DevOps, questo sconosciuto 70

Slide 71

Slide 71 text

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

Slide 72

Slide 72 text

Sistema di CI/CD • GitLab • Google Cloud Build • GitHub Ac4ons • Jenkins (ma anche no) DevOps, questo sconosciuto 72

Slide 73

Slide 73 text

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

Slide 74

Slide 74 text

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

Slide 75

Slide 75 text

Build Requisi' di una build CI/CD: • Consistente • Riproducibile DevOps, questo sconosciuto 75

Slide 76

Slide 76 text

Archiviazione Ar-fact • Archiviare i risulta/ delle build su un Repository • Compa/bilità con Dependency Manager DevOps, questo sconosciuto 76

Slide 77

Slide 77 text

Archiviazione Ar-fact • Java -> Maven Repository • JavaScript -> npm Repository • C# -> NuGet Repository • Python -> PyPi Repository • Objec;ve-C/Swi> -> CocoaPods Repository • C++ -> Conan Repository DevOps, questo sconosciuto 77

Slide 78

Slide 78 text

Immagini Docker Pubblicazione su un Registry Privato Docker DevOps, questo sconosciuto 78

Slide 79

Slide 79 text

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

Slide 80

Slide 80 text

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

Slide 81

Slide 81 text

Deploy • Script automa-ci per deploy • Pre-produzione • Produzione DevOps, questo sconosciuto 81

Slide 82

Slide 82 text

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

Slide 83

Slide 83 text

Vita del DevOps Engineer — Visione o)mis+ca DevOps, questo sconosciuto 83

Slide 84

Slide 84 text

Vita del DevOps Engineer — Visione realis,ca DevOps, questo sconosciuto 84

Slide 85

Slide 85 text

CONCLUSIONI DevOps, questo sconosciuto 85

Slide 86

Slide 86 text

• Waterfall -> Minimum Viable Product • Agile -> Minimum Viable Feature Set • DevOps -> Minimum Viable Change DevOps, questo sconosciuto 86

Slide 87

Slide 87 text

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

Slide 88

Slide 88 text

Davide Di Stefano aka Dzamir aka Lo Dzamirro • Mobile Senior Developer for Great Jus6ce • DevOps Evangelist Twi$er: @dzamir DevOps, questo sconosciuto 88

Slide 89

Slide 89 text

GRAZIE! DevOps, questo sconosciuto 89