Caratteristiche, differenze e integrazione del Configuration Management e Controllo di versione

Caratteristiche, differenze e integrazione del Configuration Management e Controllo di versione

Configuration Management e controllo di versione

Molto spesso si utilizza il termine source code management come sinonimo di configuration management. Tuttavia, un sistema di configuration management oppure di version control è qualcosa di più complesso. Esso, infatti, permette di memorizzare non solo il codice sorgente (source code) di una applicazione, bensì tutte le informazioni che servono a ricreare ambienti production like in qualunque stage della pipeline ci troviamo. Questi ambienti devono essere ricreati in maniera automatizzata, idealmente on demand a partire da script e informazioni di configurazione memorizzate all’interno di un sistema di versioning, senza richiedere alcun intervento umano. In un contesto come quello della release automation, dunque, non si può fare a meno di un sistema come quello di version control. Tutto ciò che verrà discusso successivamente, dalla continuous integration all’automated testing, dipenderà dall’avere memorizzato in un repository tutto ciò che è correlato al ciclo di vita di un progetto.

Caratteristiche, differenze e integrazione del Configuration Management e Controllo di versione

Molto spesso accade che gli aspetti più catastrofici di una release software emergano nell’effettivo ambiente di produzione, quando l’applicazione è sottoposta a un workload realistico. Quello che i team di sviluppo preferirebbero, è avere a disposizione degli ambienti productionlike per il testing, ancor prima che il software venga rilasciato effettivamente in produzione. Così facendo, essi sarebbero in grado di eseguire e testare continuamente il loro codice, riproducendo l’ambiente di produzione sulle loro workstation e ricevendo feedback immediato sulla qualità del loro lavoro. In assenza di un sistema di versioning, gli sviluppatori dovranno attendere che i sistemisti, appartenenti al team Operations, foniscano le configurazioni necessarie alla creazione di un ambiente di testing productionlike. Può accadere, purtroppo, che gli sviluppatori ricevano queste informazioni troppo tardi si parla addirittura di settimane non riuscendo a condurre test adeguati, oppure ottenendo configurazioni scorrette che incrementano il lead time discusso nel capitolo precedente. Con l’utilizzo di un sistema per il controllo versione, invece, diventa possibile riprodurre ambienti di sviluppo, testing e produzione in tempo reale si parla di minuti senza dover introdurre alcun tipo di bottleneck.

Anzichè attendere che gli ambienti vengano configurati manualmente prima di poterli riprodurre, è possibile utilizzare una procedura automatizzata che consente di:

  • Creare on demand una network di macchine virtuali, ad esempio utilizzando una immagine VMware o eseguendo uno script Vagrant
  • Utilizzare tool per infrastructures as code, quali Ansible, Chef o Puppet
  • Riprodurre on demand ambienti di sviluppo, testing, produzione, partendo da immagini di macchine virtuali o container (es. Vagrant, Docker)
  • Eseguire servizi sul cloud (es. Amazon Web Services, Google App Engine, Microsoft Azure)

L’obiettivo, inoltre, non è solo quello di riprodurre ambienti in maniera rapida, bensì anche quello di facilitare la collaborazione e la comunicazione tra i vari team, affinchè software affidabile, stabile e sicuro venga rilasciato.

Tutto questo ci consente di risolvere una serie di problematiche in fase di preproduzione, riducendo il rischio di doverle risolvere quando si è già in una fase avanzata del processo di deployment. Il corretto utilizzo di un sistema di questo genere, insieme alla definizione di una opportuna strategia di testing, rappresenta un requisito fondamentale per le pratiche di continuous integration

Pubblicato da Vito Lavecchia

Lavecchia Vito Ingegnere Informatico (Politecnico di Bari) Email: [email protected] Sito Web: www.vitolavecchia.altervista.org

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *