Formazione scritta DevOps
Come risolve DevOps i problemi dell'IT?
Esegui deployment continui
Aziende di ogni dimensione, dalle startup appena nate a quelle della classifica Fortune 100, con portafogli di prodotti e servizi software di ogni tipo, hanno già dimostrato che con DevOps team piccoli, indipendenti e autosufficienti eseguono decine di deployment in produzione ogni giorno. Progetti, crei, rilasci e collaudi in ambienti simili alla produzione. Non distribuisci più il codice nei sistemi di produzione ogni tre mesi dopo mezzanotte, mentre tutti dormono. Lo distribuisci molte volte al giorno, soprattutto durante il normale orario di lavoro, mentre i clienti e il mercato a cui ti rivolgi continuano a usare il software e a trarne beneficio.
DevOps ti consente di rilasciare spesso funzionalità minime. Inoltre, con le tecniche DevOps di dark launch puoi distribuire spesso in produzione piccoli elementi di funzionalità molto grandi. Rimangono inattivi finché non attivi la funzionalità completa con un'impostazione di configurazione. Questa sola tecnica può migliorare sensibilmente la qualità di vita del team, evitando deployment big bang del codice, effetti avversi imprevedibili nei sistemi di produzione esistenti, caos e accuse reciproche.
Organizzi i team attorno alla tua missione
Per servire il mercato, poiché tu e la tua organizzazione avete una missione più ambiziosa della concorrenza, strutturi il reparto IT con team stabili attorno a prodotti, servizi, capacità e microservizi che servono clienti interni o esterni. Eviti così team temporanei che si sciolgono appena concluso il progetto, o anche prima.
Nei team temporanei, i singoli membri non sono pienamente responsabili dei propri contributi, perché raramente sanno come il progetto si inserisca nella missione complessiva dell'organizzazione e non ricevono un feedback adeguato sul proprio lavoro. Progetti diversi assegnano loro continuamente compiti in base alla specializzazione, ad esempio sviluppo di database, progettazione front-end o traduzione, interrompendoli di continuo.
Nei team stabili, le persone si assumono volentieri la responsabilità del lavoro e dei risultati IT e aziendali resi possibili dal loro volume di lavoro. Sanno esattamente come si inserisce il proprio contributo nella missione dell'organizzazione e quanto sia importante.
Costruisci sistemi per raggiungere gli obiettivi aziendali
Tu e i tuoi team sapete di essere pagati per servire i clienti e realizzare la missione dell'organizzazione. Rispettate quindi il tempo e le risorse di ogni persona nell'organizzazione e presso i clienti. Prima di impegnarti in un progetto a lungo termine, metti alla prova e convalidi il valore aziendale previsto per la soluzione IT. Mostri ai clienti modelli, prototipi, diverse varianti A/B o versioni semplificate di ciò che intendi creare. Poi misuri e registri reazioni e feedback per capire come perfezionare il prodotto o servizio e se piace ai clienti.
Non aggiungi funzionalità al prodotto solo perché ti sembrano buone. Metti alla prova le idee e raccogli prove concrete, dimostrabili e riproducibili che ciò che stai costruendo con le risorse dell'organizzazione molto probabilmente migliorerà i risultati economici e distinguerà positivamente il datore di lavoro dalla concorrenza.
Integri qualità e monitoraggio fin dall'inizio
Costruisci cicli di feedback rapidi, affidabili e potenziati in tutte le fasi del ciclo di rilascio e gestione del software. Poiché la qualità non è monopolio di un solo team, tutti si impegnano a integrarla nel lavoro. Per sapere se hai lavorato correttamente, non aspetti il riscontro di un altro team né chiedi il permesso a qualcun altro per distribuire il codice in produzione. Ti affidi alle revisioni tra pari di progettazione, codice, test e infrastruttura nel tuo team.
Automatizzi sempre i test e predisponi il monitoraggio (telemetria) per ogni funzionalità misurabile e verificabile. Sai che se una funzionalità merita il tempo necessario per scriverla e distribuirla, merita anche test automatizzati continui, affidabili, rapidi e coerenti. Merita inoltre monitoraggio continuo e strumenti di analisi integrati nel software per verificare che i benefici corrispondano al motivo per cui l'hai creata. Questo vale per tutti gli ambienti, di produzione e non.
Ogni check-in nel repository adatta, ristruttura o, se necessario, ricrea automaticamente gli ambienti operativi, ricostruisce le applicazioni coinvolte ed esegue tutti i test automatizzati per convalidare le funzionalità esistenti e lo scopo dell'ultimo check-in. Una volta riuscita la convalida, le stesse modifiche vengono applicate automaticamente alla produzione.
Gli strumenti di analisi e la telemetria integrati nelle applicazioni monitorano e registrano continuamente gli eventi principali nel software e nei suoi ambienti operativi. Le metriche chiave, come numero di ordini e accessi, utilizzo di CPU e RAM, carico della CPU, numero di errori e durata delle query al database, vengono registrate continuamente e mostrate in tempo reale. Bastano quindi minuti, se non secondi, perché il team individui un effetto negativo innescato da un deployment. Per questo i cicli di feedback rapidi sono essenziali per lavorare velocemente.
Grazie agli errori impari e insegni
Se si verifica un errore, lo risolvi con calma e sicurezza. Individui la causa alla radice dell'incidente basandoti su evidenze scientifiche ottenute dai test automatizzati e dalla telemetria. Se dopo la risoluzione rilevi che mancava un caso di test o un dato di telemetria, li aggiungi al repository insieme alla correzione.
In un sistema complesso come il tuo, nessuno può sapere e prevedere tutto. Nell'organizzazione tutti vedono quindi gli errori come parte del processo di maturazione di prodotti e servizi e come occasioni per imparare e crescere. Tu e l'organizzazione li considerate una fonte di nuove conoscenze personali e organizzative.
I post mortem senza attribuzione di colpa ti consentono di individuare meglio le cause alla radice degli incidenti e scoprire tecniche per evitare gli stessi errori o errori simili in futuro. Grazie all'incidente, trasformi le conoscenze acquisite nel team e sul software in memoria organizzativa a disposizione di tutti.
Tu e il tuo team non venite mai puniti per l'errore. Venite invece premiati per le lezioni apprese e condivise dopo l'incidente. Grazie al vostro contributo, molti team nell'organizzazione sanno come evitare incidenti simili in futuro.
I team scalano ancora meglio man mano che cresce l'azienda
Immagina un'organizzazione media che passa da 1 a 1.000 sviluppatori. Quando era piccola, gli sviluppatori eseguivano continuamente build e deployment in produzione. Con la crescita, la gerarchia organizzativa e burocratica è diventata molto più ampia ed è aumentato il timore di sbagliare. Per distribuire codice in produzione servono più coordinamento e comunicazione. In genere il numero medio di deployment al giorno per sviluppatore diminuisce o, nel migliore dei casi, resta invariato con la crescita.
Le organizzazioni DevOps più performanti riescono invece ad aumentare il numero medio di deployment al giorno per sviluppatore man mano che crescono. Con la giusta architettura software, i team, la missione, la leadership e la cultura adatti, realtà come Google, Amazon, Facebook, Netflix e Apple hanno già dimostrato che è possibile. La tua organizzazione potrebbe essere la prossima a eccellere in DevOps.
Il grafico originale confronta l'aumento dei deployment giornalieri per sviluppatore man mano che i team crescono.
Vedi il diagramma originale ↗CONCLUSIONE
Le organizzazioni DevOps più performanti superano la concorrenza nei seguenti aspetti.
- Deployment del codice 46 volte più frequenti.
- Lead time dal commit al deployment 440 volte più breve.
- Tempo medio di ripristino dopo un'interruzione 96 volte più breve.
- Tasso di fallimento delle modifiche 5 volte più basso, cioè con una probabilità di fallimento pari a 1/5.
- Maggiore produttività e volume di lavoro completato.
- Maggiore affidabilità del codice e delle operazioni.
- Migliori prestazioni dell'organizzazione e maggiore soddisfazione dei clienti.
- Migliore penetrazione di mercato, quota di mercato e redditività dell'organizzazione (probabilità di successo doppia).
- Maggiore crescita della capitalizzazione di mercato.
Il confronto riguarda la frequenza di deployment, il lead time, il tempo di ripristino e il tasso di fallimento delle modifiche.
Vedi il diagramma originale ↗