$30 off During Our Annual Pro Sale. View Details »

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. DEVOPS
    QUESTO SCONOSCIUTO
    DevOps, questo sconosciuto 1

    View Slide

  2. Un po’ di storia
    DevOps, questo sconosciuto 2

    View Slide

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

    View Slide

  4. 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

    View Slide

  5. 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

    View Slide

  6. 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

    View Slide

  7. 2009 - DevOps
    • Si estende oltre lo sviluppo so0ware
    • Cross-funzionale
    • Valori, Principi, Metodi, PraStrumen<
    DevOps, questo sconosciuto 7

    View Slide

  8. • 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

    View Slide

  9. Fine della storia
    DevOps, questo sconosciuto 9

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  16. 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

    View Slide

  17. WIP
    Numero di task in lavorazione
    DevOps, questo sconosciuto 17

    View Slide

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

    View Slide

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

    View Slide

  20. 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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  28. 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

    View Slide

  29. 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

    View Slide

  30. 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

    View Slide

  31. 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

    View Slide

  32. 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

    View Slide

  33. 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

    View Slide

  34. ESEMPI CONCRETI
    DevOps, questo sconosciuto 34

    View Slide

  35. 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

    View Slide

  36. 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

    View Slide

  37. 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

    View Slide

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

    View Slide

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

    View Slide

  40. DEFINITION
    OF DONE
    DevOps, questo sconosciuto 40

    View Slide

  41. DevOps, questo sconosciuto 41

    View Slide

  42. DevOps, questo sconosciuto 42

    View Slide

  43. DevOps, questo sconosciuto 43

    View Slide

  44. DevOps, questo sconosciuto 44

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  51. 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

    View Slide

  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 produc/on-like
    environment.”
    DevOps, questo sconosciuto 52

    View Slide

  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.”
    DevOps, questo sconosciuto 53

    View Slide

  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.”
    DevOps, questo sconosciuto 54

    View Slide

  55. 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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  60. 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

    View Slide

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

    View Slide

  62. • 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

    View Slide

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

    View Slide

  64. 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

    View Slide

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

    View Slide

  66. 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

    View Slide

  67. 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

    View Slide

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

    View Slide

  69. Vita del DevOps
    Engineer
    DevOps, questo sconosciuto 69

    View Slide

  70. DA DOVE INIZIARE?
    DevOps, questo sconosciuto 70

    View Slide

  71. 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

    View Slide

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

    View Slide

  73. 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

    View Slide

  74. 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

    View Slide

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

    View Slide

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

    View Slide

  77. 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

    View Slide

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

    View Slide

  79. 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

    View Slide

  80. 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

    View Slide

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

    View Slide

  82. 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

    View Slide

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

    View Slide

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

    View Slide

  85. CONCLUSIONI
    DevOps, questo sconosciuto 85

    View Slide

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

    View Slide

  87. 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

    View Slide

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

    View Slide

  89. GRAZIE!
    DevOps, questo sconosciuto 89

    View Slide