DevOps e approccio Agile

devopsDevOps è una metodologia di organizzazione dello sviluppo software che si è formata intorno al 2009 (sebbene le sue radici risalgano ad alcuni anni prima).

DevOps integra i settori operativi di un’organizzazione con lo sviluppo software applicando approcci di integrazione continua e distribuzione continua (CI/CD) allo sviluppo software tradizionale.

L’approccio DevOps trasforma il processo di creazione del software in una pipeline automatizzata e ottimizzata per favorire la velocità di consegna.

La pipeline di software deve garantire sicurezza, qualità e stabilità automatizzando la creazione e il test di infrastrutture e applicazioni e dimostrarne progressivamente l’idoneità fornendo feedback (tramite test) prima di distribuire il software agli utenti finali.

In questo contesto, tutti lavorano per migliorare continuamente il flusso (velocità) e il feedback della pipeline del software.

I silos dipartimentali (Prodotto/Sviluppo/QA/Operazioni) sono antitetici alle pipeline software. Portare con successo una build software attraverso la pipeline richiede competenza e collaborazione interfunzionali.

Pertanto, DevOps richiede modifiche all’organizzazione, cultura e struttura dei team.

Quindi si può dire che:

  • DevOps si applica principalmente alle aziende che creano o assemblano il proprio software, anziché utilizzare solo software pre-costruito.
  • DevOps offre il massimo valore alle aziende in cui la velocità di consegna offre un vantaggio competitivo significativo.

Differenza tra DevOps e Agile

DevOps, in molti modi, è l’espansione dell’approccio di sviluppo agile.

Lo sviluppo agile tende a consentire la risoluzione dei problemi per team più piccoli, mentre DevOps per natura tende a lavorare tra i reparti per raggiungere rapidamente obiettivi più grandi.

Quindi c’è una differenza di scala di applicazione. Ai team DevOps vengono assegnate porzioni più grandi del software da sviluppare mentre l’approccio agile si concentra su una pluralità di team più piccoli cui vengono assegnate piccole porzioni del software per privilegiare la velocità di sviluppo.

La velocità in DevOps viene perseguita attraverso l’integrazione interfunzionale che però richiede modifiche organizzative.

Inoltre DevOps si basa fortemente su strumenti di automazione dei processi come, ad esempio, “Infrastructure as Code”, mentre agile si concentra su un approccio collaborativo alla risoluzione dei problemi.

Naturalmente, i due approcci possono funzionare bene assieme purché vengano applicati in quei casi che si possono giovare dei punti di forza di ciascuno.