Tag

, , ,

La trasformazione digitale è un processo che le aziende devono attraversare per poter mantenere un vantaggio competitivo in un contesto in cui il mercato è sempre più mutevole. Gli approcci di gestione dei sistemi IT tradizionali, basati su silos aziendali, risultano oramai inadeguati di fronte alle esigenze di cambiamenti frequenti in tempi molto stretti.
Queste sfide, in aggiunta al fatto che i sistemi informativi diverranno sempre più complessi, spingono le organizzazioni a una presa di coscienza per poter affrontare una situazione che rischia di diventare ingestibile.

Proprio per questo, sempre di più le organizzazioni italiane stanno cercando di accogliere i principi DevOps all’interno del proprio ecosistema IT. DevOps è una metodologia riconosciuta a livello internazionale ed è la combinazione di due termini: Development (le attività di sviluppo) e Operations (la messa in produzione di quanto realizzato dagli sviluppatori). Il nome incarna un’esigenza di maggior collaborazione e coinvolgimento tra gli uffici, entrando quindi in forte contrapposizione al modello a silos, dove ogni reparto tende a procedere “per conto proprio” o addirittura a discapito degli altri.

Secondo la nostra esperienza, DevOps presenta molteplici definizioni, a seconda del punto di vista che si vuole enfatizzare:

  • Punto di vista organizzativo: una metodologia che cerca di ridurre le barriere di comunicazione tra i Dev (tutti gli attori coinvolti nello sviluppo) e gli Ops (release manager, sistemisti, database administrator… ).
  • Punto di vista business: insieme di pratiche volte a ridurre i tempi tra la richiesta di un cambiamento al sistema e la sua attuazione, pur mantenendo un’alta qualità del software.

Le principali aree di competenza:

  • Continuous Integration, Testing e Delivery: metodologie che contribuiscono ad abbassare i tempi e il rischio del rilascio software. Gli sviluppatori integrano regolarmente le modifiche apportate al codice in un repository centralizzato e, mediante l’uso di strumenti automatici, sottopongono il nuovo codice a controlli di qualità in modo da individuare rapidamente i bug da correggere. I rilasci del software, conseguentemente, devono essere frequenti e automatizzati.
  • Monitoring: è importante avere un quadro chiaro del sistema IT e avere tracciabilità dei cambiamenti effettuati. Un uso efficace degli strumenti di monitoraggio permette non solo di risolvere tempestivamente eventuali malfunzionamenti, ma anche di individuare quali sono le aree (sia tecniche che di processo) che necessitano di ulteriori miglioramenti.
  • Infrastructure as a Code: propone di gestire con metodologie di sviluppo software, linguaggi di alto livello e sistemi di versionamento tutti gli aspetti legati all’infrastruttura e alla configurazione delle macchine. Questo approccio porta molteplici benefici. In primo luogo si riducono in maniera significativa tutte quelle anomalie causate da un disallineamento degli ambienti, rendendo il processo di rilascio più agile ed efficiente. Inoltre, grazie alla capacità di riprodurre deterministicamente un ambiente, risulta molto più semplice scalare orizzontalmente.

Come si può comprendere dai punti elencati, l’automazione gioca un ruolo determinante: la maggior parte dei rallentamenti nel rilascio di una nuova funzionalità è causata dall’errore umano. Pertanto, tutto ciò che è ripetitivo e incline agli errori dovrebbe essere delegato a una macchina e non più all’uomo.

Proprio per questo, quando si parla di DevOps spesso si pone l’attenzione sugli strumenti volti all’automazione del ciclo di vita del software. Però questo non basta: DevOps, per essere tale, richiede uno sforzo sinergico e a stretto contatto di tutti gli attori coinvolti nel processo produttivo, volto al raggiungimento di un obiettivo comune.

La sfida quindi non è soltanto tecnica ma richiede un cambio di mentalità: per sfruttare al meglio DevOps vanno abbandonati i silos aziendali e vanno invece adottate pratiche e metodologie che favoriscono collaborazioni e interazioni trasversali tra tutte le persone coinvolte nel nuovo processo.

 

Approfondimenti

Comparing DevOps to traditional IT: Eight key differences (devops.com)

DevOpsCulture (martinfowler.com)