Ciclo di sviluppo

Il processo di Continuous Integration (CI) è il sistema che permette di avere un software sempre aggiornato ed in costante evoluzione, senza dover seguire rigide tempistiche legate al completamento di tutti i task seguiti dal team di sviluppo.

La CI viene chiamata così proprio perché l’integrazione del nuovo codice, avviene rapidamente e senza interruzioni, senza dover aspettare il completamento delle sezioni degli altri sviluppatori o degli altri team.
Gli sviluppatori possono aggiungere il codice alla linea principale in qualsiasi momento, anche più volte al giorno, perché il codice sorgente resta aperto e disponibile. Questo dà l’opportunità di inserire porzioni di codice più piccole con la conseguenza di impegnare meno risorse per essere gestite e controllate, in caso ad esempio di eventuali errori che possono essere rilevati immediatamente e, nel migliore dei casi, corretti nell’immediato.

La struttura che gestisce la CI ha necessità di alcuni prerequisiti base, come:

  • Il Repository
  • Un server di Continuous Integration (CI)
  • La Containerizzazione

Il repository è lo spazio dove viene rilasciato il codice dagli sviluppatori. Necessario per automatizzare le relative build (il processo di trasformazione da codice sorgente a codice binario, per permettere l’esecuzione delle istruzioni) ed i test ed è quindi fondamentale per tutto il processo.
Una volta che il codice viene reso eseguibile attraverso il processo della containerizzazione questo viene installato per poter usufruire dell’applicazione. Le tecnologie applicative utilizzate sono GIT per il repository, Jenkins per quanto riguarda la CI, Docker per la containerizzazione del software ed infine Ansible per il deploy dell’ambiente.

Il prodotto containerizzato è pronto per essere deployato su un’infrastruttura cloud in due modalità ovvero la prima schedulata e la seconda invece in Continuous Deployment.

Quest’ultimo processo attualmente viene utilizzato in ambiente di test effettuando un deploy giornaliero del prodotto non appena il flusso della CI è completato per poter permettere al reparto dei testatori tutte le verifiche sull’applicativo Mago Cloud.

Il Canary Update

Successivamente all’attività di deploy, che porterà ad un successivo aumento di versione e quindi una serie di modifiche da apportare alla sottoscrizione, sarà necessario rendere operative le subscriptions presenti nell’istanza appena aggiornata.

Ogni volta che un utente accede all’applicazione tramite le credenziali, il sistema di autenticazione identifica l’utente e la subscription. Una volta identificata la subscription, il sistema capisce quali sono I microservizi che la subscription può utilizzare attraverso una mappa. Questa mappa è legata alla subscription per tutta la sessione di lavoro dell’utente

Grazie a questo concetto di Mappa di Istanza, ogni volta che il prodotto Mago Cloud deve essere aggiornato, la subscription verrà migrata su una nuova mappa che contiene gli indirizzi dei nuovi microservizi. Questo avviene in maniera automatizzata e con lo scopo di ridurre al minimo l’impatto sull’operatività dell’utente finale.

Questo sistema, chiamato Canary Update, è responsabile di migrare tutte le subscription a una nuova versione del software. Il sistema gestisce in maniera automatizzata l’upgrade del database e delle configurazioni necessarie al funzionamento dell’applicazione.

Il Canary Update opera tramite migration plan relativi a gruppi di subscriptions. Grazie a questa strategia di upgrade distribuita, le subscription possono continuare a lavorare indisturbate fino al loro turno di upgrade. La funzione fondamentale è quella di non bloccare l’ambiente nell’attesa del completamento dell’aggiornamento del prodotto, ma dare la sensazione che si risolva tutto in pochi istanti quando invece l’attività viene diluita in un lasso di tempo lungo ed organizzato proprio per non far incorrere il cliente in un possibile fermo macchina prolungato.

Altro beneficio del sistema di Canary è la possibilità di isolare eventuali problemi che potrebbero verificarsi durante l’aggiornamento, il sistema riconosce situazioni di errore e può evitare che siano propagate alle restanti subscriptions.

Siamo a tua disposizione! Parlaci del tuo problema, noi ti offriamo la soluzione.