Quali sono e perchè utilizzare strumenti per l’automazione nello sviluppo software

Quali sono e perchè utilizzare strumenti per l’automazione nello sviluppo software

Automazione nello sviluppo software

Il processo di sviluppo del software ha a che fare quotidianamente con azioni delicate come l’integrazione del codice o il deployment dell’applicazione. Azioni di questo tipo erano storicamente eseguite da personale esperto, specializzato quindi nel portarle a termine correttamente secondo procedure standard. Al giorno d’oggi però, con la crescente complessità delle soluzioni richieste dal mercato, eseguire tali operazioni manualmente pùo portare facilmente a inconsistenze dovute in gran parte all’enorme quantità di variabili da tenere in considerazione. Avendo come scopo l’agilità nel consegnare soluzioni funzionanti ai clienti, non è più tollerabile la presenza di questo genere di inconsistenze.

La soluzione messa in atto della cultura DevOps, come già accennato nelle sezioni precedenti, è quella di automatizzare tutte le procedure che sono maggiormente soggette all’errore umano. In ambito DevOps con il termine automatizzare si intende, principalmente, rendere una qualsiasi procedura eseguibile tramite il lancio di un singolo comando definito in maniera standard a livello di progetto. La presenza di un solo comando rende improbabile l’errore umano e limita fortemente la possibilità di creare le incongruenze descritte in precedenza. In aggiunta, la standardizzazione delle procedure rispetto al progetto assicura che ogni volta che sia necessaria l’esecuzione di una procedura, questa venga sempre eseguita secondo gli stessi criteri, in maniera ripetibile. Solitamente questo comportamento si ottiene creando degli script trattati come parte integrante del progetto, ovvero tracciati dal controllo di versione e rispettanti gli stessi criteri di qualità del codice stesso, oppure tramite strumenti di terze parti.

Di seguito si analizzano le principali procedure soggette ad automazione.

Quali sono e perchè utilizzare strumenti per l'automazione nello sviluppo software

Integrazione

Quando è necessario integrare i commit di uno sviluppatore nel progetto intero, si fa uso di strumenti di version control come git in unione a servizi che mettono a disposizione repository remoti (GitHub, BitBucket o GitLab). Infine, per la continuous integration, prodotti come Jenkins, Travis CI o Bamboo si affiancano a quelli già citati.

Build

Anche il processo di build viene affidato a tool automatici. Un esempio è costituito dai popolari Gradle e Maven. I tool per la build automation consentono di eseguire il cosiddetto packaging delle applicazioni, ovvero la creazione di un singolo artefatto pronto per l’esecuzione. Durante questo processo occorre reperire eventuali dipendenze dell’applicazione e compilarle a loro volta, creando un struttura di dipendenze ad albero. Scopo di questi tool
è risolvere l’albero delle dipendenze in modo automatico e produrre l’artefatto eseguibile finale.

Testing

Anche parte del testing viene eseguito tramite script. Per questa fase si usano utilities come JUnit o Selenium. L’automazione di questa fase consente uno sviluppo molto più agevole e una scoperta degli errori molto più affidabile.

Deployment

La fase di deployment presenta alcune peculiarità che la rendono particolarmente delicata. Innanzitutto l’ambiente di destinazione potrebbe non contenere delle dipendenze esterne richieste dall’applicazione. Per risolvere questo problema in genere le applicazioni vengono ulteriormente “impacchettate” all’interno di macchine virtuali o, più recentemente, di software container. Entrambe le tecnologie consentono di “preparare” degli artefatti detti immagini che contengono tutte le informazioni necessarie e sufficienti all’esecuzione dell’applicativo, incluso l’applicativo stesso. A partire da un’immagine è possibile creare un’insieme di istanze che vengono messe in esecuzione, a questo punto con tutte le dipendenze necessarie.
L’altra problematica tipica della fase di deployment è la gestione della cosiddetta business continuity. In molti casi non ci si pùo permettere che il servizio offerto venga disattivato, a volte neanche per brevissimi periodi di tempo, mentre generalmente il processo di deployment potrebbe richiedere diverse ore. Esistono varie tecniche per evitare questa condizione, ma vengono in genere affidate a tool automatici.

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 *