Se pensate che DevOps sia un po’ Dev e un po’ Ops, forse dovete leggere qui. Un tuffo nel paradigma che potrebbe cambiare il mondo dell’information technology.

E se DevOps fosse l’ennesima buzzword, una di quelle parole che diventano improvvisamente di moda, specie in un determinato contesto, senza significare nulla di preciso? Il dubbio è lecito. In fondo il mondo delle nuove tecnologie e dell’innovazione digitale ci ha abituati a queste fiammate lessicali. La moda dura al massimo qualche anno, poi tutti sembrano dimenticarsi della buzzword. E si gettano a capofitto nel nuovo abracadabra del momento.

Ma forse il caso di DevOps è diverso. Forse DevOps è una di quelle parole che sono qui per restare. E allora vale la pena di fare un po’ di chiarezza. Anche perché, quando si parla di DevOps, se ne sentono di tutti i colori. E questo non aiuta a valutare l’importanza di un paradigma che potrebbe cambiare il mondo dell’information technology.

Tutti sanno che quello del software è divenuto un modello chiave all’interno del business e delle organizzazioni in ogni settore: dall’industria ai servizi, dalla pubblica amministrazione al non profit, dalla produzione alla distribuzione e al commercio di qualsiasi bene, sia esso immateriale o materiale. La maggior parte delle aziende interagisce con i propri clienti tramite servizi online e applicazioni, e utilizza prodotti software anche per le operazioni giornaliere, negli ambiti della logistica, delle operations e della comunicazione. Si tratta di una percezione ormai chiara a chiunque, non solo agli addetti ai lavori.

Un po’ meno chiara, forse, è la necessità emersa negli ultimi anni di progettare, sviluppare e distribuire i prodotti software in modo diverso rispetto a quello seguito nel passato. Questa necessità, sempre più sentita dagli addetti ai lavori,  ha determinato la nascita di una nuova metodologia. È ciò che, appunto, chiamiamo DevOps.

I vantaggi DevOps: metodi, prima che strumenti

Contrariamente al senso comune, DevOps non riguarda solo tool, framework e automazione. È piuttosto una combinazione di principi, pratiche e strumenti che, se adottata all’interno di un’azienda, ne migliora l’abilità nel gestire e nel distribuire applicazioni e servizi al cliente. Grazie al modello DevOps, i team dedicati allo sviluppo e alla produzione non sono più separati tra loro, ma collaborano e comunicano fin dalle prime fasi dei progetti per raggiungere obiettivi comuni.

E quali sono tali obiettivi? Fornire al cliente ciò che desidera; essere pronti a fornirglielo ogni volta che vuole, e garantire rapidi aggiornamenti, mantenendo alta la qualità del prodotto distribuito.

DevOps abbatte la barriera che vede il team di sviluppo responsabile della sola scrittura del codice, e quello di operations legato al solo deploy dopo la fase di testing. Il team di operations assume piuttosto un ruolo attivo all’interno delle stesse fasi di sviluppo, influenzando la pianificazione del prodotto ed essendo al corrente delle sue caratteristiche. Allo stesso modo, il team di sviluppo si preoccupa di assistere il team di operations nella fase di deploy, nel caso in cui sorgano eventuali problemi.

Per completare il quadro, ci si affida all’automatizzazione e a strumenti innovativi, che non solo aiutano a portare a termine attività che di norma avrebbero richiesto l’intervento di altre unità aziendali, ma che migliorano la predicibilità dei rilasci riducendo gli interventi manuali necessari per portare un determinato prodotto nella fase di rilascio. Le parole chiave diventano Continuous Integration (CI) e Continuous Delivery (CD).

L’incremento della velocità con cui l’azienda riesce a muoversi permette alla stessa di servire i clienti con maggiore efficienza, di adattarsi meglio ai cambiamenti dei mercati e a competere in maniera più aggressiva al loro interno.

Aumentando la frequenza dei rilasci, si riesce anche a migliorare i prodotti più velocemente, risolvendo rapidamente i bug e rilasciando nuove feature, in modo da rispondere in maniera immediata ai bisogni del cliente. Tutto questo non può che condurre anche a un feedback positivo: il cliente è soddisfatto e rimane fedele all’azienda.

Il metodo DevOps assume rilevanza in un momento storico preciso per l’information technology, nel quale si manifestano cambiamenti importanti. Da un lato assistiamo alla diffusione della filosofia Agile nell’ambito del project management, in un numero crescente di contesti operativi; dall’altro siamo testimoni di un cambiamento epocale dal punto di vista delle infrastrutture IT: dal modello on premise a quello virtualizzato. Non c’è contraddizione fra questi fenomeni. Anzi: Agile, Cloud computing e DevOps sono tre elementi di un unico movimento.

Spindox c’è

Da circa un anno Spindox applica i principi del DevOps in un numero crescente di situazioni. Oltre a sposare la metodologia DevOps, si è trattato per noi di identificare una serie di strumenti per l’automazione delle operazioni e di sperimentarli in varie condizioni di impiego. Quello che segue è un rapido quadro delle scelte fin qui compiute.

Per il provisioning e la configurazione a livello infrastrutturale utilizziamo Ansible, una piattaforma di automazione open source supportata da una comunità importante su GitHub. Trattandosi di una tecnologia agentless, non implica l’installazione di alcun componente software sui sistemi remoti. Come soluzione per Continuous Integration (CI) e Continuous Delivery (CD) adottiamo Jenkins, altra soluzione open source. Si tratta di un programma in Java autocontenuto, con un’architettura basata su plug-in, che può essere usato come motore di automazione.

Vi è poi il discorso dei microservizi: Docker e Kubernetes forniscono l’accoppiata vincente per poter creare servizi resilienti, scalabili ed altamente disponibili. L’orchestrazione di tali servizi in produzione viene affidata a Rancher, piattaforma open source orientata alla gestione di applicazioni containerizzate su qualsiasi tipologia di cloud, sia pubblico che privato.

Come partner AWS, implementiamo la continuous delivery tramite i servizi CodePipeline e CodeBuild, integrandoli con il servizio di notifica SNS (simple Notification Service). Per l’orchestrazione dei Docker container ci affidiamo ad Amazon ECS ed ECR, e per un’amministrazione totalmente automatica delle infrastrutture utilizziamo AWS Lambda.