DevOps: cos'è e perché è importante

Pubblicato: 2022-03-11

Sebbene non esistano metodi sicuri e "proiettili d'argento" per migliorare l'efficienza IT, DevOps ha prodotto risultati difficili da ignorare. Come suggerisce il nome, DevOps combina lo sviluppo del software ei principi operativi del software con l'obiettivo di aiutare le organizzazioni a sviluppare prodotti con maggiore velocità ed efficienza. TIAA-CREF, ad esempio, ha visto la sua attività da 40 miliardi di dollari apportare miglioramenti significativi grazie all'utilizzo dei principi DevOps. Un'intervista di TechBeacon con il Chief Digital Officer di TIAA, Scott Blandford, spiega come TIAA sia passata da software e sistemi goffi e legacy a "un approccio DevOps basato sull'agile" che ha prodotto un aumento di quattro volte della produttività di sviluppo. Gli aggiornamenti vengono rilasciati molto più rapidamente e "l'IT ha riguadagnato la fiducia che si era erosa nel corso degli anni quando ha iniziato a soddisfare le aspettative degli utenti".

I risultati dello State of DevOps Report 2017 suggeriscono differenze evidenti tra le organizzazioni ad alte prestazioni che utilizzano i principi DevOps e le organizzazioni che non lo fanno. Secondo il rapporto, le organizzazioni ad alte prestazioni hanno frequenze di distribuzione del software molto più elevate (46 volte più frequenti), tempi di consegna delle modifiche molto più rapidi (440 volte più veloci) e un tasso di errore di modifica del software significativamente inferiore (cinque volte inferiore) rispetto alle loro prestazioni inferiori controparti.

Nonostante questi vantaggi significativi, DevOps rappresenta un classico esempio di un concetto tecnico importante e relativamente nuovo che è stato utilizzato in modo improprio o frainteso troppo spesso. Per molti, l'idea rimane confusa e anche una definizione di base di DevOps può rivelarsi sfuggente.

Questa mancanza di chiarezza potrebbe avere effetti negativi sulle organizzazioni e sui team che tentano di implementare i principi DevOps, causando confusione strategica e ostacolando la velocità e l'efficienza che DevOps dovrebbe promuovere. Come ha affermato un ingegnere DevOps presso IBM in un articolo pubblicato da InfoWorld, "Dovevamo rispondere ad alcune domande di base e determinare i problemi che stavamo cercando di risolvere... Se non sai come viene effettivamente svolto il lavoro, non lo sai quali problemi vale la pena risolvere”.

Man mano che lo sviluppo del software e le operazioni diventano più strettamente interconnessi e poiché le aziende diventano sempre più dipendenti dall'infrastruttura cloud, i dirigenti e i project manager devono sviluppare fluidità in DevOps per rimanere competitivi e garantire che i loro team funzionino al massimo delle loro potenzialità.

DevOps non dovrebbe essere considerato un'altra vaga parola d'ordine, ma piuttosto un concetto importante con il potenziale per migliorare notevolmente prodotti e attività. Questo articolo, rivolto a un pubblico relativamente non tecnico, mira prima di tutto a chiarire esattamente cosa sia DevOps. Utilizzando esempi specifici, questo articolo esplorerà quindi che aspetto hanno i principi DevOps quando vengono eseguiti correttamente e perché DevOps è importante per te e la tua organizzazione.

DevOps come tipo di ingegnere, cultura e pratica

Che cos'è DevOps? In un precedente articolo pubblicato da Toptal, Demir Selmanovic scrive che "DevOps è una cultura, una mentalità e fa parte dell'IT nel suo insieme". Scrive inoltre che DevOps è una pratica che consente alle organizzazioni di ottimizzare velocità ed efficienza tra le funzioni IT.

Amazon Web Services, che è il più grande attore nell'infrastruttura cloud e di conseguenza ha sviluppato una significativa esperienza in DevOps, utilizza una definizione simile, affermando che "DevOps è la combinazione di filosofie, pratiche e strumenti culturali che aumenta la capacità di un'organizzazione di fornire applicazioni e servizi ad alta velocità: evolvere e migliorare i prodotti a un ritmo più rapido rispetto alle organizzazioni che utilizzano i tradizionali processi di sviluppo software e gestione dell'infrastruttura".

"Le persone DevOps sono fondamentalmente quelle che hanno riscontrato interesse sia nell'amministrazione dei sistemi che nello sviluppo del software e hanno deciso di unire le proprie competenze per creare un approccio unificato e migliore per entrambi".

Queste sono entrambe definizioni utili per un pubblico già esperto in campi correlati, ma potrebbero essere troppo astratte per dirigenti con un background tecnico meno ampio. In effetti, forse parte della confusione che circonda la definizione di DevOps deriva dal fatto che spesso viene fatto riferimento contemporaneamente a un tipo di ingegnere, insieme di pratiche e cultura. Sebbene DevOps comprenda ciascuno di questi elementi, è utile iniziare considerandoli separatamente.

Per iniziare con l'aspetto di un ingegnere DevOps, Martin Chikilian, uno sviluppatore di software precedentemente per IBM e Hewlett Packard con oltre un decennio di esperienza nell'utilizzo dei principi DevOps, lo mette in termini semplici e concreti: "Le persone DevOps sono fondamentalmente quelle che hanno trovato interesse sia nell'amministrazione dei sistemi che nello sviluppo del software e hanno deciso di unire le proprie competenze per creare un approccio unificato e migliore per entrambi".

Sono in grado di mantenere i server, le reti e altri tipi di sistemi infrastrutturali di un'azienda, nonché di iterare e migliorare attivamente tali sistemi attraverso lo sviluppo di software. Come ha detto Chikilian in un altro modo, "Una persona DevOps è qualcuno che può sfruttare le basi dello sviluppo del software per aiutare se stessi e le aziende a costruire strumenti migliori per gestire l'infrastruttura".

La "combinazione di filosofie culturali", come dice Amazon, si riferisce alla combinazione di approcci utilizzati dagli sviluppatori di software e da quelli con esperienza in infrastrutture o operazioni software. Nell'abbattere la tradizionale barriera tra queste pratiche, una cultura DevOps cerca di consentire alle organizzazioni di beneficiare dei distinti punti di forza che gli sviluppatori e gli esperti di infrastruttura mettono in campo. L'implementazione di successo dei principi DevOps "richiede un cambiamento nella cultura e nella mentalità" per le aziende che isolano questi diversi tipi di ingegneri. Come descritto da Emily Dowdle al Nordic API Platform Summit 2016, la rimozione delle barriere aiuta anche ad alleviare l'attrito naturale che a volte può esistere tra sviluppatori ed esperti di infrastrutture e promuovere un ambiente di lavoro più congeniale e collaborativo.

Detto semplicemente, DevOps si occupa di tradurre complessi processi manuali che coinvolgono l'interazione umana soggetta a errori in un approccio strumentato che può essere testato, misurato e facilmente ridimensionato.

Grazie alla comprensione dell'aspetto e della cultura di un professionista DevOps, ciò che DevOps significa come pratica diventa più evidente. Detto semplicemente, DevOps si occupa di tradurre complessi processi manuali che coinvolgono l'interazione umana soggetta a errori in un approccio strumentato che può essere testato, misurato e facilmente ridimensionato. Ad esempio, se uno sviluppatore desidera creare un ambiente che consenta agli utenti aziendali di fornire feedback, può avviare un processo automatizzato in cui lo sviluppatore può emettere un comando creato dal team DevOps (piuttosto che distribuire un pezzo di codice al team dell'infrastruttura), che esegue l'attività pertinente in modo coerente e testato, ottenendo rapidamente i risultati attesi e consentendo la collaborazione.

Una definizione completa di DevOps richiede una comprensione di cosa significhi come tipo di ingegnere, cultura e pratica. Dopo aver esplorato cosa significa DevOps da queste prospettive, ora è importante approfondire l'aspetto di DevOps una volta implementato con successo.

Il tuo toolkit DevOps

Oltre al suddetto cambiamento culturale, che passa da un'azienda che isola sviluppatori di software ed esperti di infrastrutture a un'altra che abbraccia la loro collaborazione, le aziende devono comprendere una serie di pratiche e strumenti specifici cruciali per DevOps. Di seguito sono elencate tre delle più cruciali (anche se certamente non le uniche) di tali pratiche:

Automazione: una maggiore efficienza è fondamentale per DevOps e ciò si ottiene in modo significativo automatizzando una serie di processi relativamente lenti e onerosi nello sviluppo del software e nella manutenzione dell'infrastruttura. Un esempio specifico citato da Amazon è la pratica di inviare automaticamente aggiornamenti software relativamente piccoli ma frequenti. Questa pratica elimina l'onere degli amministratori di sistema, che altrimenti potrebbero dover eseguire questi aggiornamenti manualmente. Come osserva Amazon, questa pratica ha anche il vantaggio di ridurre i rischi nella distribuzione del software consentendo agli amministratori di rilevare e correggere più facilmente i bug che potrebbero sorgere. L'automazione è una pietra miliare di DevOps ed è fondamentale per le altre pratiche DevOps discusse di seguito.

Integrazione continua: a livello fondamentale, DevOps riguarda una stretta collaborazione tra ingegneri e, inoltre, interi team. L'integrazione continua si riferisce alla pratica degli ingegneri di condividere e unire il codice in una posizione centrale. Come spiega Amazon, "In passato, gli sviluppatori di un team potevano lavorare in isolamento per un lungo periodo di tempo e tentare di unire le modifiche solo... una volta completato il lavoro". Grazie all'integrazione continua, gli ingegneri possono collaborare in modo più efficiente ed evitare i colli di bottiglia associati allo sviluppo e all'integrazione del codice in modo più frammentario.

Consegna continua: la consegna continua si riferisce alla pratica di fornire e implementare automaticamente le modifiche ai prodotti software man mano che vengono apportate. In altre parole, la Continuous Delivery è abilitata dall'integrazione continua, dato che le modifiche al codice possono essere effettivamente inviate all'intero sistema solo se il codice è già ospitato in una posizione centrale. Anche l'automazione è fondamentale per la consegna continua. In effetti, il suddetto esempio di invio di aggiornamenti di sistema piccoli e frequenti può anche essere considerato un esempio di Continuous Delivery. La Continuous Delivery consente alle organizzazioni di implementare rapidamente modifiche e miglioramenti e consente agli ingegneri di concentrare il proprio tempo in modo più efficiente su altri problemi complessi.

Assumere le persone giuste

Naturalmente, le aziende devono assumere gli ingegneri giusti per implementare con successo le pratiche di cui sopra. Gli ingegneri DevOps devono disporre di un set di competenze che combini lo sviluppo del software e l'esperienza nell'infrastruttura dei sistemi e questa combinazione potrebbe essere difficile da trovare.

"È importante che siano in grado di colmare il divario tra il codice grezzo e le sfide che l'azienda deve affrontare ogni giorno, come la riduzione dell'attrito tra idee, consegna e consumatori".

Andrea Villa, ex ingegnere DevOps presso Atlassian e architetto di sistema presso CloudReach con 15 anni di esperienza in amministrazione di sistema, sicurezza delle informazioni e reti, ritiene che gli ingegneri DevOps abbiano bisogno di un'ampia gamma di esperienza e conoscenza per avere successo.

"Per essere efficace, l'ingegnere DevOps di oggi deve avere un background di sviluppatore e possedere un'ampia conoscenza dell'amministrazione del sistema e della conoscenza della rete", ha affermato Villa. "È importante che siano in grado di colmare il divario tra il codice grezzo e le sfide che l'azienda deve affrontare ogni giorno, come la riduzione dell'attrito tra idee, consegna e consumatori".

Qualificarsi come un forte DevOps Engineer è chiaramente più facile a dirsi che a farsi e trovare tali ingegneri può essere altrettanto difficile. Tuttavia, la comprensione degli strumenti alla base delle pratiche DevOps può consentire alla tua organizzazione di personalizzare in modo più accurato le pratiche di assunzione per trovare il talento giusto e implementare queste pratiche con successo.

Perché DevOps è davvero importante

L'utilizzo delle pratiche DevOps comporta una serie di vantaggi, alcuni dei quali, tra cui maggiore efficienza, sicurezza e collaborazione organizzativa, sono già stati articolati. Il rapporto sullo stato di DevOps 2017 quantifica questo aumento di efficienza, segnalando che le organizzazioni ad alte prestazioni che utilizzano pratiche DevOps spendono il 21% in meno di tempo per il lavoro non pianificato e la rilavorazione e il 44% in più per il nuovo lavoro.

Più in generale, tuttavia, implementare con successo le pratiche DevOps può avere un profondo impatto sulla tua azienda migliorando l'efficienza e l'esecuzione in aree che sono sia essenziali che decisamente poco glamour.

Fredrik Haard, un ingegnere con oltre 12 anni di esperienza in DevOps che ha lavorato come Senior Cloud Architect presso McKinsey e Wondersign, articola questo punto in modo più completo.

"I bravi ingegneri DevOps devono essere un campione - e assumersi la responsabilità di - tutte le aree che potrebbero non essere prioritarie dall'organizzazione come la sicurezza dei dati, il ripristino di emergenza, la mitigazione e gli audit", ha affermato Haard. "Le scelte che fai in DevOps possono avere effetti duraturi in un'azienda".

Microsoft ha riscontrato questi effetti positivi anche attraverso l'implementazione delle pratiche DevOps nel suo gruppo di progettazione Cloud + Enterprise. Per ottenere i migliori risultati, spiega Microsoft, "avevamo bisogno che ingegneria e operazioni lavorassero a stretto contatto durante l'intero ciclo di vita dello sviluppo, dalla progettazione alla distribuzione in produzione". Passando a una cultura DevOps e utilizzando le pratiche DevOps, Microsoft è stata in grado di scalare e fornire servizi di alta qualità ai propri clienti molto più rapidamente di quanto non avesse fatto in precedenza.

Risolvere questi problemi e migliorare l'efficienza sono grandi di per sé, ma in definitiva sono un mezzo per un fine più fondamentale: produrre prodotti sorprendenti e ottenere maggiori profitti e soddisfazione del cliente.

Gli ingegneri DevOps possono agire efficacemente come team di comando interno di un'azienda, aiutando a risolvere una vasta gamma di problemi che, sebbene forse poco affascinanti o nascosti, sono assolutamente cruciali per il corretto funzionamento di un'azienda.

Risolvere questi problemi e migliorare l'efficienza sono grandi di per sé, ma in definitiva sono un mezzo per un fine più fondamentale: produrre prodotti sorprendenti e ottenere maggiori profitti e soddisfazione del cliente. Forse il motivo più importante per cui DevOps è davvero importante è che può consentire alle organizzazioni di massimizzare ciascuna di queste metriche.

Affrontare il futuro con DevOps

Nel 2015, il partner di Andreessen Horowitz Scott Weiss ha affermato che DevOps è "Più di una semplice metodologia. È un set di competenze indispensabile per il programmatore moderno e sta diventando sempre più un dipartimento a sé stante".

Ciò si è dimostrato vero, poiché una serie di società tecnologiche, tra cui Amazon, Microsoft e Google, hanno creato team DevOps e dedicato risorse significative alla creazione di competenze nello spazio. Weiss e altri importanti attori tecnologici vedono DevOps non solo come una moda passeggera, ma piuttosto come una componente chiave nel futuro del software.

DevOps continuerà a essere particolarmente essenziale man mano che i settori diventeranno più dipendenti dall'infrastruttura cloud. In un rapporto del 2017, Gartner Research ha previsto che il mercato dei servizi cloud crescerà di oltre il 15% all'anno fino al 2020. Per esprimere questa crescita in termini di dollari, un recente articolo pubblicato da Forbes indica che il mercato del cloud computing crescerà da circa 260 miliardi di dollari. nel 2017 a circa 411 miliardi di dollari nel 2020. DevOps può fare un'enorme differenza nella rapidità con cui la tua azienda migra con successo i sistemi sul cloud. In Toptal, abbiamo utilizzato DevOps sin dall'inizio ed è stato parte integrante del nostro successo come azienda di cloud in ipercrescita.

Proprio come il mercato dei servizi cloud sta crescendo rapidamente, così è anche l'importanza di DevOps. Che si tratti di energia, assistenza sanitaria o istruzione superiore, la tua azienda dovrà sviluppare competenze DevOps. Comprendere cos'è DevOps, come viene implementato e perché è così importante rappresenta un primo passo essenziale quando si pensa di utilizzare questa pratica chiave per il futuro.