AWS CodeDeploy per la gestione dei rilasci software in Cloud
da Massimo Della Rovere · pubblicato il 31 dicembre, 2014 · modificato il 12 luglio, 2016

Il servizio di AWS CodeDeploy permette la gestione dei rilasci software in modo più sicuro rispetto al metodo manuale tradizionale. CodeDeploy permette di eseguire un rilascio in modo semplice sia se parliamo di una sola istanza EC2 che di mille. Infatti, come vedremo meglio in seguito, sarà possibile evitare fermi di servizio e rilasciare la nuova versione in maniera molto rapida e riducendo notevolmente gli errori manuali.

A dirvi la verità, come fan di Amazon EC2, ho sempre invidiato i miei colleghi che usano il servizio di Elastic Beanstalk proprio per questo particolare aspetto. Infatti su Beanstalk il discorso del deploy è molto semplice e ben automatizzato, mentre su EC2 bisognava in qualche maniera organizzarsi con script e molte volte con operazioni manuali. Finalmente con questo servizio adesso possiamo giocare ad armi pari :)

Introduzione

Con questo servizio possiamo ottenere un controllo centralizzato che riguarda i rilasci di versione della nostra applicazione attraverso la management console, AWS CLI, le API e i diversi SDK rilasciati. È possibile anche controllare l’avanzamento del rilascio in tempo reale e controllare lo storico dei rilasci precedenti (memorizzati dal servizio) per pianificare in maniera più efficace i tempi e il periodo giusto del nuovo rilascio.

AWS Code deploy

AWS CodeDeploy è implementabile con qualsiasi piattaforma, Windows, Linux, etc e con qualsiasi software o applicazione. Inoltre è possibile implementare nel proprio software tutte le azioni particolari che devono seguire l’avanzamento del nuovo rilascio. Basterà utilizzare le numerose API messe a disposizione dalla stessa Amazon.

Il rilascio di una applicazione può contenere una serie di elementi più o meno complessi, come ad esempio dei file di codice, file di configurazione, eseguibili, pacchetti software, script di sistema, etc, etc. Con il servizio di AWS CodeDeploy tutti questi elementi possono essere memorizzati su S3 o su dei repository GitHub.

Funzionamento

Prima di passare alla configurazione vera e propria, vorrei perdere ancora un po’ di tempo sulla spiegazione del funzionamento generale che riguarda il servizio. In questo caso userò la stessa immagine e la stessa descrizione usata nella documentazione ufficiale che rende molto bene l’idea. Inoltre vorrei ricordare che esiste un servizio (in certi aspetti simile ma con obiettivi diversi) che si chiama CloudFormation.

AWS Deploy Architecture

(1) Sviluppo: bisogna creare un contenuto che identifica il nuovo rilascio, questo sviluppo può essere svolto su una stazione personale o su dei server dedicati. Dobbiamo aggiungere un Application Specification File, il quale è un file unico nell’ambiente AWS CodeDeploy e include tutte le azioni che devono essere eseguite durante la fase del rilascio. È possibile inserire questo file insieme a tutte le risorse da rilasciare in un’archivio unico ed eseguire un upload su S3 o pubblicare tutto su GitHub.

(2) Configurazione: in questa fase bisogna indicare al servizio di AWS CodeDeploy tutte le informazioni che riguardano il rilascio. Ad esempio se le specifiche stanno su S3 o in un repository GitHub. Bisognerà specificare anche il sistema target tramite il nome del gruppo che identifica tutte le istanze EC2 che devono far parte del rilascio.

(3) Controllo: un agent di CodeDeploy presente su ogni partecipante al gruppo richiede le informazioni che riguardano tutte le azioni da eseguire per il nuovo rilascio. Come vedremo è possibile implementare questa funzione anche con il servizio Auto Scaling.

(4) Aggiornamento: ogni agente presente negli elementi target provvede ad aggiornare il proprio applicativo eseguendo le istruzioni presenti del file AppSpec e scaricandolo da un bucket di Amazon S3 o da un repository GitHub in base alla configurazione iniziale.

Configurazione

Dato che creare la configurazione senza ancora aver provato il servizio può risultare un’operazione non immediata, Amazon ci viene incontro mettendo a disposizione nella console un’opzione che ci permette di avviare un’ambiente già configurato sia sotto piattaforma Linux che Windows da dove possiamo eseguire le nostre prove. La configurazione iniziale sarà suddivisa in 8 passaggi di configurazione specifici:

AWS Code deploy

(1) Welcome: questa è sicuramente la parte più facile, infatti ci viene richiesto se vogliamo eseguire un semplice deploy o uno personalizzato. Per il nostro tutorial basterà scegliere il semplificato, il quale creerà un’ambiente già idoneo al servizio.

(2) Instance Settings: specificare la piattaforma Linux o Windows, una volta confermata la configurazione verranno lanciate tre istanze che saranno assegnate all’applicazione e che saranno pronte per ricevere un’aggiornamento di test per un nuovo release. Nel caso che non esista una key pair già configurata, createne una prima di questa schermata.

AWS Code deploy

Dopo la conferma delle opzioni dovrete attendere qualche minuto per la configurazione di tutto l’ambiente. Vi verrà mostrata una barra di avanzamento che vi indicherà il numero di passaggi che rimangono ancora da elaborare. Una volta completato tutto il processo potete controllare in EC2 le istanze avviate con il tag CodeDeployDemo.

(3) Application Name: inserire un nome che identifica in modo univoco l’applicazione che si desidera distribuire. In questo tutorial possiamo anche lasciare DemoApplication. Sotto questo nome saranno configurate anche le revisioni, il gruppo di distribuzione, il ruolo del servizio e la configurazione della distribuzione. (opzioni a seguire)

(4) Revision: in questa sezione dobbiamo configurare una revisione che indica la versione del nostro software da distribuire. Possiamo lasciare tutti i dati come sono e procedere con il passaggio successivo. Troverete anche un bottone per scaricare in locale il file che verrà memorizzato su Amazon S3 in modo da analizzarne il contenuto.

AWS Code deploy

(5) Deployment Group: in questa fase creiamo un gruppo di distribuzione che identifica le istanze di EC2 tramite il valore dei tags. Nel nostro esempio possiamo lasciare i valori di default e creare un gruppo di 3 istanze tramite il tag name=CodeDeployDemo.

(6) Service Role: selezionare il ruolo che permette al servizio di AWS CodeDeploy di usare le risorse che sono indicate durante la fase di distribuzione. Normalmente i ruoli vanno preparati prima con molta calma e analizzando i servizi utilizzati, ma in questo tutorial lasciamo il valore di default in modo tale che Amazon AWS lo crei per noi.

(7) Deployment Configuration: qui dobbiamo scegliere il setup di distribuzione, tra le configurazioni standard troviamo, One at a TimeHalf at a TimeAll at Once. La prima opzione serve per aggiornare una istanza alla volta, la seconda a blocchi di 50% e la terza richiede l’aggiornamento di tutte le istanze contemporaneamente. Nel nostro caso possiamo lasciare selezionata la prima opzione e confermare la schermata.

(8) Review: in questa schermata possiamo rivedere tutte le configurazioni eseguite e in caso di errori è possibile ritornare indietro alla sezione desiderata e cambiare le opzioni, nel nostro caso se abbiamo selezionato i parametri di default possiamo confermare.

Risultato

Se abbiamo eseguito correttamente i passaggi ci verrà presentata una schermata che indica in tempo reale le istanze che stanno per essere distribuite. Quando il numero delle istanze raggiunge tutte quelli presenti nel gruppo significa che la nostra distribuzione è terminata e possiamo provare l’applicazione andando all’indirizzo IP associato a una delle istanze che abbiamo avviato:

AWS Code deploy

A questo punto se andiamo sulle tre istanze attive e annotiamo l’indirizzo IP pubblico di una di queste, possiamo fare una richiesta HTTP con il nostro browser a questo indirizzo e ci dovrebbe comparire una schermata con “congratulazioni applicazione codedeploy”.

Guida completa su AWS

Questo articolo appartiene ad una serie di pubblicazioni che costituiscono una guida completa dedicata agli Amazon Web Services. Molti servizi che trattiamo in questo blog vengono anche spiegati con dei video che trovate nel nostro canale youtube. Se volete seguire questo percorso didattico iscrivetevi alla community Cloud AWS.

3 Commenti

  1. Abbiamo pubblicato il tutorial anche in formato video
    https://www.youtube.com/watch?v=dTbjKSGkcHo

  2. Questa opzione era proprio necessaria ormai da tempo. Devo dire che in Amazon stanno molto attenti alle richieste dei loro clienti. Alla fine i feedback più richiesti vengono sempre aggiunti alla collezione dei servizi esistenti.

  3. Ciao Davide, come ne abbiamo parlato tante volte è proprio così, questo è anche il motivo principale per cui mi sento sicuro di proporre i servizi AWS ai miei clienti. Sono sicuro che dietro esiste un supporto che non ti abbandona mai. A quando il prossimo hangout su Code Deploy?

condividi