La metodologia DevOps: un approccio agile per ottimizzare il business
La diffusione del telelavoro e dello smart working, conseguenza dell’emergenza Coronavirus e dei relativi lockdown, ha portato ad un’incredibile accelerazione delle strategie in Cloud e allo sviluppo di nuove applicazioni e sistemi a supporto del lavoro da remoto e del business nel suo complesso.
Proprio per questo, lo sviluppo di software e app moderne richiede ora processi ben diversi rispetto agli approcci del passato. I clienti non solo sono più esigenti ma desiderano anche che il rilascio della loro soluzione digitale ideale avvenga in tempi brevi. Quando si tratta di produrre software e app, esigenze dei clienti, qualità e costi vanno quindi bilanciati al meglio ed è proprio per questo che la Metodologia Agile si sta diffondendo sempre più nelle aziende sostituendosi agli approcci tradizionali. Per adattarsi ad un mondo (e a richieste) in costante evoluzione applicando un’approccio Agile serve una nuova filosofia del lavoro con team di sviluppo interfunzionali: insomma, serve applicare la metodologia DevOps. Scopriamo di cosa si tratta in questo articolo.
La metodologia Agile
Prima di passare a definire che cos’è DevOps, soffermiamoci un attimo sulla Metodologia Agile a cui il modello DevOps, in effetti, fa riferimento.
Si tratta di un insieme di metodi di sviluppo software derivati dal “Manifesto per lo sviluppo agile del software” del 2001, manifesto che propone un’alternativa ai modelli tradizionali (come quello Waterfall) promuovendo un approccio meno strutturato. L’obiettivo pimario? Consegnare al cliente, in tempi brevi e frequentemente, software funzionante e di qualità.
La Metodologia Agile presuppone la presenza di team cross-funzionali ed empowered pronti cioè a reagire (o produrre) cambiamenti in totale autonomia e prevede il coinvolgimento diretto e continuo del cliente durante l’intero processo di sviluppo del software. La soddisfazione del cliente, d’altronde, viene mantenuta grazie al rilascio rapido di modifiche e implementazioni di piccole porzioni (iterazioni) che riducono notevolmente il rischio di fallimenti e rispondono con precisione alle esigenze.
Insomma, i vantaggi della Metodologia Agile si possono riassumere in 5 punti:
– Rapidità del ciclo di vita dello sviluppo del software
– Focus sul cliente
– Flessibilità nella gestione dei cambiamenti
– Promozione di una comunicazione efficiente tra i team
– Diminuzione dei rischi
Cos’è la metodologia DevOps: una definizione
Il termine DevOps è stato coniato da Patrick Debois e reso celebre attraverso una serie di “DevOps Days” iniziati nel 2009 in Belgio. Grazie ad una community molto attiva, la metodologia DevOps si è poi diffusa in tutto il mondo e i DevOps Days si sono trasformati in appuntamenti di portata sempre più ampia.
DevOps, dalla contrazione di developments (tutte le attività di sviluppo) e operations (tutte le attività di messa in opera e mantenimento), è una metodologia che si basa su pratiche di stretta collaborazione tra sviluppatori software e professionisti di operations IT cui attività non viene più percepita come isolata ma come parte di un unico flusso di lavoro condiviso.Secondo la definizione di metodologia agile DevOps di ThoughtWork Radar, “DevOps è un nuovo movimento che usa due approcci: il primo è la promozione della stretta collaborazione tra programmatori e sistemisti; il secondo applica le pratiche dello sviluppo Agile di software (collaborazione, automazione, semplicità e così via) ai processi di operation, come l’approvvigionamento, la gestione dei cambiamenti e il monitoraggio della produzione. Comprende cultura, processi e strumenti – tutti volti a supportare una comunicazione migliore e un feedback più veloce, tempi di consegna più brevi e risultati più prevedibili”.
Più di una metodologia di lavoro
Insomma, DevOps è una metodologia agile, un insieme di pratiche, una filosofia e un’etica del lavoro. L’obiettivo coincide con la creazione di un ambiente in cui progettazione, testing e rilascio del software, in ambienti tradizionali o in Cloud, possano avvenire in modo rapido e frequente senza rinunciare all’affidabilità e alla sicurezza. Ciò senza contare che la metodologia DevOps aiuta a ridurre i rischi poiché si basa sull’automazione e su modifiche ridotte del software, anche se più frequenti rispetto al modello Waterfall tradizionale.
DevOps e il ciclo di vita dell’applicazione
DevOps è quindi una metodologia a cui viene riconosciuta la capacità di aumentare la qualità del software e ridurre al contempo il time-to-market. Questo accade perché la stretta collaborazione tra Dev e Ops prosegue lungo l’intero ciclo di vita dell’applicazione influenzando così le fasi di:
– Pianificazione: il piano, a comprendere la definizione e la descrizione delle funzionalità delle applicazioni e dei sistemi da creare, è frutto della sinergia tra programmatori e sistemisti;
– Sviluppo: i team DevOps, quando si tratta degli aspetti di codifica (scrittura, test, revisione, integrazione del codice etc) e inserimento del codice, usano strumenti a produttività elevata, automatizzano i passaggi ripetitivi e eseguono piccole iterazioni, così che si possa procedere con test automatizzati e integrazioni continue;
– Distribuzione o rilascio: la fase di rilascio include la distribuzione e configurazione dell’infrastruttura secondo un principio di erogazione continua delle innovazioni;
– Operazioni: la fase operativa prevede il monitoraggio, la manutenzione e la risoluzione dei problemi. Da un lato, i team DevOps cercano di identificare i problemi prima che influenzino l’esperienza dei clienti, dall’altro è il feedback del cliente a fornire indicazioni preziose sulle mosse successive;
– Pianificazione e iterazione successiva: il processo, insomma, ricomincia.
Metodologia DevOps: nuove procedure, nuova cultura
Come sempre accade, automatizzare e ottimizzare i processi adottando nuove tecnologie o rivedendo le procedure è necessario ma non sufficiente. Qualsisi vero cambiamento in azienda parte, principalmente, dalle persone e implica quindi la diffusione di una nuova cultura.
La cultura DevOps
Come abbiamo visto, DevOps può anche esse definito come una filosofia e etica del lavoro. Questo perché in effetti implica un nuovo modo di lavorare che punta su:
– Collaborazione e coordinazione: non può esistere DevOps senza la collaborazione tra team;
– Nuovi ambiti e responsabilità: i team si ritrovano ad essere coinvolti in fasi del ciclo di vita del software non strettamente centrali per i propri ruoli;
– Flessibilità: i team DevOps rimangono flessibili rilasciando software a brevi cicli che semplificano sia la pianificazione sia la gestione dei rischi senza impattare sulla stabilità dell’intero sistema. La flessibilità si rispecchia inoltre nella capacità di adattarsi e reagire all’evoluzione dettata dalle esigenze del cliente o dal settore di business nel suo complesso;
– Apprendimento continuo: gli errori, rilevati con velocità, diventano input necessari al miglioramento continuo.
Le procedure DevOps
La metodologia DevOps si basa sul Continuous Software Develompment (CSD), ovvero su una serie di tecniche che permettono di sviluppare un software in maniera iterativa. Il CSD si compone di:
– Continuous Integration (CI): con Integrazione Continua si intende l’integrazione, da parte degli sviluppatori, anche con frequenza durante la stessa giornata, di piccole porzioni di codice. Ciò permette di risparmiare tempo sin dal ciclo di sviluppo perché rende possibile identificare e risolvere i conflitti, i bug o qualsiasi altro errore.
– Continuous Delivery: la Consegna Continua implica la circolarità delle fasi di produzione, sviluppo, controllo qualità, feedback e rilascio. Ciò significa che il controllo qualità avviene a intervalli regolari rendendo possibile al cliente ricevere il prodotto anche mentre è ancora in lavorazione. D’altro canto, come abbiamo visto, è lo stesso cliente a diventare una preziosa fonte di feedback utile a migliorare costantemente le caratteristiche del programma durante le ulteriori fasi di sviluppo.
– Continuous Deployment (CD): l’Erogazione Continua è un processo di rilascio del software che si basa sull’uso di test automatizzati con cui convalidare le modifiche e procedere con la distribuzione continua. Questo garantisce all’azienda di rispondere alle esigenze del mercato e al team DevOps di convalidare velocemente nuove idee e nuove funzionalità.
DevOps Engineer
Per far sì che un team DevOps lavori al meglio c’è bisogno di una figura professionale responsabile della sua gestione: è il DevOps Engineer. È lui che si occupa di favorire la collaborazione tra develpment e operations ed è lui che ottimizza quindi la produttività degli sviluppatori e l’affidabilità delle operazioni.
Il suo ruolo, insomma, è coordinare tutte le fasi del rilascio collaborando con tutte le figure coinvolte, dallo sviluppatore all’amministratore di sistema fino a tutto il personale IT.
Le sue competenze sono varie e comprendono, ovviamente, la conoscenza delle diverse piattaforme digitali e dei numerosi strumenti di automazione così come dell’intero ciclo di vita dello sviluppo e del software.