Che cos'è DevOps?
DevOps è l'unione di persone, processi e prodotti in grado di offrire recapito continuo di valore ai clienti. Ma cosa significa esattamente? Mara spiega al team cos'è e cosa non è DevOps e illustra come un team con prestazioni straordinarie può raggiungere l'obiettivo.
Mara ha richiesto un breve incontro con i membri del team. Si sono presentati tutti, ma nessuno vorrebbe essere lì. Sul tavolo ha preparato una scatola di ciambelle.
Mara: Salve, grazie per essere venuti. Volevo approfondire la mappa di flusso del valore e spiegarvi in che modo possiamo rendere più efficienti i processi.
La mappa di flusso del valore di Mara è ancora sulla lavagna dall'incontro precedente:
Mara: La mappa di flusso del valore illustra i punti in cui si perde efficienza nell'offerta di valore ai nostri utenti finali. Come tutti, possiamo migliorare e decidere quali aree affrontare per prime.
Andy: Dalla mappa capiamo dove abbiamo problemi, ma non cosa dobbiamo fare per risolverli.
Mara: È vero. Questo esercizio ci aiuta a capire la direzione da seguire. Per quanto riguarda i problemi, credo che DevOps possa aiutarci. Nell'ultima azienda in cui ho lavorato le frequenze di distribuzione sono considerevolmente cresciute, i lead time si sono velocizzati e gli eventi imprevisti riscontrati nelle operazioni sono stati ridotti. È servito un po' di tempo, ma ne è valsa la pena. DevOps non è una correzione rapida.
Tim: Conosco qualcuno che è stato appena assunto come tecnico DevOps. Credo che possa interessare per lo più gli sviluppatori. Interessa te, Andy.
Mara: DevOps non è una posizione.
Amita: Esiste un programma che ci può aiutare oppure un modello? ad esempio un foglio di calcolo DevOps?
Mara: DevOps non è un componente software.
Andy: È più paragonabile a una metodologia.
Mara: Risposta errata.
Andy, Amita, Tim: Allora che cos'è?
Mara: Questa è la definizione che preferisco usare:
DevOps è l'unione di persone, processi e prodotti per offrire recapito continuo di valore agli utenti finali.
In realtà, Abel Wang, un sostenitore del cloud presso Microsoft, offre un ampio set di video con risposte rapide ad alcune delle nostre domande importanti. Vediamo come Abel definisce DevOps:
Chiedi ad Abel
Il nostro obiettivo è offrire ai clienti giochi che ameranno. Possiamo raggiungere tale obiettivo lavorando insieme e adottando procedure e strumenti condivisi.
Amita: Che cosa significa? Cosa si intende per procedure e strumenti condivisi?
Mara: Ecco cosa intendo per procedure:
- Pianificazione agile: Insieme creeremo un backlog di lavoro che chiunque lavori nel team o nel management può visualizzare. Classificheremo gli elementi in ordine di priorità, in modo da sapere cosa affrontare per primo. Il backlog può includere storie utente, bug e qualsiasi altra informazione che possa essere utile.
- Integrazione continua (CI): Automatizzeremo la compilazione e il test del codice. Verranno eseguiti ogni volta in cui un membro del team esegue il commit delle modifiche nel controllo della versione.
- Recapito continuo (CD): È il processo di test, configurazione e distribuzione da un ambiente di compilazione a un controllo di qualità o a un ambiente di produzione.
- Monitoraggio: Useremo la telemetria per ottenere informazioni sulle prestazioni e sui modelli di utilizzo di un'applicazione. Queste informazioni serviranno per ottimizzare l'esecuzione dell'iterazione.
Amita: Non so nulla sui test automatizzati. I miei sono manuali e li eseguo dopo aver ricevuto il codice da Andy. Non ho tempo di cambiare il mio modo di lavorare.
Tim: È impossibile lasciare che qualcuno di voi si occupi della distribuzione all'ambiente di produzione.
Andy: Il management ne sarà terrorizzato. Il loro unico pensiero è la versione successiva, che è sempre urgentissima.
Mara: So cosa pensate del management. Ho creato questa dispensa per illustrare ciò che contraddistingue un team con prestazioni straordinarie.
Aspetti di un team con prestazioni straordinarie
Di seguito è riportata la dispensa preparata da Mara. Le informazioni si basano su report di ricerca di DevOps e sondaggi somministrati a tecnici di tutto il mondo.
DevOps aiuta le aziende a sperimentare i modi per aumentare l'adozione da parte dei clienti e la loro soddisfazione. Può ottimizzare le prestazioni aziendali e spesso assicurare redditività e quote di mercato più alte.
Usa le metriche per creare quattro categorie in base alle quali confrontare un team con prestazioni straordinarie con un team con prestazioni scarse.
Team con prestazioni straordinarie:
Distribuiscono più frequentemente
Alcuni team arrivano a distribuire fino a decine di volte al giorno.
Alcune procedure, ad esempio monitoraggio, test continui, gestione delle modifiche del database e integrazione della sicurezza nelle fasi iniziali del processo di sviluppo software, consentono ai team con prestazioni straordinarie di distribuire più frequentemente e con un livello più elevato di prevedibilità e sicurezza.
Ridurre il lead time dal commit alla distribuzione
Il lead time è il tempo necessario per rendere disponibile una funzionalità al cliente. Usando batch di dimensioni più piccole, automatizzando i processi manuali e distribuendo più frequentemente, i team con prestazioni straordinarie ottengono in ore o giorni i risultati che prima raggiungevano in settimane o addirittura in mesi.
Ridurre la percentuale di errori di modifica
Una nuova funzionalità che non viene eseguita correttamente nell'ambiente di produzione o che causa l'interruzione di altre funzionalità può determinare la perdita di un'opportunità tra organizzazione e utenti. A mano a mano che i team con prestazioni elevate acquisiscono esperienza, riducono la percentuale di errori di modifica.
Recuperare da eventi imprevisti più velocemente
Quando si verificano eventi imprevisti, i team con prestazioni straordinarie possono recuperare più velocemente. Intervenendo sulle metriche recuperano più velocemente e al tempo stesso distribuiscono con maggiore frequenza.
Anche la modalità di implementazione dell'infrastruttura cloud è un aspetto importante. Il cloud migliora le prestazioni di distribuzione del software e i team che adottano caratteristiche cloud di base hanno probabilità maggiori di registrare prestazioni straordinarie.
L'esternalizzazione può essere una soluzione per risparmiare denaro e offrire un pool di manodopera flessibile, ma deve essere usata nelle aree corrette. I team con scarse prestazioni hanno una probabilità più alta di esternalizzare intere funzioni (come test e operazioni) rispetto alle controparti con prestazioni elevate.
Conclusioni
DevOps è una ragione fondamentale per cui molti team con prestazioni straordinarie sono in grado di offrire valore ai clienti, sotto forma di nuove funzionalità e miglioramenti, più rapidamente rispetto ai loro concorrenti. In questo breve video, Abel spiega perché è necessario comprendere meglio DevOps:
Chiedi ad Abel
Cosa non è DevOps
Per le considerazioni relative a DevOps, è importante anche assicurarsi di imparare cosa non è. DevOps non è:
- Una metodologia.
- Un componente software specifico.
- Una correzione rapida per le problematiche di un'organizzazione.
- Solo un team o una posizione, benché queste posizioni siano piuttosto comuni nel settore.