Distribuire applicazioni ASP.NET Core con AWS Elastic Beanstalk

di Cristian Civera, in AWS,

Quando creiamo un applicativo la parte più importante e sicuramente non trascurabile, è quella della messa online. Indipendentemente dalla tecnologia che utilizziamo non è banale dover gestire l'infrastruttura necessaria per rispondere in HTTP alle chiamate. Vanno curati gli aspetti di networking, vanno installate le macchine virtuali e i servizi necessari ed occorre poi monitorare il tutto per far fronte ad eventuali problematiche. Il tutto prevedendo anche l'eventualità di scalare nel caso vi sia un utilizzo maggiore del nostro applicativo. Il cloud computing e l'Infrastructure as a Service (IaaS) hanno sicuramente reso più semplice alcuni aspetti prettamente hardware, ma non risolvono il layer più alto, quello dedicato al software. Docker e i relativi orchestratori sono sicuramente un modo migliore per far fronte a questa esigenza: semplificano l'installazione dell'applicativo e dei suoi requisiti e automatizzano il processo di distribuzione e di scaling. In fin dei conti, però, è solo uno IaaS fatto meglio, ma se il nostro scopo è semplicemente esporre un applicativo web che risponda via HTTP, un approccio Platform as a Service (PaaS) sarebbe l'ideale.

Elastic Beanstalk di Amazon Web Services risponde a queste esigenze mettendoci a disposizione tutti i servizi AWS e orchestrandoli al fine di concentrarci il più possibile sul nostro applicativo e di godere di una serie di automatismi, che vanno dalla gestione computazionale, fino al monitoraggio dell'applicativo. In questo articolo vogliamo affrontare questo servizio in chiave sviluppatore .NET, per capire come coniugare questa tecnologia con l'hosting di Amazon e di mostrare le funzionalità che più spesso possiamo ritrovarci ad utilizzare. Non vuole quindi essere esaustivo, poiché questo servizio è molto vasto.

Introduzione

La vastità di Elastic Beanstalk risiede nel fatto che quando creiamo una nuova applicazione, di fatto il motore crea e gestisce per noi i servizi basilari forniti da AWS. Di per sé, quindi, non comporta costi aggiuntivi, perché essi sono determinate alle risorse sottostanti utilizzate. Per la parte computazionale vengono utilizzate istanze di EC2, il pacchetto di distribuzione è affidato a S3, il bilanciatore (opzionale) sfrutta il load balancer di EC2, ed infine l'eventuale logging affidato a CloudWatch. Nella valutazione dei costi dobbiamo di fatto valutare questi aspetti che non si discostano di molto da altre risorse, come quelle relative a Docker, che possiamo utilizzare nell'ecosistema AWS.

In Elastic Beanstalk ogni applicazione è un contenitore logico composto da uno o più environment. Quest'ultimi contengono una specifica versione del nostro applicativo, una configurazione e rispondono ad uno specifico endpoint raggiungibile tramite myapp.eu-west-1.elasticbeanstalk.com. Possiamo quindi aggiornare la versione dell'app nello stesso environment, oppure crearne molteplici per scenari come il test, lo sviluppo o lo staging dello stesso.


Fonte: Amazon.com

Tutta l'operatività è, al come solito, consentita tramite console APIs o AWS CLI. Partendo sempre dall'indicare la regione di riferimento, quando creiamo un'applicazione ci vengono chieste poche informazioni essenziali, come il nome della stessa, il nome del primo environment e il relativo dominio.

Poiché le macchine EC2 vengono gestite in autonomia, queste verranno avviate con un sistema operativo adatto al nostro applicativo e con i requisiti necessari per esso. Le piattaforme servono per identificare il tipo di runtime necessario e il sistema operativo necessario. Abbiamo il supporto a Go, Java, Node.js, PHP, Python, Ruby e anche .NET, nella maggior parte dei casi ospitati su Amazon Linux, la versione speciale di Linux.

La versione 2.1.3 che si vede nella figura non identifica il runtime .NET ma la versione della piattaforma fornita da Amazon. Attualmente supporta infatti .NET 5.0, .NET Core 3.1 e .NET Core 2.1. In alternativa abbiamo a disposizione anche la versione Windows che si consiglia solamente se abbiamo da eseguire applicativi con il .NET Framework. Su Linux l'ambiente è più snello e maggiormente ottimizzato, perciò, se non vi è una particolare ragione, è in genere più appropriato utilizzare .NET Core o .NET (5.0 in poi) nell'ambito Linux. C'è da dire che Amazon è molto ricettiva nel mantenere aggiornato il supporto alle versioni tanto che .NET 5.0 è stato disponibile fin dal primo giorno di rilascio. Nulla vieta, comunque, di effettuare deployment contenenti l'intero runtime, attraverso le pubblicazioni self-contained. Questa via è però sconsigliata, perché lascia a noi il compito di dover aggiornare i runtime quando vengono rilasciate patch di sicurezza. Al contrario, Elastic Beanstalk ci consente di attivare gli aggiornamenti automatici e di mantenere nel tempo sicuro il nostro applicativo.

7 pagine in totale: 1 2 3 4 5 6 7
Contenuti dell'articolo

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

Top Ten Articoli

Articoli via e-mail

Iscriviti alla nostra newsletter nuoviarticoli per ricevere via e-mail le notifiche!

In primo piano

I più letti di oggi

In evidenza

Misc