Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

AWS AppRunner: applicazioni ancora più semplici

By Wayman SmithMar 24, 20235 min read

Questa pagina è disponibile anche in English, Deutsch, Español, Français, 日本語 e Português.

Introduzione

AppRunner, lanciato a maggio 2021, è oggi il modo più semplice per eseguire un'applicazione web completa su AWS. Il panorama dei container in AWS comprende diversi servizi gestiti, ciascuno pensato per casi d'uso specifici. In questo articolo ci concentreremo sulle applicazioni web e su come passare dal codice a un'applicazione funzionante in pochi minuti grazie ad AppRunner.

Cos'è AppRunner

AppRunner è un servizio completamente gestito per applicazioni in container che consente di creare, distribuire ed eseguire web app e servizi API containerizzati senza alcuna gestione dell'infrastruttura. Lo si può immaginare come un ElasticBeanStalk per i container. Il suo scopo è semplificare e velocizzare la distribuzione delle applicazioni, riducendo la necessità di competenze infrastrutturali per gestire load balancer, certificati, monitoraggio e configurazione del logging.

Avrà probabilmente già sentito parlare dell'AWS Shared Responsibility Model, che definisce di quali componenti dello stack IT è responsabile AWS e di quali invece è responsabile il cliente (lei). Tutti i servizi AWS si collocano in qualche punto di questo spettro di responsabilità condivisa, alleggerendo l'onere gestionale tipico delle operazioni IT tradizionali. Con EC2 lei è responsabile di patch e aggiornamenti del sistema operativo, mentre AWS si occupa dell'infrastruttura hardware fisica. Con RDS lei è responsabile dei dati e dello schema, mentre AWS gestisce gli aggiornamenti del database e l'infrastruttura sottostante. AppRunner prosegue su questa linea spostando ulteriormente la responsabilità verso AWS: al cliente resta solo da occuparsi del proprio codice e della configurazione del servizio, potendo così dedicarsi maggiormente allo sviluppo. Questa semplificazione viene talvolta descritta come riduzione dell'"undifferentiated heavy lifting" e le permette di concentrarsi di più sui risultati di business.

Ciò che rende speciale AppRunner è la capacità di astrarre gran parte delle competenze tecniche necessarie per il provisioning delle risorse su cui far girare i suoi workloads containerizzati: a lei resta solo da fornire l'immagine del container o il codice dell'applicazione.

Per una spiegazione tecnica approfondita di come AppRunner funziona dietro le quinte e di come AWS sfrutta internamente altri servizi, le consiglio di guardare questo keynote AWS, qui.

Come accennato, sono i casi d'uso dei workloads a determinare dove un'applicazione debba essere eseguita, e va sottolineato che AppRunner non è adatto a ogni scenario container. AppRunner non orchestra workloads containerizzati multipli come fa Kubernetes, non supporta task o job finiti come ECS e non scala a zero come Lambda. Eccelle invece nel ridurre al minimo i passaggi che portano dal codice a un'applicazione web funzionante. Se è curioso di conoscere tutti i servizi AWS dedicati ai workloads containerizzati e i relativi casi d'uso, in un prossimo articolo affronteremo il processo decisionale per individuare il servizio più adatto al suo workload.

Distribuire codice su AppRunner

In AppRunner l'unità di distribuzione è il "Service", ovvero l'immagine del container o il codice dell'applicazione.

Per distribuire un "Service" si parte cliccando su "Create an AppRunner Service".

Creazione di un AppRunner Service

A questo punto potrà scegliere la sorgente per la sua applicazione. Per "sorgente" si intende il punto da cui prelevare il codice sorgente: un Container Registry come ECR oppure un repository di codice sorgente, che nel nostro esempio è GitHub.

Aggiunta del repository di codice da usare con AppRunner

Selezionando Source Code Repository e cliccando su "Add New" le verrà chiesto di installare l'AWS Connector for GitHub nel suo account GitHub: questo permetterà ad AWS di recuperare il codice sorgente dell'applicazione e distribuirlo su AppRunner.

Autorizzazione di AWS a connettersi al repository

Cliccando su "Authorize AWS Connector for GitHub" verrà reindirizzato a una pagina AWS in cui potrà assegnare un nome al suo AWS Connector. Partiamo dal presupposto che sia la prima volta che installa un connettore: in tal caso, cliccando su "install another" verrà rimandato a GitHub per scegliere l'account o l'organizzazione su cui installarlo.

Assegnazione del nome al connettore e installazione sul repository

Conferma dell'installazione

NOTA: potrebbero essere richiesti ulteriori passaggi di autenticazione, ad esempio se ha attivato l'autenticazione a due fattori…

Una volta installato il connettore, la finestra pop-up si chiuderà e tornerà alla pagina di sorgente e distribuzione di AppRunner. Qui vedrà il nome dell'AWS Connector Application, il repository sorgente e il branch da cui distribuire l'applicazione.

Informazioni su connettore e repository

Nelle impostazioni di distribuzione, ai fini di questo esempio, useremo il trigger di deployment predefinito "Manual".

Nella pagina di configurazione della build selezioni le impostazioni corrispondenti ai requisiti della sua applicazione. In questo esempio il runtime utilizzato è Python. I valori predefiniti di build command e start command vanno bene. I requisiti possono variare in base al runtime.

Impostazioni del servizio

Nella pagina Service configuration specifichi i requisiti di risorse della sua applicazione e indichi eventuali variabili di ambiente necessarie.

Da questa stessa pagina può inoltre configurare diverse funzionalità del servizio, come AutoScaling, health check, networking (endpoint pubblico o privato), WAF e Security/IAM, ad esempio per la connessione ad altri servizi AWS.

Requisiti del servizio

Cliccando su next arriverà alla pagina di riepilogo, dove potrà rivedere tutte le impostazioni e le configurazioni del suo AppRunner Service.

Conferma delle impostazioni del servizio

Se tutti i valori sono coerenti con la sua applicazione, distribuisca il servizio cliccando su Create and deploy.

Arriverà quindi alla dashboard del Service di AppRunner. Da qui può visualizzare lo stato del servizio, i log di distribuzione e altre informazioni utili. Dopo qualche minuto dovrebbe comparire lo stato successfully deployed, insieme a un URL HTTPS con dominio predefinito che potrà usare per accedere al servizio.

Servizio distribuito con successo

URL dell'applicazione

A questo punto la sua applicazione web è stata distribuita su AppRunner in tempi record, con appena qualche clic.

AppRunner rende davvero snello il processo di distribuzione delle applicazioni, sia da codice sia da container. Per mettere online un'applicazione servono pochissime conoscenze di containerizzazione, load balancing, generazione di certificati, autoscaling e altri argomenti tecnici. Se vuole distribuire una web app in modo rapido e sicuro, partendo direttamente dal codice o da un container esistente, le consiglio di valutare AppRunner come opzione concreta.

Infine, se ha seguito i passaggi a scopo dimostrativo, si assicuri di eliminare tutte le risorse create nel corso dell'articolo e di scollegare le applicazioni, sia per contenere i costi sia per ragioni di sicurezza.