Aldo Agostinelli

La metodologia DevOps è nata in risposta alla crescente complessità delle applicazioni e alla necessità di rendere più fluido e rapido il processo di sviluppo e rilascio dei sowftware: ecco come funziona

DevOps è un metodo innovativo di sviluppo software che punta alla massima rapidità ed efficienza grazie all’interdipendenza tra procedure di sviluppo e operations. Ma DevOps non è soltanto un insieme di tecnologie: è piuttosto un movimento, una cultura aziendale che apporta grandi cambiamenti nei tradizionali flussi di lavoro.

Il movimento e la cultura DevOps hanno iniziato a prendere forma intorno al 2009, quando Patrick Debois e Andrew Shafer organizzarono la prima conferenza “DevOpsDays” a Gand, in Belgio. Tuttavia, le radici di DevOps possono essere ricondotte a una serie di influenze e tendenze che si sono sviluppate nel corso degli anni precedenti.

DevOps è nato in risposta alle sfide emerse con i classici approcci di sviluppo software e gestione delle operazioni. Le organizzazioni stavano cercando di superare le barriere tra i team di sviluppo e di operations, che causavano ritardi nei rilasci, problemi di qualità e inefficienze. Siamo in un contesto in cui sta aumentando la complessità delle applicazioni, e di conseguenza l’esigenza di rilasci più rapidi e frequenti, nonché l’adozione diffusa di pratiche agili nello sviluppo software.

Inoltre, lo sviluppo e la diffusione di strumenti e tecnologie come la realtà virtuale, il cloud computing e le infrastrutture definite dal software (Software-Defined Infrastructure) hanno fornito le basi tecniche per la realizzazione dei principi DevOps.

DevOps: cos’è

Cosa si intende per DevOps?DevOps è una metodologia che integra lo sviluppo software (Dev, contrazione di “development”, che significa “sviluppo”) con le operazioni IT (Ops, da “operations”), facilitando la consegna rapida e continua di software di alta qualità. Attraverso l’automazione, la collaborazione e la misurazione dei risultati, DevOps favorisce un ciclo di sviluppo più efficiente e un miglioramento continuo dei processi.

La metodologia nasce in un preciso periodo storico: negli anni 2000, con la crescente complessità delle applicazioni e l’esigenza di rilasci più rapidi, si è reso evidente il divario tra team di sviluppo e di operations. DevOps arriva quindi come risposta a queste sfide, promuovendo una cultura di collaborazione, automazione e feedback continuo per migliorare la velocità, la qualità e l’affidabilità dei rilasci software.

DevOps: cosa fa

La tecnologia DevOps si basa su una serie di principi, pratiche e strumenti che favoriscono la collaborazione tra team di sviluppo e di operations per automatizzare il processo di sviluppo, test, rilascio e monitoraggio del software. Funziona tramite i seguenti step:

  • automatizza i processi di build, test e distribuzione del software per ridurre gli errori, accelerare i tempi di rilascio e migliorare la coerenza;
  • promuove una cultura di collaborazione e comunicazione tra sviluppatori, tester, amministratori di sistema e altri stakeholder coinvolti nel ciclo di vita del software;
  • lavora sull’integrazione continua (CI) in quanto i cambiamenti al codice vengono integrati regolarmente in un repository condiviso, testati automaticamente e validati;
  • prevede la consegna continua (CD) poiché il software viene automaticamente preparato per il rilascio in ambienti di sviluppo, test e produzione, in modo che sia pronto per essere rilasciato in qualsiasi momento;
  • utilizza strumenti di monitoraggio e feedback per raccogliere dati sulle prestazioni del software in tempo reale e ricevere feedback dagli utenti;
  • incoraggia una cultura in cui il cambiamento e il miglioramento sono parte fondante del processo.

Cultura DevOps

DevOps, come accennato all’inizio, è molto più di una tecnologia: è innanzitutto una cultura e un metodo che abbraccia l’intera organizzazione aziendale. Promuove una mentalità di collaborazione, trasparenza, responsabilità condivisa e miglioramento continuo che va oltre i confini tradizionali tra sviluppo e operazioni. Questa cultura permea tutti i livelli dell’organizzazione, influenzando sia le persone che i processi e le strutture organizzative. Per questo, la sua introduzione richiede un cambiamento culturale profondo e condiviso. Ciò può implicare l’adozione di nuove pratiche di lavoro, la ridefinizione dei ruoli e delle responsabilità, nonché la creazione di un ambiente che favorisca l’innovazione e la sperimentazione.

Cos’è Agile

Cosa sono Agile e DevOps? Agile e DevOps sono due approcci complementari ma distinti nel contesto dello sviluppo software. La metodologia Agile si concentra principalmente sul metodo di sviluppo del software, enfatizzando la flessibilità, la collaborazione e la consegna rapida di funzionalità utili. Si basa su principi come iterazioni brevi (sprint), sviluppo iterativo e incrementale, coinvolgimento del cliente e adattabilità ai cambiamenti dei requisiti. DevOps, come abbiamo visto, è una metodologia più ampia che si estende oltre lo sviluppo del software, coinvolgendo anche le operazioni IT. Quindi, mentre Agile si concentra principalmente sul metodo di sviluppo del software, DevOps abbraccia l’intero ciclo di vita del software, comprese le operazioni, per promuovere una consegna continua e affidabile del software.

Azure DevOps (DevOps Microsoft)

Azure DevOps è una suite di strumenti offerta da Microsoft per la gestione del ciclo di vita del software e la collaborazione tra team di sviluppo e di operations. Include:

  • strumenti per la gestione del codice sorgente (come Azure Repos);
  • la pianificazione e tracciamento delle attività (ad esempio con Azure Boards);
  • l’integrazione continua e il rilascio continuo (tramite Azure Pipelines);
  • il monitoraggio e il feedback degli utenti (attraverso Azure Test Plans).

Azure DevOps fornisce un ambiente integrato per la creazione, il test, il rilascio e il monitoraggio delle applicazioni, facilitando l’implementazione della metodologia.

Cosa fa un ingegnere DevOps?

Un DevOps engineer svolge un ruolo cruciale nel facilitare l’implementazione e il mantenimento della metodologia all’interno di un’organizzazione. Le responsabilità di un ingegnere DevOps possono variare leggermente da un’azienda all’altra, ma generalmente includono le seguenti attività:

  • automazione dei processi di sviluppo, test, rilascio e monitoraggio del software;
  • gestione delle infrastrutture  IT utilizzate per lo sviluppo e il rilascio del software;
  • integrazione continua e distribuzione continua (CI/CD);
  • monitoraggio delle prestazioni e gestione degli incidenti;
  • collaborazione e supporto con team di sviluppo, operazioni, qualità del software e altri stakeholder.
Aldo Agostinelli