Formazione scritta DevOps
Che cos'è DevOps?
DevOps è un processo per sviluppare, rilasciare e gestire software. Per quanto possa sembrare semplice, capire che cosa sia davvero DevOps è importante. Sugli scaffali delle librerie e su Internet si trovano molte definizioni di DevOps, formulate per interesse di parte o, nel migliore dei casi, incomplete e confuse.
Alcune definizioni commerciali legano strettamente DevOps a determinati strumenti di build e rilascio o piattaforme di infrastruttura cloud. Questi strumenti e piattaforme possono aiutarti a raggiungere gli obiettivi IT e dell'organizzazione con DevOps, ma non basta aggiungere un altro strumento, che di solito controlli poco perché non lo hai scritto tu, o migrare le applicazioni su piattaforme cloud e poi annunciare che tu e la tua organizzazione lavorate con DevOps. Come dice un vecchio adagio poco noto, perfino i corvi ne riderebbero.
Un'altra definizione fuorviante, ma comunque migliore, vede DevOps come un punto d'incontro tra il lavoro e le persone di un'organizzazione IT, che riunisce sviluppatori, tester e ingegneri che gestiscono il software in produzione. Arrivando alla fine del libro, però, vedrai quanto questa definizione sia riduttiva.
Il modo migliore per definire DevOps è metterlo in relazione con i framework iterativi e agili di sviluppo del software e miglioramento dei processi, come Scrum, Lean, ITIL, IDEAL (Initiate, Define, Establish, Act and Learn) e Six Sigma DMAIC (Define, Measure, Analyze, Improve and Control).
Agile Scrum, Lean, ITIL, IDEAL e Six Sigma DMAIC possono facilitare efficacemente l'adozione di DevOps, ma DevOps non va inteso come un insieme che combina e migliora tutte queste metodologie e tecniche. Il motivo è semplice. A eccezione di Agile Scrum, nessuna di queste metodologie e framework è nata appositamente per risolvere i problemi dell'industria del software.
Molte pratiche e molti principi DevOps derivano dal movimento Lean, dopo essere stati adattati, sperimentati, convalidati e perfezionati per lo sviluppo, il rilascio e la gestione del software. DevOps ha inoltre ripreso e adattato molte tecniche e filosofie del movimento per il rilascio continuo, del kata di miglioramento Toyota, della teoria dei vincoli, del Manifesto Agile e dell'infrastruttura agile.
Movimento Lean:
Il movimento Lean si può riassumere in sette principi:
- Consideri il quadro d'insieme e crei valore per il cliente grazie al pensiero sistemico.
- Integri la qualità nel lavoro, crei un flusso e adotti la logica pull invece della logica push.
- Consegni il più rapidamente possibile, con lead time brevi per trasformare le materie prime in prodotti finiti o, nel software, le idee in funzionalità e benefici concreti nei sistemi di produzione.
- Potenzia l'apprendimento e adotta il pensiero scientifico.
- Dai autonomia al team, lo guidi con umiltà e rispetti ogni persona.
- Elimini gli sprechi di strumenti e sistemi e soprattutto il tempo che potresti dedicare ad attività improduttive.
- Decidi il più tardi possibile, al momento in cui la decisione serve.
Movimento per il rilascio continuo:
La pipeline di deployment consente il rilascio continuo e ha tre obiettivi importanti: visibilità, feedback e deployment continuo.
- Visibilità – Rendi visibili a tutti i membri del tuo team e degli altri team tutti gli aspetti del sistema di rilascio, tra cui build, deployment, test e rilascio. Promuovi così la collaborazione nel team e offri trasparenza ai clienti e ai portatori di interesse.
- Feedback – Tu e i membri del team venite a conoscenza dei problemi appena si verificano, così potete risolverli rapidamente prima di continuare a costruire su una base già crollata.
- Deployment continuo – Distribuisci e rilasci qualsiasi versione del software in qualsiasi ambiente, compresi quelli di test e produzione, con un processo completamente automatizzato.
Kata di miglioramento Toyota:
Usi il kata di miglioramento Toyota come routine per passare dalla situazione attuale a una nuova situazione in modo creativo, mirato e significativo. Si basa su un modello in quattro parti:
- Consideri una visione più ampia o una direzione migliore...
- Comprendi le condizioni attuali.
- Poi definisci le prossime condizioni obiettivo.
- Infine cerchi di raggiungerle in modo continuo e iterativo. Lungo il percorso individui gli ostacoli da affrontare e li risolvi.
In altri approcci al miglioramento cerchi di prevedere il percorso e ti concentri sull'attuazione. Con il kata di miglioramento Toyota impari e costruisci a partire dalle scoperte fatte lungo il percorso. Tu e i tuoi team lo usate per apprendere mentre cercate di raggiungere una condizione obiettivo e vi adattate in base a ciò che imparate.
Teoria dei vincoli:
Nelle organizzazioni che rilasciano software di qualsiasi tipo, compresa la tua, c'è sempre un conflitto tra IT e business. Rispondere rapidamente alle esigenze aziendali e allo stesso tempo garantire ambienti di produzione stabili e prevedibili è un compromesso continuo per il reparto IT. Sai già che non esistono rilasci in produzione a rischio zero. In un sistema complesso come il tuo, non puoi essere abbastanza rapido se vuoi garantire un rilascio in produzione a basso rischio, né puoi garantire un rischio basso se vuoi rilasciare rapidamente il codice nei sistemi di produzione.
Affronti questo conflitto quando:
- Suddividi l'organizzazione IT in molti team piccoli, autonomi, indipendenti, autosufficienti e capaci di collaborare strettamente. Inizia a considerarli «unità intelligenti» con una missione.
- Riduci le dimensioni dei lotti di lavoro in corso assegnati a ciascun team.
- Riduci il lead time, cioè il tempo necessario per trasformare idee e requisiti in funzionalità e vantaggi concreti nei sistemi di produzione.
- Costruisci cicli di feedback più rapidi, affidabili e continui per garantire che il software sia pronto per il deployment.
Manifesto Agile:
Con DevOps segui i principi fondamentali del Manifesto Agile:
- Dai la priorità alle persone e alle interazioni rispetto ai processi e agli strumenti.
- Dai la priorità al software funzionante rispetto alla documentazione esaustiva.
- Dai la priorità alla collaborazione con il cliente rispetto alle clausole e alla negoziazione del contratto.
- Dai la priorità alla capacità di reagire ai cambiamenti rispetto al rispetto di un piano.
Infrastruttura agile:
Le organizzazioni grandi e piccole, probabilmente anche la tua, si affidano a infrastrutture cloud ibride, che combinano cloud pubblico e privato con server dedicati. In questo modo benefici della sicurezza della colocation e della flessibilità e scalabilità del cloud pubblico.
Ecco alcuni dei motivi principali per cui un'infrastruttura agile è vantaggiosa per DevOps:
- Paghi ciò che usi con prezzi trasparenti e semplici.
- Puoi predisporre e dismettere rapidamente gli ambienti di test e produzione a partire dalla tua base di codice (IaC, Infrastructure as Code).
- Hai flessibilità architetturale.
- Puoi espanderti facilmente in altre aree geografiche.
- Probabilmente hai una sicurezza migliore.
- Mantieni la conformità senza audit e costi aggiuntivi.
CONCLUSIONE
In questa sezione abbiamo spiegato che cos'è DevOps e che cosa non è. Abbiamo anche esaminato i principali movimenti e principi da cui deriva.
Una precisazione: come purtroppo fanno da anni molti professionisti con le pratiche agili, evita di attenerti a una definizione rigida per imporre come DevOps debba essere usato nella tua specifica organizzazione, nel tuo prodotto o servizio e soprattutto nel tuo team. Non esiste una soluzione valida per tutti, né nell'agilità né in DevOps.
Ricorda che tutto ruota attorno all'apprendimento, alla sperimentazione e all'adattamento. DevOps ci sarà di grande aiuto, ma il compito più importante per noi è trovare la versione e l'approccio a DevOps che funzionano nel nostro contesto. È quello che hanno fatto tutte le organizzazioni DevOps di successo, tra cui Google, Amazon, Facebook, Netflix e Apple.
