Modello di sviluppo del software DevOps
Introduzione
La soluzione di un generico problema mediante un sistema di elaborazione consiste nel passaggio dalla descrizione del problema di partenza al programma finale, in cui l’utente può utilizzare il calcolatore per inserire i dati in ingresso e ottenere i risultati in modo automatico.
Tale processo di sviluppo spesso richiede che professionalità diverse svolgano, secondo una schedulazione ben definita, compiti ben precisi, al fine di “rilasciare” il prodotto funzionante e in tempi congrui. Ciò significa che un’azienda di sviluppo software, per normali esigenze di sopravvivenza, ha la necessità di ridurre al minimo i tempi di consegna, mantenendo, contestualmente, alto il livello qualitativo del software.
Si pensi, in tal senso, alle esigenze delle aziende che basano sul software e sulla tecnologia la maggior parte della propria attività e per le quali risulta vitale assicurare la continuità del servizio erogato o della catena produttiva.
Considerato poi che, grazie alla continua evoluzione tecnologica (anche hardware in senso lato), l’economia è divenuta “software defined“, in tutti i settori i software sono utilizzati per ottimizzare aspetti legati alla produzione, alla logistica e alla comunicazione con i propri partner. Di conseguenza software e applicazioni devono essere aggiornatati in maniera efficiente il più frequentemente possibile (Continuous Delivery).
L’evoluzione DevOps
Nei modelli tradizionali le figure che si occupano dello sviluppo software (Development) sono spesso slegate dalle figure che si occupano del rilascio in produzione e del relativo corretto funzionamento (Operations).
Il problema è che, da un lato i Developers sono portati mirano a rilasciare in continuazione funzionalità sempre più aggiornate, dall’altro gli Operations sono molto più conservativi puntando ad avere il sistema sempre funzionante ed efficiente il più a lungo possibile.
Come descritto da aws, il modello DevOps (combinazione tra i termini Development e Operations) nasce dalla sinergia tra cultura aziendale, pratiche e strumenti e fornisce a un’organizzazione l’abilità di sviluppare applicazioni e servizi con la massima agilità. DevOps consente l’evoluzione e il miglioramento dei prodotti a ritmo più serrato rispetto alle aziende che usano i tradizionali processi di sviluppo di software e di gestione dell’infrastruttura.
Secondo tale modello, i team dedicati a sviluppo e produzione non agiscono più separatamente. In alcuni casi, al contrario, i due team vengono fusi in un’unità in cui i tecnici sono attivi lungo tutto il ciclo di vita dell’applicazione, da sviluppo e testing a distribuzione e produzione, e acquisiscono una serie di competenze non limitate da una singola funzione.
La metodologia DevOps promuove quindi un insieme di pratiche, metodologie e principi utili a facilitare la comunicazione, la collaborazione e l’integrazione tra chi si occupa dello sviluppo e gli altri professionisti IT con lo scopo di rilasciare software rapidamente e con elevata frequenza e, soprattutto, qualità. In altre parole DevOps aumenta l’affidabilità, la sicurezza e velocità delle release.
Tra le tecniche fondamentali che è necessario mettere in pratica in una metodologia DevOps occorre ricordare:
Integrazione continua
In passato, gli sviluppatori che lavoravano separatamente a un progetto e per un lungo periodo, integravano i loro lavori solo alla fine; ciò oltre a a non produrre una visione d’insieme dal punto di vista funzionale, rendeva molto complicato il rilascio rapido di aggiornamenti; mediante l’integrazione continua il lavoro di ogni team si integra costantemente con quello svolto da un team differente, individuare immediatamente qualsiasi errore.
Gli obiettivi principali riguardano quindi l’individuazione e la risoluzione di bug con maggiore tempestività, riducendo i tempi di pubblicare degli aggiornamenti.
Distribuzione continua
La distribuzione continua, conseguenza dell’integrazione continua, indica il processo con cui viene automatizzato il rilascio del software e il relativo collaudo in un ambiente di testing temporaneo, rilevando preventivamente eventuali problemi, per poi trasferirlo nell’ambiente di produzione.
Comunicazione e collaborazione
E’ uno degli aspetti cruciali dell’approccio DevOps: consentire all’organizzazione nella sua pienezza di raggiungere i propri obiettivi tramite l’unione di flussi di lavoro e responsabilità parimenti distribuiti tra sviluppatori e produzione.
Visite: 332