Limitless serverless, introduzione alle architetture cloud native

Limitless serverless, introduzione alle architetture cloud native

In vista del prossimo evento di Commit University sulle applicazioni cloud native che si terrà il 22 Aprile, analizziamo insieme cosa si intende per Serverless Computing.

Cos’è il serverless computing?

Il serverless computing è un modello di sviluppo cloud native che consente agli sviluppatori di creare ed eseguire applicazioni senza gestire la configurazione dei server. Anche se in questo modello i server vengono utilizzati comunque, sono astratti dallo sviluppo delle app. Le attività di routine per il provisioning, la manutenzione e la scalabilità dell’infrastruttura server vengono gestite da un provider di servizi cloud. Gli sviluppatori devono semplicemente creare pacchetti di codice all’interno di container per il deployment.

Dopo il deployment, le app serverless rispondono alle richieste e si adattano automaticamente in base alle diverse esigenze di scalabilità. L’utilizzo delle soluzioni serverless offerte dai provider (es aws o azure) viene solitamente misurato on demand tramite un modello di esecuzione basato su eventi, pertanto le funzioni serverless non costano nulla quando non vengono utilizzate.

 

Panoramica dell’architettura serverless

Il modello serverless è diverso dagli altri modelli di cloud computing, poiché il provider di servizi cloud è responsabile di gestire sia l’infrastruttura cloud che la scalabilità delle app. Le app serverless vengono distribuite in container che vengono avviati on demand al momento della chiamata.

In un modello di cloud computing Infrastructure-as-a-Service (IaaS) standard, gli utenti acquistano unità di capacità, ovvero pagano a un provider di cloud pubblico i componenti server che sono utilizzati per l’esecuzione delle proprie applicazioni e che sono sempre attivi. L’utente è responsabile di aumentare la capacità del server durante i picchi di domanda e ridurla quando non occorre più. L’infrastruttura cloud necessaria per l’esecuzione di un’applicazione rimane attiva anche quando quest’ultima non è in uso.

Con un’architettura serverless, invece, le applicazioni vengono avviate solo quando necessario. Quando un evento attiva l’esecuzione del codice, il provider di cloud pubblico assegna dinamicamente le risorse per tale codice e l’utente paga il servizio solo fino alla fine dell’esecuzione. Oltre ai vantaggi in termini di costo ed efficienza, il metodo serverless evita agli sviluppatori le attività di routine e manuali necessarie per garantire la scalabilità delle applicazioni e il provisioning del server.

Il modello serverless consente di affidare al provider di servizi cloud attività di routine quali gestione del sistema operativo e file system, applicazione delle patch di sicurezza, bilanciamento del carico, gestione della capacità, gestione della scalabilità, registrazione e monitoraggio.

È possibile realizzare un’applicazione completamente serverless oppure in parte serverless e in parte costituita da microservizi convenzionali.

 

Ruolo del provider di servizi cloud nel serverless computing

In un modello serverless, un provider di servizi cloud esegue i server fisici e ne alloca dinamicamente le risorse per conto dell’utente, che può eseguire il deployment del codice direttamente nell’ambiente di produzione. In genere i prodotti di serverless computing rientrano in due categorie, ovvero Backend-as-a-Service (BaaS) e Function-as-a-Service (FaaS).  

I servizi BaaS consentono agli sviluppatori di attingere a svariati servizi e applicazioni di terze parti. Un provider di servizi cloud può ad esempio offrire servizi di autenticazione, funzioni di crittografia aggiuntive, database accessibili dal cloud e dati di consumo altamente affidabili. Nel caso dei servizi BaaS, le funzioni serverless vengono solitamente chiamate tramite interfacce di programmazione delle applicazioni (API).

In genere, quando gli sviluppatori parlano di serverless, si riferiscono al modello FaaS. Anche con questo modello gli sviluppatori devono scrivere il codice lato server personalizzato, ma in questo caso tale codice viene eseguito in container completamente gestiti da un provider di servizi cloud. 

Tutti i principali provider di cloud pubblico offrono uno o più servizi FaaS, come nel caso di Amazon Web Services con AWS Lambda, Microsoft Azure con Azure Functions, Google Cloud con vari prodotti e IBM Cloud con IBM Cloud Functions, per citarne solo alcuni. 

 

Cos’è il Function-as-a-Service (FaaS)?

Il Function-as-a-Service (FaaS) è un modello di elaborazione cloud basato su eventi in cui gli sviluppatori scrivono codice distribuito in container completamente gestiti tramite una piattaforma, e successivamente eseguito on demand.

Diversamente dal modello BaaS, la modalità Function-as-a-Service offre un maggior livello di controllo agli sviluppatori, che creano applicazioni personalizzate anziché sfruttare librerie di servizi preconfezionati.

È il provider di servizi cloud a gestire i container in cui è distribuito il codice. I container, nello specifico, sono:

  • Stateless: obbliga gli sviluppatori a non tenere variabili in memoria ma a persistere questi dati o su un database o su un server di cache.
  • Temporanei: possono essere eseguiti per un breve periodo di tempo, una volta che il server ha finito di rispondere a quella chiamata, si libera, smettendo di consumare risorse.
  • Attivati da eventi: vengono eseguiti automaticamente quando necessario.
  • Totalmente gestiti da un provider di servizi cloud: l’utente paga solo quello che utilizza, e non per server e applicazioni sempre attivi.

Con il modello FaaS gli sviluppatori possono chiamare le applicazioni serverless tramite API, che vengono gestite dal provider FaaS tramite un gateway

 

 

Se vuoi saperne di più, non perderti il prossimo appuntamento di Commit University! Registrati all’evento!

https://www.eventbrite.it/e/biglietti-limitless-serverless-introduzione-alle-architetture-cloud-native-148729719595