Pubblicato il 10/12/2022 da alnao nella categoria AWS

Il servizio di Elastic Beanstalk è uno dei servizi più potenti ma complessi di tutta l’architettura cloud di AWS perché viene usato per gestire e creare altri servizi mettendo al centro dell’architettura una applicazione. In particolare questo servizio viene usato moltissimo nel caso di applicazioni web o infrastruttura a micro-servizi dove è necessario gestire l’applicazione ma anche il ciclo di vita del software e la scalabilità in alta affidabilità. Per questo motivo Beanstalk è il servizio preferito da noi programmatori nonostante la sua complessità, è totalmente gratuito anche se bisogna sempre ricordare che si pagano le risorse che vengono create e gestite dal servizio.

Il servizio si basa su tre concetti qui elencati con il nome in inglese per semplicità:

  • application: è l’insieme delle configurazioni per eseguire una applicazione in ambiente (application on environment)
  • version: una fotografia (detta anche snapshot) del codice ad un certo istante, si presume compilato e funzionante
  • environments: una esecuzione delle applicazione definita da tutte le risorse necessarie

Esistono due versioni chiamati tier: la “web server” e “worker enviroment”, in questo semplice esempio verrà mostrato solo la web mentre la worker riguarda una iterazione tra SQS ed EC2. Un “web server tier” è una infrastuttura automatica con un Applicazion Load Balancer, un Autoscaling Group, le istanze ed e i corrispettivi security group. Il tipo di server/demone installato viene selezionato in fase di definizione della application.

Per creare la prima applicazione la procedura guidata della console richiede il nome, la piattaforma e il codice, come primo esperimento si può selezionare la piattaforma NodeJs e il codice di esempio che AWS mette a disposizione. Dopo aver definito l’application nessuna risorsa viene eseguita e questo si può fare grazie alla voce di menù “environmens”, alcune versioni più recenti della console creano in automatico un ambiente subito dopo la creazione dell’application.

In fase di creazione del environment, la procedura guidata della console richiede il tipo (tier Web o tier Work), l’ambiente e l’application da eseguire Inoltre è possibile configurare i dettagli dell’ambiente cliccando nel bottone “Advanced configuration”, questi dettagli saranno descritti in un futuro articolo.

Da notare che in fase di creazione dell’enviroments è necessario inserire un url, questo sarà l’url pubblico del bilanciatore ALB che verrà creato in automatico, il link pubblico di accesso è sempre nel formato

http://<nomeaambiente>.<region>.elasticbeanstalk.com/

In fase di creazione vengono creati in automatico

  • Application Load Balancer e un security group per regolare il traffico nella porta 80-HTTP
  • Autoscaling group
  • Instanza EC2 con il server selezionato (nel caso di Node c’è il webserver)
  • Security group per regolare il traffico nella porta 80-HTTP dal ALB alla istanza EC2

E’ sempre possibile navigare nel servizio EC2 per notare tutte le risorse create, bisogna sempre ricordarsi che tutte le risorse vengono eliminate se viene eliminato l’environments dal servizio Beanstalk, il servizio infatti è ben progettato per evitare di abbandonare risorse orfane e inutili. Nella console di BeanStalk è possibile vedere alcuni dettagli dell’ambiente tra cui le configurazioni, i log, il monitoraggio e l’elenco di tutti gli eventi riguardanti l’ambiente.