Guida

DevOps, cos’è e perché oggi è una metodologia fondamentale nella programmazione software

Crescono applicazioni e sistemi a supporto del business. Il time to market è tiranno e agli sviluppatori si chiede maggiore velocità nella messa in produzione di software e di app. L’approccio DevOps è un modello secondo cui team di sviluppo interfunzionali programmano in maniera più rapida, rilasciando soluzioni di qualità e sicure per ambienti tradizionali e in cloud

Pubblicato il 07 Set 2022

Che cos'è il devOPS e perchè questa metodologia è un fondamentale per los viluppo del software

Development da un lato e Operations dall’altro. Il DevOps è una metodologia di sviluppo del software che sfrutta le nuove logiche della condivisione e della collaboration ma anche di un crowdsourcing più verticale.

L’obiettivo? Accelerare i tempi di rilascio del software di cui le aziende non possono più fare a meno.

Come? Portando nuovi livelli di condivisione e di integrazione tra gli sviluppatori e gli addetti alle operations per accelerare i tempi di progettazione, testing e di rilascio delle soluzioni applicative aziendali sia in ambienti tradizionali che in ambienti cloud. Il tutto assicurando la qualità e la sicurezza del software sviluppato.

Smart Working davvero a Prova di Cyber Attack. Clicca qui per scoprire come!

Cosa vuol dire DevOps

Uno dei modelli di riferimento del DevOPS è il cosiddetto CALMSS, acronimo di Culture, Automation, Lean, Management and Measurement, Sharing and Sourcing. Ed è proprio questo a definire cosa è il DevOps.

Il DevOps, infatti, è un set di pratiche e di cambiamenti culturali supportati da strumenti automatici e processi di Lean Management. Consente di automatizzare il rilascio del software rispetto alla sua catena di produzione, permettendo alle organizzazioni di poter contare su un software e applicazioni di qualità superiore e sicura in modo estremamente più rapido.

Come raccontano gli esperti, ci sono molti strumenti, competenze ed elementi comuni, tra una realtà DevOps e un altra. Fare in modo che uno o più di questi entri a far parte integrante del processo di sviluppo aziendale è un buon inizio per velocizzare i tempi di rilascio dei codici e creare sistemi più flessibili e sicuri.

Certo è che chi si fregia della qualifica di DevOps non è detto né che sia uno sviluppatore capace anche di coprire l’aspetto più operativo della programmazione. Né che un esperto Ops abbia imparato anche a sviluppare codice. Il fatto è che il Devops presuppone che in azienda ci sia un team interfunzionale, dove ogni risorsa è responsabile di tutto.

In ambito aziendale oggi comunque è ancora molto raro trovare un’organizzazione che possa qualificarsi come un negozio DevOps a tutto campo. Piuttosto, si tende a trovare una squadra DevOps, allineata con applicazioni specifiche. Questo vale per esempio in caso di un team specializzato nel mobile, un altro specializzato nel checkout e via dicendo.

Non è tutto DevOps quello che si racconta

A muovere le aziende verso questo nuovo modello di lavoro il fatto che molti professionisti ICT lavorano in ambienti configurati per silos. E cercano sistemi più veloci e affidabili a supporto del loro lavoro. Ma come agevolare la messa in produzione del software?

Introducendo una strategia DevOps è possibile effettuare test e implementare nuove funzionalità e applicazioni molto più rapidamente rispetto alle modalità di sviluppo tradizionali. Senza contare il fatto che gli stessi sviluppatori, lavorando in prima linea sulla programmazione, sono stimolati a scrivere codici di qualità superiore.

A questo punto la domanda è un’altra. Come si fa, dunque, a portare il DevOps in azienda? Prima di tutto bisogna capire cosa significa DevOps. La maggior parte delle definizioni, infatti, risulta sempre piuttosto generica, focalizzandosi su linee guida teoriche: sviluppo più rapido, verifiche più frequenti, automazione, collaborazione… Ma questo ancora non è sufficiente a far cogliere le opportunità di questo approccio, di come si presenta un negozio DevOps e come funziona. Può infatti capitare che un team IT si dichiari tale solo perché nella sua filiera di produzione integra un paio di processi. Ma questo è ancora molto lontano da ciò che dovrebbe essere un negozio DevOps.

La metodologia è fondamentale: il lato Agile del DEV

Il DevOps è una medaglia a due facce. Sul fronte dello sviluppo in un ambiente DevOps la base è la metodologia di lavoro prescelta. Detto questo, un ambiente DevOps non può non fare riferimento alla metodologia Agile. E cioé a quella summa di principi derivati dal Manifesto Agile che nel 2001 ha definito un modello di sviluppo focalizzato sull’obiettivo di consegnare al cliente, in tempi brevi e frequentemente (early delivery – frequent delivery), software funzionante e di qualità.

Rispetto ai metodi tradizionali a cascata o ad altri processi software, le pratiche Agile presuppongono la formazione di team di sviluppo piccoli, cross-funzionali e auto-organizzati, lo sviluppo iterativo e incrementale, la pianificazione adattiva e il coinvolgimento diretto e continuo del cliente nel processo di sviluppo.

I framework di sviluppo, per esempio Scrum e KanBan

Se si vuole mettere in piedi un IT shop di successo, il primo passo è dunque quello di scegliere una metodologia Agile intuitiva, con dei framework di sviluppo come Scrum. Esso enfatizza tutti gli aspetti di gestione di progetto legati a contesti in cui è difficile pianificare in anticipo.

KanBan, d’altra parte, aiuta a visualizzare e rendere esplicito il flusso di lavoro per riconoscere prima le opportunità di miglioramento, limitando il work in progress.

Questi framework sono importanti perché aiutano i team di sviluppo a definire rapidamente gli obiettivi e le priorità, ad assegnare i compiti e a identificare dove possono verificarsi problemi nello sviluppo di un processo.

Il ruolo dei software code analyzer come supporto all'attività del team DevOPS

Automazione & Opensource: un binomio ad alta velocità

Un’altra caratteristica fondamentale di un sistema di sviluppo DevOps sono l’integrazione continua (CI) e l’erogazione continua e/o la distribuzione continua (CD). CI significa che nel processo di sviluppo i test su una porzione di codice sono continui e automatici. Mentre CD significa che il processo di messa in produzione del codice validato dopo il dovuto collaudo diventa automatica. È così che si accelerano i tempi di rilascio.

In passato, per esempio, molte aziende mettevano in produzione il nuovo codice ad orari prestabiliti. Ma la velocità del business ha reso questo modello per cicli di rilascio piuttosto obsoleto. In antitesi, tra l’altro, al DevOps che, invece, punta proprio ad automatizzare il ciclo di rilascio per renderlo il più possibile immediato.

Git: il sistema controllo versione opensource

Il codice con il Devops è conservato in un repository di sorgenti che viene utilizzato come archivio ma anche come fonte per controllare le varie versioni. Quello di Git per esempio è superiore anche a molti repository opensource. Esso ha sistemi di controllo più evoluti rispetto, per esempio, ai meno recenti Concurrent Versions System (CVS) o Apache Subversion.

Git è un sistema di controllo versione che serve a registrare i cambiamenti che si fanno su un file o su una serie di file nel tempo. Questo per poter richiamare una versione specifica di quei dati in qualsiasi momento.

Scritto nientemeno che da Linus Torvalds, il padre di Linux, Git è nato in risposta a un bisogno della comunità opensource. Si trattava di un sistema decentrato a cui gli sviluppatori di tutto il mondo avrebbero potuto comodamente accedere.

Come sottolineano gli esperti, è uno strumento decentralizzato funziona bene anche in azienda, dove le squadre di sviluppo possono essere distribuite tra più divisioni e tra più sedi geografiche differenti.

Le versioni in commercio di Git offrono diversi add on che permettono di gestire collaboration, processi e sistemi di validazione, IDEs (Integrated Development Environment), CI/CD e strumenti di Test.

IaaC, ovvero Infrastructure As a Code

Il codice del software non è l’unico elemento archiviato nel repository di Git. Sempre più spesso, infatti, vengono memorizzati anche gli script che contengono tutti i dettagli delle configurazioni e i modelli creati con gli strumenti di gestione della configurazioni come, per esempio, Puppet e Chef, che sono due tra i linguaggi più popolari.

La generazione di metodi automatici per configurare e implementare l’infrastruttura ha dato origine al concetto di infrastructure as a code (IaC). Rally Software, per esempio, è un fornitore di software per il project management d’ispirazione Agile che ha dedicato un anno e mezzo di lavoro nella creazione di configurazioni basate su Chef per i suoi servizi più importanti, sviluppati su 60 host VmWare e istanze AWS (Amazon Web Services).

“La maggior parte della configurazione è stata fatta manualmente – ricorda Jonathan Chauncey, ingegnere software di Rally Software – il che ha reso il lavoro molto più impegnativo, soprattutto quando si deve scalare rapidamente. Senza contare tutti i problemi connessi al debug che ha coinvolto un gruppo di server”.

Gli ingegneri di Rally Software, hanno forti competenze anche sulla programmazione Ruby. La scelta di Chef come strumento di gestione della configurazione, ha consentito alla società di trovare un valido sistema per installare rapidamente il software. Ma Chauncey sottolinea anche come questa metodologia sia efficace anche per scrivere modelli per tutti i sistemi.

I vantaggi dell’IaaC

Nello specifico, avere un’infrastruttura come codice significa che questa può essere incorporata in altri processi DevOps, sia per le fasi di test che per la messa in produzione.

Rally Software memorizza tutte le sue configurazioni infrastrutturali nel repository GitHub, testate e distribuite in modo continuo esattamente come il resto dei processi di integrazione e implementazione continui processati decine di volte al giorno.

Che si tratti di codice del software o di infrastrutture, tutto passa dalla stessa metodologia automatica di processo, Indipendentemente da ciò che viene modificato.

“Un altro vantaggio delle IaC è che si può contare su soluzioni ever green – ha aggiunto Alain Gaeremynck, manager DevOps nonché enterprise architect presso la canadese Yellow Pages Group – dal momento che è possibile mantenere sempre aggiornati alle ultime versioni sia i sistemi che i pacchetti. Noi abbiamo sposato la causa IaC. Una volta impiegavamo tempo e risorse nel costruire infrastrutture da monitorare costantemente. Oggi, invece come parte del processo di generazione lavoriamo così. Distruggiamo e ricostruiamo ex novo, il che ci permette di introdurre aggiornamenti Java”.

DevOps e connessione con il cloud

I DevOps hanno un ruolo chiave anche nel cloud. Le aziende che hanno un’infrastruttura cloud, infatti, hanno costantemente bisogno di gestire una serie di risorse e di capacità che possono essere risolte dai DevOps.

“Per me, un prerequisito di un DevOps è che sappia sfruttare al meglio le risorse a seconda delle necessità – ha commentato Ram Akuka, direttore della divisione DevOps presso Deutsche Telekom HBS, un fornitore di servizi di telefonia per le Pmi – e di separare l’infrastruttura dal quello che è la centrale di servizio. La nostra divisione DevOps supporta moltissimo l’attività interna aziendale”.

Il cloud in chiave DevOps non ha bisogno di essere basato né su AWS né su cloud pubblico. Deutsche Telekom HBS, per esempio, usa AWS per le risorse di sviluppo ma ha costruito un cloud privato interno basato su Citrix CloudStack e VMware per il suo ambiente di produzione. E usando Jenkins per l’integrazione continua, script fatti in casa, configurazioni Chef archiviate in GitHub e servizi di Ravello per creare sandbox di sviluppo della produzione su AWS.

DevOps e infrastrutture legacy

Tuttavia, le imprese che stanno aprendosi al DevOps lottano contro le infrastrutture legacy, che non sempre sono in grado di interfacciarsi con i moderni strumenti di automazione delle infrastrutture né, tanto meno, con le situazioni di private cloud.

Alcuni operatori specializzati nell’automazione di infrastrutture come, per esempio, QualiSystems o CFengine stanno focalizzandosi sulla gestione delle infrastrutture legacy. Realtà che soluzioni del calibro di OpenStack non supportano ancora (se mai lo faranno).

Esistono IT Shop DevOPs capaci di sviluppare soluzioni intelligenti per le infrastrutture legacy. E ciò è possibile per esempio mediante la scrittura di un livello API per tradurre azioni specifiche. Anche nel caso abbiate soluzioni EMC con un numero di attacchi limitati, i DevOps vi aiuteranno a non buttar via nulla. Trovando la soluzione giusta attraverso una nuova modalità di programmazione.

New call-to-action

I vantaggi della metodologia DevOps

Oltre al miglioramento della qualità del codice, la metodologia DevOps assicura il successo del software e, in generale, di tutte le applicazioni.

Programmazione e sviluppo, lavorando a ciclo continuo e in sinergia su porzioni di software invece che su tutto il programma nel suo complesso garantisce una maggior stabilità e sicurezza.

Inoltre, accelera i tempi di rilascio ma anche la possibilità di uno sviluppo evolutivo ulteriore senza incognite. Questo significa capitalizzare il lavoro delle squadre DevOps a tutto vantaggio del time to market del business. I clienti ringraziano e i costi si riducono notevolmente.

Devops: le tendenze per i prossimi anni

L’emergenza sanitaria associata al lockdown causato dalla pandemia da Covid -19 tra il 2020 e il 2021, ha favorito l’apertura delle aziende al cloud in ogni sua forma.

Nel momento in cui lo smartworking è diventato un’imperativo categorico, tutte le organizzazioni hanno rivisto le politiche di gestione. Per garantire la continuità operativa dei telelavoratori da casa è stato necessario riorganizzare infrastrutture e applicazioni.

E questo ha portato a un’accelerazione delle strategie in cloud e di nuove soluzioni a supporto del lavoro da remoto. Si parla per esempio di VPN e software di collaborazione a distanza: SaaS, IaaS, PaaS, STaS, DraaS. Non c’è risorsa che oggi non sia possibile spostare sul cloud.

Data la massiva softwarizzazione delle infrastrutture, non a caso i veri main sponsor dell’approccio As a Service in azienda oggi sono soprattutto i team di sviluppo (38%) seguiti dai chief executive officer (34%), dagli IT manager (28%) e dai CFO (2%). Fonte: “Le aziende si affidano al cloud in ogni sua forma” Digital360 Research – dicembre 2020).

La programmazione è stata la protagonista dell’IT nel 2021 e nei prossimi anni gli sviluppatori influenzeranno perciò sempre più la direzione tecnologica aziendale.

Chi è e cosa fa l’ingegnere DevOps

L’ingegnere DevOps è un professionista che collabora con lo sviluppatore, l’amministratore di sistema e a tutto il personale IT.

Oltre a conoscere diverse piattaforme digitali e numerosi strumenti di automazione, ha una conoscenza approfondita del ciclo di vita dello sviluppo del software.

A seconda della tipologia di organizzazione e del settore industriale di riferimento, l’ingegnere DevOps può presidiare svariati ruoli.

Potrebbe essere un project manager, uno sviluppatore, occuparsi di test di qualità, manutenzione della sicurezza e dell’automazione eccetera. Il DevOps, infatti, ha un futuro promettente e le sue applicazioni pratiche aumentano ogni giorno nelle diverse aree IT.

Con una crescita del mercato compresa tra il 40 e il 45% circa negli ultimi cinque anni, la domanda di DevOps dovrebbe aumentare ulteriormente. Per il mondo informatico è il momento di investire nella formazione e nello sviluppo delle competenze DevOps.

New call-to-action

Valuta la qualità di questo articolo

La tua opinione è importante per noi!

Articoli correlati