Amazon Elastic Beanstalk il cloud per gli sviluppatori
da Massimo Della Rovere · pubblicato il 16 luglio, 2014 · modificato il 5 agosto, 2017

Negli Amazon Web Services oramai ci sono decine di servizi diversi che per essere utilizzati al meglio necessitano di conoscenze sistemistiche. Questo aspetto se da una parte è comprensibile, in quanto è la conoscenza necessaria per disegnare una buona architettura di sistema, dall’altra parte ci sono moltissimi sviluppatori che hanno l’esigenza di pubblicare applicazioni senza entrare nei dettagli del sistema.

Questi sviluppatori molte volte sono costretti a scegliere delle soluzioni di hosting o server predefiniti su cui però non possono configurare alcune funzioni avanzate oramai indispensabili, come ad esempio la scalabilità e il bilanciamento del traffico. Proprio per questo nasce Amazon Elastic Beanstalk che permette di utilizzare il Cloud AWS con delle funzioni avanzate senza dover avere delle conoscenze di system administrator.

Introduzione

Elastic Beanstalk utilizza diversi servizi presenti su AWS, ad esempio Amazon EC2, Amazon S3, Amazon SNS, Elastic Load Balancing e Auto Scaling. Tutti questi servizi vengono gestiti automaticamente da Amazon Beanstalk senza che lo sviluppatore debba necessariamente conoscere il loro completo funzionamento. Il servizio Beanstalk si preoccuperà anche di aggiungere gli allarmi CloudWatch e di controllarli per eseguire l’aumento o la diminuzione delle risorse necessarie all’applicazione.

Amazon Beanstalk

In questo articolo vedremo come selezionare una piattaforma di sviluppo, eseguire l’upload di un’applicazione ed eseguirla. Il primo passaggio del tutorial sarà quello di creare un’applicazione standard di Beanstalk per rendersi conto dei componenti creati, e successivamente crearne una nuova e verificare il suo corretto funzionamento.

Il servizio di Amazon Beanstalk in realtà ha moltissime opzioni di configurazione e diverse possibilità di personalizzazione, quindi non riusciremo a vedere tutto il servizio in questo articolo ma ne pubblicheremo altri dove affronteremo gli altri argomenti più specifici. Questo articolo deve servire per capire la facilità di pubblicazione di un’app in ambiente cloud pur mantenendo attiva un’infrastruttura complessa.

Applicazione per demo

Per far partire la nostra prima applicazione e vedere insieme i componenti che verranno attivati dobbiamo andare nella management console e selezionare il servizio di Amazon Elastic Beanstalk. Ci dovrebbe comparire una schermata che ci chiede la piattaforma di sviluppo e altri parametri che possiamo cambiare con “change default”.

Le piattaforme disponibili in questo momento sono Docker, IIS, Node.js, PHP, Python, Ruby e Tomcat (Java), in ogni caso controllate la documentazione perché ne vengono aggiunte sempre di nuove. Nel nostro esempio selezioniamo la piattaforma PHP e nelle opzioni scegliamo la versione più recente con modalità “single instance“.

Amazon Beanstalk

Una volta inseriti questi parametri selezioniamo il tasto “launch now” e aspettiamo che la procedura sia completata. Vi viene presentata una schermata con un’icona di attesa che può durare qualche minuto. La procedura sarà completata nel momento in cui appare un’icona verde e che nel log venga indicato che l’applicazione è stata pubblicata.

Amazon Beanstalk

Una volta che compare questa schermata la nostra applicazione di esempio è pronta per essere utilizzata. Prima però vediamo cosa è successo. Sono stati creati tre componenti, un’applicazione, un’ambiente (environment) e una versione.

Applicazione: indica solo un nome che contiene gli altri elementi, non ha nessuna opzione di configurazione ma solo un titolo, in questo caso My First Elastic Beanstalk.

Ambiente: sono tutti i parametri che riguardano l’ambiente di esecuzione dell’app, ad esempio possiamo indicare se vogliamo un’ambiente ad istanza singola o auto scalabile in base alle risorse richieste dall’applicazione. È possibile anche cambiare alcuni valori di PHP e il sistema di notifiche. Nell’esempio viene chiamato “Default-Environment“.

Versione: rappresenta i file della nostra applicazione, in questo caso un file HTML con PHP che produrrà il risultato della richiesta HTTP. Quando aggiorniamo il software basterà creare una nuova versione e collegarla all’ambiente corrente. In questo esempio la versione della nostra applicazione viene chiamata “Sample Application“.

Nel log generale possiamo vedere che è stata avviata un’istanza EC2, è stato creato un security group, è stata pubblicata l’applicazione e preparato l’ambiente. Per visualizzare l’applicazione dovete andare all’indirizzo URL specificato dopo il nome dell’ambiente dove trovate il link diretto tra parentesi. Vi riporto qui di seguito il risultato finale.

Amazon Beanstalk

In questo esempio abbiamo utilizzato una procedura automatica giusto per capire quale siano i componenti più importanti di Elastic Beanstalk, adesso provvediamo a cancellare questa applicazione e crearne un’altra passo passo per capire meglio tutti i passaggi. La cancellazione chiude automaticamente anche tutte le risorse usate.

Cancellazione applicazione

Andiamo nel menu dell’applicazione e selezioniamo la voce “Application Versions” dove dobbiamo selezionare la versione ed eseguire la cancellazione. Dopo torniamo nel menu principale e dal menu “actions” selezioniamo “delete application”, una volta confermata l’azione verrà chiuso l’ambiente e cancellata tutta la nostra applicazione.

Amazon Beanstalk

Anche la fase di chiusura come quella di avvio non è immediata, ma bisognerà aspettare qualche minuto, per poi verificare che nel menu principale del servizio non venga più indicato il nome dell’applicazione usata nel nostro esempio.

Creazione applicazione

Come già accennato, questa volta proviamo a ricreare un’applicazione PHP cercando di vedere qualche dettaglio in più rispetto alla prova precedente. Per prima cosa facciamo clic sull’opzione “create new application” e inseriamo il nome della nostra applicazione e una piccola descrizione. Nel nostro caso possiamo inserire i seguenti dati:

Amazon Beanstalk

Il passo successivo sarà quello di definire il tipo di ambiente e quindi scegliere il tipo di lavoro, l’ambiente di programmazione ed eventualmente le opzioni di scalabilità. Anche se potete scegliere qualsiasi ambiente vogliate in questo tutorial selezioneremo un web server con PHP e con le funzioni di auto scaling e load balancing abilitate.

Amazon Beanstalk

Al passo successivo ci verrà chiesto di caricare una versione della nostra applicazione, le opzioni messe a disposizione sono: un’applicazione di demo (già vista), l’upload di un file .ZIP che contiene i nostri file PHP e un folder su Amazon S3 da importare. In questo tutorial selezioneremo l’opzione di upload e useremo il file che trovate su questo link:

Dopo che aver scaricato il file ed eseguito l’upload su Beanstalk possiamo passare allo step successivo e configurare le informazioni dell’ambiente.  In questo step dobbiamo specificare un nome, un URL personalizzato e una descrizione. È possibile che il valore URL indicato nella prossima schermata sia già utilizzato, nel caso cambiate la stringa con un valore di vostra fantasia e riproponete la richiesta di conferma.

Amazon Beanstalk

Dopo aver confermato le informazioni che riguardano l’ambiente ci verrà presentata la schermata che riguarda le “risorse aggiuntive”. In questa sezione possiamo definire le opzioni che riguardano Amazon RDS e Amazon VPC. Per questo tutorial non attiviamo niente e lasciamo i valori di default procedendo solo con il stato “next“.

La schermata seguente riguarda i dettagli di configurazione dove dobbiamo selezionare anche il tipo d’istanza che desideriamo avviare e quindi decidere la potenza iniziale da assegnare all’applicazione. Per quanto riguarda le tipologie di istanze al momento vi rimando alla pagina ufficiale EC2, in attesa di un nostro articolo sull’argomento.

Amazon Beanstalk

In questo esempio abbiamo scelto un’istanza (t1.micro) che è più che sufficiente per il nostro tutorial, gli altri parametri li vedremo meglio nei prossimi articoli, in ogni caso viene richiesta una chiave EC2 per collegarci eventualmente all’istanza tramite SSH, un indirizzo di posta elettronica per gli avvisi, il rolling update e un profilo d’istanza.

Da questo punto in avanti confermate le prossime schermate con tutti i valori di default che vengono proposti e selezionare il tasto finale di avvio. A questo punto dovete avere un po’ di pazienza e aspettare qualche minuto, al termine delle operazioni necessarie all’avvio della nostra applicazione dovremmo ottenere una schermata simile a questa:

Amazon Beanstalk

Per provare l’applicazione dovete andare all’indirizzo URL che è specificato nella vostra schermata in alto vicino al nome dell’ambiente e tra parentesi. Via allego qui di seguito il risultato che ho ottenuto seguendo tutti i passi di questo tutorial:

Amazon Beanstalk

Se avete ottenuto lo stesso risultato di questo tutorial non mi resta che farvi i miei complimenti, avete appeno pubblicato un’applicazione PHP in un server web dedicato che gestirà l’auto scaling fino a 4 server diversi e gestirà il tutto con un bilanciamento del traffico automatico, tutto senza un solo comando di sistema :)

Modifica delle opzioni

Durante la configurazione dell’applicazione non ci sono state richieste tutte le opzioni disponibili nel servizio, molti di queste sono state automatizzate nella fase di creazione, in ogni caso se andiamo nel menu “configuration” possiamo sempre modificarle secondo le nostre necessità. Ad esempio se attiviamo la funzione di auto scaling, il servizio definisce un valore minimo di 1 server e un valore massimo di 4 server. Per vedere tutte le opzioni che possiamo modificare basta visionare la seguente schermata:

Amazon Beanstalk

Su ogni widget che visualizza le opzioni configurate potete selezionare l’icona che rappresenta una rotellina e modificare i valori in base alle vostre esigenze. Usando il menu laterale e selezionando le voci opportune potete anche visualizzare i messaggi di log che riguardano il vostro ambiente, visualizzare le statistiche di utilizzo e definire degli allarmi con eventualmente la configurazione di alcune notifiche.

Alcune statistiche

Il servizio mette a disposizione anche un specie di cruscotto grafico per visualizzare alcune informazioni che riguardano l’ambiente che è stato creato, trovate il tutto sotto la voce di menu chiamata “monitoring” da dove potete attivare anche degli avvisi.

Amazon Beanstalk

Alcune informazioni sono la latenza media, il numero di richieste, la CPU utilizzata e le informazioni che riguardano l’utilizzo della banda in entrata e uscita. Alcune di queste informazioni possono anche essere usate come valore di riferimento per far scattare l’operazione di auto scaling e quindi l’aggiunta di un nuovo server (istanza).

Molto importante !

Mi raccomando di cancellare tutte le applicazioni di prova dopo aver eseguito tutti i test necessari alla prova del servizio, altrimenti rischiate di lasciare attive le risorse AWS collegate all’ambiente e continuare a pagare il servizio. In ogni caso se è la prima volta che state utilizzando i servizi AWS guardate l’offerta di uso gratuito per un’anno.

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.

condividi