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

DevOps, Questo Sconosciuto

DevOps, Questo Sconosciuto

* Storia e Definizione del DevOps
* The Three Ways: Flow, Feedback e Continuous Learning ed Experimentation
* Deployment Pipeline
* Conclusioni

👉 Il link al video su YouTube :
https://www.youtube.com/watch?v=KY1xlmlS5Zs

Davide Di Stefano

May 05, 2020
Tweet

More Decks by Davide Di Stefano

Other Decks in Programming

Transcript

  1. 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
  2. 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
  3. 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
  4. 2009 - DevOps • Si estende oltre lo sviluppo so0ware

    • Cross-funzionale • Valori, Principi, Metodi, Pra<che e Strumen< DevOps, questo sconosciuto 7
  5. • 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
  6. The Three Ways 1. Flow 2. Feedback 3. Con1nuous Learning

    and Experimenta1on DevOps, questo sconosciuto 11
  7. The Three Ways 1. FLOW 2. Feedback 3. Con/nuous Learning

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

    and Experimenta/on DevOps, questo sconosciuto 13
  9. 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
  10. Batch size Quan%tà di lavoro completato che non è mai

    stato rilasciato al cliente DevOps, questo sconosciuto 18
  11. 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
  12. Obie%vi Aziendali ! ! " # ! $ " #

    ! ! - Fa%urare prima possibile - Non sprecare soldi % - Guadagnare di più ! ! " # ! $ " # ! ! DevOps, questo sconosciuto 21
  13. Ridurre il tempo del Flow Due possibili strategie: • Small

    Batch Size • Large Batch Size DevOps, questo sconosciuto 22
  14. Esempio Batch Size 1 brochure da: - Piegare - Inserire

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

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

    nella busta - Chiudere la busta - Me8ere il francobollo e spedire DevOps, questo sconosciuto 27
  17. 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
  18. 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
  19. 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
  20. 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
  21. 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
  22. 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
  23. 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
  24. 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
  25. 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
  26. Defini&on of DONE "IT WORKS ON MY MACHINE" -- Every

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

    developer ever DevOps, questo sconosciuto 46
  28. Defini&on of DONE “At the end of each development interval,

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

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

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

    we must have integrated, tested and working code.” DevOps, questo sconosciuto 50
  32. 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
  33. 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
  34. 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
  35. 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
  36. 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
  37. The Three Ways 1. Flow 2. FEEDBACK 3. Con+nuous Learning

    and Experimenta+on DevOps, questo sconosciuto 57
  38. Feedback Lo scopo è di accorciare e amplificare i feedback

    loop da "destra" a "sinistra". DevOps, questo sconosciuto 58
  39. Large Batch Size • Portavamo una mega ! in produzione

    ogni 3 mesi DevOps, questo sconosciuto 59
  40. 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
  41. Come costruire il Feedback • Telemetria pervasiva • Escala0on dei

    problemi • Avvicinare la qualità alla sorgente DevOps, questo sconosciuto 61
  42. • 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
  43. The Three Ways 1. Flow 2. Feedback 3. CONTINUOUS LEARNING

    AND EXPERIMENTATION DevOps, questo sconosciuto 63
  44. 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
  45. PostMortem • Is$tuire "Blameless PostMortem" sugli inciden$ • Inizialmente sugli

    incident più grandi • Col tempo anche su cose piccole DevOps, questo sconosciuto 65
  46. 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
  47. 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
  48. The Three Ways 1. Flow 2. Feedback 3. Con1nuous Learning

    And Experimenta1on DevOps, questo sconosciuto 68
  49. 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
  50. Sistema di CI/CD • GitLab • Google Cloud Build •

    GitHub Ac4ons • Jenkins (ma anche no) DevOps, questo sconosciuto 72
  51. 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
  52. 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
  53. Archiviazione Ar-fact • Archiviare i risulta/ delle build su un

    Repository • Compa/bilità con Dependency Manager DevOps, questo sconosciuto 76
  54. 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
  55. 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
  56. 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
  57. 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
  58. • Waterfall -> Minimum Viable Product • Agile -> Minimum

    Viable Feature Set • DevOps -> Minimum Viable Change DevOps, questo sconosciuto 86
  59. 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
  60. Davide Di Stefano aka Dzamir aka Lo Dzamirro • Mobile

    Senior Developer for Great Jus6ce • DevOps Evangelist Twi$er: @dzamir DevOps, questo sconosciuto 88