Deployment automation: update veloci ed affidabili

triangolo

Application deployment automation: update con un solo comando

La deployment automation permette di trasferire il software dall’ambiente di test a quello di produzione -e viceversa- tramite processi automatizzati: si ottengono così deploy ripetibili e affidabili per l’intero ciclo di distribuzione dell’applicativo. Questa funzionalità rientra nel concetto, tipico del DevOps, delle pipeline CI/CD e si riferisce proprio al continuous deployment degli artefatti. Questo permette di eseguire degli update degli ambienti di sviluppo, certificazione e produzione con un solo comando, favorendo la velocità e l’efficienza del deploy. 

Approfondisci il tema: scarica il white paper “DevOps e DevSecOps: approccio innovativo e collaborativo allo sviluppo software”!

SCARICA

In un modello di sviluppo che non segue le logiche del DevOps, gli sviluppatori devono attendere il feedback del reparto Operations, con conseguenti rallentamenti del processo di sviluppo e ritardi nella delivery.

Con il continuous deployment invece è possibile: 

  • Rilasciare nuove feature più velocemente e frequentemente;
  • Testare se le nuove feature funzionano come dovrebbero tramite unit o integration test integrati nel processo di deploy. Con la possibilità di impostare dei vincoli di copertura del codice e blocco del deploy preventivo;
  • Deployare l’applicativo in un ambiente reale e monitorarne il comportamento quando interagisce con gli altri strumenti e le dipendenze, permettendo l’individuazione anche dei bug più difficili da intercettare;
  • Lavorare con task automatizzati e ridurre il lavoro manuale, riducendo la percentuale di errore al minimo e il costo di progetto.

Deployment automation DevOps: meno errori, massima velocità

Le pipeline CD e la deployment automation è divisa in diverse fasi:

  • Compilazione del codice;
  • Unit test;
  • Analisi del codice;
  • Installer creation.

Se tutti questi passaggi vengono completati correttamente, gli eseguibili vengono assemblati in file archiviati in un repository di artefatti per un uso successivo.

Con il deploy automatico, la qualità del test influisce direttamente sulla qualità dei rilasci: per questo la sua adozione comporta in primis un cambiamento nell’approccio dello sviluppo del software. 

Il processo di distribuzione del software è soggetto a diversi errori. Il deployment è un processo controllato normalmente da una shell script. Spesso ci sono 15-20 script diversi che vengono creati e gestiti manualmente dai developer. Quando è richiesto un aggiornamento, il tempo necessario ad assicurarsi che non ci siano errori potrebbe essere piuttosto rilevante, seppur fondamentale per non incorrere in basse performance o eventuali blocchi.

Con una distribuzione continua invece: 

  • le implementazioni automatizzate sono più rapide di quelle manuali;
  • niente è dato per scontato;
  • percentuale di rischio lato sicurezza ridotto al minimo;
  • Costi inferiori grazie al lavoro più efficiente degli sviluppatori;
  • MTTR (Mean Time To Repair) più veloce grazie al rollback automatico.

Software deployment automation tools

Per la costruzione e gestione delle pipeline, e quindi del deployment automation, esistono diversi tool in commercio, anche open-source. Il più utilizzato tra le soluzione open è senza dubbio Jenkins che esegue container e plug-in, come Apache Tomcat. Oltre 1700 plug-in arricchiscono i processi di integrazione, automazione e distribuzione del software e forniscono un ambiente personalizzabile. Essendo un tool in circolazione da diversi anni, è adatto alle tecnologie legacy ma supporta anche applicativi cloud-native.

GitLab, disponibile sia on-premise che in cloud, funziona esclusivamente con il suo sistema di repository. Offre distribuzione continua, verifica e rollback della distribuzione manuale, RBAC a grana fine, audit trail completi e proprietary secrets management.

Il deploy automatico è incluso nelle soluzioni di continuous integration, rappresentando il secondo step delle pipeline CI/CD.

Il processo di integrazione continua è sicuramente più maturo rispetto alla parte di deploy e delivery, ma le piattaforme includono normalmente entrambe. Ne abbiamo parlato in questo articolo.

Container deployment automation

Per ottenere maggiori risultati dalla deployment automation e, in generale, dalle pipeline DevOps, è bene che l’azienda decida in primis di containerizzare gli applicativi.

Le pipeline CI/CD funzionano decisamente meglio con applicativi containerizzati: un container, infatti, impiega solo pochi secondi per essere avviato e risponde alle esigenze di innovazione portate avanti dall’automazione tramite pipeline.

Gli applicativi containerizzati non utilizzano la stessa mole di risorse delle macchine virtuali, sono più veloci, non richiedono un’installazione e sono altamente portabili. 

La deployment automation di un container permette di creare e lanciare un’immagine Docker in automatico, che passa poi agli strumenti di orchestrazione come Kubernetes e Openshift.

 

Scopri di più sulla metodologia DevOps