Questo sito utilizza cookie per raccogliere informazioni sull'utilizzo. Cliccando su questo banner o navigando il sito, acconsenti all'uso dei cookie. Leggi la nostra cookie policy.OK

Metodologia DevOps: quali sono i tool e come sceglierli

pittogramma Zerouno

Tech InDepth

Metodologia DevOps: quali sono i tool e come sceglierli

10 Nov 2017

di Giorgio Fusari

La grande ricchezza di strumenti disponibili sul mercato, sia di tipo open source sia commerciali, in concomitanza con abitudini di lavoro difficili da scardinare, rende complesso migrare verso il modello DevOps in maniera semplice. Per orientarsi nella selezione è utile una classificazione dei principali tool e anche qualche indicazione sui criteri base di implementazione

Il paradigma DevOps è una dimensione della trasformazione digitale che si fonda sulla stretta, costante e complessa collaborazione bidirezionale, all’interno di un’impresa, tra i team di sviluppo e test applicativo e le IT operation. Un numero crescente di organizzazioni punta verso la metodologia Agile/DevOps per razionalizzare la fluidità di movimento del codice tra i team dei reparti sviluppo e le operation, e per liberarsi dai rigidi e gerarchici schemi di creazione del software come quelli ‘a cascata’ (waterfall), che rallentano la velocità di rilascio di nuove versioni delle applicazioni, nuove funzionalità.

Al contempo, però, per assicurare che DevOps operi nel modo giusto e dia i suoi frutti, occorre anche instaurarlo integrando nel processo i corretti cicli di feedback tra i vari team di lavoro, quindi introducendo i tool adatti ed elevati livelli di controllo. Un compito difficile, perché il trend DevOps sta crescendo con tale rapidità che la sua adozione viene guidata dal basso, seguendo un approccio, cosiddetto, ‘bottom up’: con così tanti strumenti disponibili sul mercato, molto spesso in forma open source, non è un problema per lo sviluppatore di un team scaricarsi il tool che trova utile per sé e cominciare a usarlo. In questo caotico scenario di ‘shadow IT’, dove gli amministratori di sistema tendono a perdere il controllo degli strumenti usati dagli sviluppatori, e dove dominano insiemi diversi di tool DevOps, risulta arduo per un’impresa riuscire a introdurre una catena omogenea di strumenti. La ricetta magica per scegliere i tool di sviluppo più adatti a soddisfare alcune particolari esigenze aziendali non esiste, tanto più che tali strumenti, sia di tipo open source, sia proprietario e commerciale (closed source), proliferano nel settore.

Macrocategorie di strumenti DevOps

La classificazione degli strumenti DevOps in poche macrocategorie, strettamente correlate alle principali fasi del ciclo di sviluppo applicativo, può aiutare nel processo di selezione. Ecco quindi alcune aree funzionali chiave che si possono distinguere.

  • Strumenti di controllo di versione. In una prima categoria sono ascrivibili gli strumenti di gestione e automazione del codice che, attraverso un database, tengono traccia, nel tempo, di tutte le modifiche a un file o a una serie di file, richiamando all’occorrenza specifiche versioni. Oltre ad aiutare i team software a gestire nel tempo questi cambiamenti mantenendo l’ordine, i tool di controllo versione consentono agli sviluppatori di collaborare e lavorare in parallelo, come membri di un sistema di progettazione concorrente del software.

Uno dei tool più popolari in quest’area è, ad esempio, Git, un sistema distribuito di controllo versione, liberamente disponibile in modalità open source e studiato per gestire con velocità ed efficienza progetti di piccole o grandi dimensioni. Oltre a Git esiste anche il servizio cloud GitHub, una piattaforma di sviluppo che funziona come repository e luogo di condivisione, revisione, gestione, documentazione del codice e dei progetti. Altri servizi basati su Git sono forniti dai principali cloud provider: ad esempio, Cloud Source Repositories, di Google; Visual Studio Team Services, disponibile su Microsoft Azure; CodeCommit (AWS); Bitbucket (Atlassian), e molti altri. Naturalmente non esiste solo Git: tra gli altri popolari sistemi di controllo versione si possono per esempio citare SVN (Subversion) di CollabNet o Mercurial.

  • Strumenti per l’integrazione continua e la distribuzione continua (CI/CD – continuous integration/continuous delivery). Componenti essenziali della metodologia Agile/DevOps, gli strumenti CI/CD hanno il compito di fondere in automatico nella linea base del codice sorgente, ospitata e condivisa nel repository, tutti i cambiamenti apportati dai diversi sviluppatori del team al codice stesso. Tra i tool CI più diffusi si colloca Jenkins, un server di automazione open source utile per rendere automatiche tutte le operazioni legate alla costruzione, al test e all’implementazione del software. Rispetto a Jenkins le alternative non mancano, basti pensare a tool come Travis CI, Buildbot, Integrity, Go, CircleCI, Codeship e molti altri.
  • Strumenti di gestione della configurazione. Si tratta di tool che si occupano di amministrare e automatizzare l’installazione, la configurazione e l’aggiornamento delle applicazioni nell’infrastruttura IT. Un buon esempio può essere il prodotto Chef. Ad esempio, Chef Automate permette a organizzazioni con infrastruttura e app basate su una complessa combinazione di risorse on-premise e cloud-based di automatizzare e velocizzare il deployment applicativo. Tra gli altri tool più popolari con funzionalità analoghe si possono citare Puppet, Ansible, Salt.
  • Strumenti di automazione dell’infrastruttura. Questi tool vengono anche denominati tool IaC (infrastructure-as-code) perché permettono di automatizzare il deployment dell’infrastruttura, amministrandola via software, tramite modelli e file di configurazione che descrivono i componenti, gli stack di risorse (hardware fisico o macchine virtuali) richiesti per far funzionare una singola applicazione, o anche un intero data center. Esempi di questi strumenti sono Terraform e Packer (HashiCorp), CloudFormation (AWS), Habitat (Chef). Naturalmente, tutti questi tool operano a stretto contatto con i tool di gestione della configurazione.

Come agire: linee guida utili

Prima ancora che tecnico, il percorso da compiere per introdurre nell’impresa il modello DevOps è prettamente culturale, e non passa semplicemente attraverso una corretta selezione di strumenti software.

Se l’obiettivo di questa metodologia è instaurare un elevato livello di interazione e collaborazione tra reparto di sviluppo software e IT operation, lungo l’intero ciclo di vita (creazione, test, fornitura) del codice, gli scenari caotici a cui si accennava, dove i diversi team usano insiemi di tool differenti, sono esattamente ciò che si vuol evitare. Tali gruppi di lavoro devono infatti cooperare a tutti i livelli della catena e, per farlo, la prima cosa è stabilire, e rendere condivisa, quindi accettata e realmente messa in pratica da tutti gli addetti, una strategia di adozione di un insieme comune di strumenti, utilizzabili sia dai team di sviluppo, sia dagli amministratori IT.

In secondo luogo, una buona pratica, quando si arriva alla fase di selezione vera e propria dei tool, è partire da un’attenta analisi preliminare della situazione esistente in azienda: è infatti importante comprendere quali sono gli strumenti già utilizzati dagli sviluppatori nei vari progetti, se funzionano in armonia con gli stack infrastrutturali usati in produzione, e se possono essere in grado di supportare anche il lavoro di altri team. Questo soprattutto nell’ottica di sfruttare al massimo ciò che già di buono è in essere, e di evitare, senza una reale necessità, l’introduzione di tool alternativi che potrebbero rivelarsi di uso complesso e richiedere una lunga curva d’apprendimento.

Una terza, e non certo ultima, raccomandazione è poi dare importanza non solo agli strumenti CI/CD, ma anche a quelli di ‘continuous feedback’, e alla creazione di framework che permettano ai team di sviluppatori e ai gruppi di lavoro delle IT operation di monitorare la cosiddetta ‘user experience’, quindi come software e app vengono fruiti e giudicati dagli utenti finali. Solo così, infatti, i processi DevOps acquistano realmente senso, attraverso la possibilità di correggere con la massima rapidità i problemi e difetti riscontrati, per consegnare agli utilizzatori finali software di qualità sempre maggiore.

Giorgio Fusari
Giornalista

Nel settore giornalistico dal 1989, Giorgio Fusari negli anni ha collaborato per numerose pubblicazioni nel panorama tecnologico e ICT italiano, tra cui la rivista NetworkWorld Italia (gruppo IDG); il settimanale di tecnologia @alfa, del quotidiano Il Sole 24 Ore, la testata Linea EDP. Dal 2012 collabora con il gruppo Digital360 e in particolare con ZeroUno. Tra le aree di maggior specializzazione di Giorgio, il crescente universo dei servizi cloud, il networking, le tecnologie di cybersecurity.

Argomenti trattati

Approfondimenti

D
Devops
M
Metodologie
S
Software

Articolo 1 di 4