Get In Touch
Piazza Borgo Pila, 40/56
16129 Genova
info@gmgnet.com

La metodologia DevOps: che cos’è e come applicarla

 

DevOps: cos’è e perchè è nata questa metodologia

DevOps è una metodologia di lavoro in cui development (attività di sviluppo) e operations (la messa in produzione) collaborano tra di loro. Possiamo dire che la metodologia DevOps è un set di pratiche che consente di automatizzare e velocizzare il rilascio del software.

Perché è nata questa esigenza?
Con l’avanzare degli anni, il tempo richiesto per il rilascio del software è diminuito e i clienti sono sempre più esigenti. È nato quindi il bisogno di introdurre all’interno delle aziende nuove metodologie di lavoro che aiutano i team a lavorare più efficacemente e dove le applicazioni evolvono passo dopo passo: il team di sviluppo lavora in modo sinergico mentre qualcuno riscrive i servizi che non funzionano (bug) e altri ottimizzano quelli già esistenti.
Per far sì che questo modo di lavorare sia efficiente e non crei disagi e disorganizzazione al team di sviluppo, c’è bisogno di utilizzare un approccio e una metodologia rigorosa come appunto DevOps e Agile.

Cos’è la metodologia Agile?

La metodologia agile è un approccio allo sviluppo basato sulla distribuzione continua di software efficienti creati in modo rapido e iterativo.

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.

In pratica, la metodologia agile consiste nel rilasciare rapidamente modifiche o implementazioni di piccole porzioni con lo scopo di migliorare la soddisfazione dei clienti, tenendoli sempre aggiornati sullo sviluppo dell’applicazione.

Il Waterfall è il metodo da seguire per progetti con budget e tempi relativamente definiti, in cui gli attori coinvolti sono molti e si ha la necessità di una maggiore strutturazione delle attività. Il metodo Agile è perseguibile in condizioni più flessibili, in cui il focus è prevalentemente sulle esigenze di business.

Pro:

  • Maggiore flessibilità;
  • Maggiore produttività;
  • Maggiore trasparenza;
  • Prodotti di qualità superiore;
  • Diminuzione del rischio di mancati obiettivi;
  • Maggiore coinvolgimento e soddisfazione delle parti interessate.

Contro:

  • È più difficile misurare il progresso rispetto a Waterfall perché il progresso avviene attraverso diversi cicli
  • I progetti possono diventare duraturi perché non c’è una fine chiara
  • Agile richiede più tempo ed energia da tutti perché sviluppatori e clienti devono interagire costantemente tra loro

Il modello

Come già accennato precedentemente, nel modello in questione i team dedicati a sviluppo e produzione agiscono insieme, con un approccio moderno per raggiungere obiettivi di business aziendali che coinvolgono:

  • Pianificazione: in contrasto con gli approcci tradizionali di gestione dei progetti, la pianificazione Agile organizza il lavoro in brevi iterazioni (es. Sprint) per aumentare il numero di rilasci
  • Sviluppo continuo: piccole porzioni per una produzione migliore e più veloce
  • Integrazione continua: allineamento frequente (ovvero “molte volte al giorno”) dagli ambienti di lavoro degli sviluppatori verso l’ambiente condiviso (mainline)
  • Test continuo
  • Consegna continua
  • Distribuzione continua
  • Monitoraggio continuo: rilevare le aree problematiche di un processo e analizzare il feedback del team e degli utenti

 

DevOps è una filosofia di lavoro orientata a obiettivi condivisi, controllo delle versioni, automazione, misurazione e miglioramento.
Esistono dei framework che aiutano nella pianificazione ma tutto parte dal cambio di mentalità: gli strumenti non sono la soluzione.

L’approccio al metodo DevOps va di pari passo con i container, che forniscono al team le basi per sviluppare in modo cloud native.
I container supportano un ambiente unico per lo sviluppo, l’erogazione, l’integrazione e l’automazione.

Quali sono i reali vantaggi di DevOps?

  • Velocità: processi più agili per velocizzare l’innovazione e adattarsi meglio ai cambiamenti
  • Collaborazione tra i team
  • Mentalità innovativa
  • Risoluzione più rapida dei problemi

… E quali sono invece gli svantaggi?

  • Richiede un forte lavoro di squadra
  • Richiede Tempo
  • Sicurezza

DevSecOps

In tutta la metodologia devOps, la sicurezza non è uno dei punto cardine, come invece lo è la velocità di distribuzione continua del software.
Per questo è stato introdotto il DevSecOps dove, a differenza di quello precedente, la sicurezza viene presa in considerazione in ogni step di sviluppo del progetto non è più una problematica a cui ci si pensa alla fine ma bensì fin dalla pianificazione.

I valori Aziendali con l’introduzione di DevOps

Le Implementazioni delle best practices di DevOps portano dei miglioramenti all’azienda come risparmiare tempo e denaro, costruire una cultura aziendale attorno all’innovazione e mantiene alti i livelli di motivazione ma non solo l’azienda acquisisce anche dei valori quali:

  • Tempi di consegna veloci: I principi chiave di DevOps sono la produzione continua, l’automazione e il feedback istantaneo. Questi principi aiutano a rendere lo sviluppo del software più veloce ed efficace.
  • Migliore collaborazione tra i team.
  • Rilascio e distribuzione continui.
  • Maggiore stabilità: tutte le modifiche possono essere testate sull’intero sistema software canonico con conseguente maggiore stabilità.
  • Prevedibilità: DevOps gioca un ruolo significativo riducendo il rischio di quei glitch scoperti all’ultimo minuto. DevOps migliora anche i risultati, le prestazioni e la prevedibilità dei programmi di sviluppo software questo perchè rilasciando piccole porzioni di codice esse vengono testate prima di essere messe in produzione. Mentre rilasciando blocchi di codice consistenti c’è più rischio di errore.
  • Manutenibilità: processo di ripristino senza sforzo in caso di arresto anomalo di una nuova versione o disattivazione del sistema corrente.

Come introdurre DevOps

1. Il team di sviluppo deve iniziare ad usare la metodologia Agile.

2. Durante lo sviluppo, si deve applicare il principio della Continous Integration ovvero ogni modifica fatta deve essere testata e successivamente installata su un server di test così che terzi (QA) potranno eseguire i test ufficiali.

3. Quando si sviluppa una nuova features è importante coinvolgere il team che se ne occuperà perchè saranno in grado di indicare se è possibile oppure no.

4. Developer devono essere responsabili di quello che viene rilasciato in produzione, in caso di errore dovrebbe esserci sempre un developer che affianca chi mantiene l’applicazione.

5. Attuare sistemi di monitoraggio del software, a cui accederanno anche i developer, in questo modo è più facile trovare condizioni di errore e automatizzare i processi per la soluzione.

6. Automatizzare i metodi di rilascio del software, minore intervento umano significa minore rischio di errore.

Tutte questi cambiamenti abbracciano l’intero processo di sviluppo con il solo scopo di ridurre il time to market (tempi di ciclo ridotti e tassi di implementazione più elevati) e migliorare la qualità del software.

DevOps Engineer

Ovviamente non è facile gestire un team devOps per questo è stata introdotta una figura professionale chiamata DevOps Engineer che svolge attività di collegamento tra i gruppi di sviluppo e di operations.
Il DevOps Engeneer è un sistemista, un programmatore ma anche un ricercatore, in quanto è suo compito trovare la soluzione più adatta ai problemi che possono presentarsi durante i processi. È una figura ibrida che assume il ruolo di coordinatore di tutte le fasi del rilascio.
Un buon DevOps Engineer deve avere ottime doti comunicative, sia verbali che scritte. Il suo obiettivo è quello di favorire la collaborazione tra le divisioni per ottimizzare sia la produttività degli sviluppatori che l’affidabilità delle operazioni.