Serverless

Nel secondo decennio di questo millennio, il cloud computing non ha più bisogno di presentazioni. Questo accesso on-demand, via Internet, a risorse situate in data center remoti, è diventato il nuovo standard di alta qualità per le applicazioni di piccole e grandi imprese che richiedono elevate prestazioni, scalabilità, affidabilità, efficienza dei costi, portata globale e agilità di sviluppo. Le ragioni per mantenere dei server in sede diminuiscono ogni anno con l'aumento delle tecnologie sicure e pay-as-you-go che consentono di gestire le infrastrutture (IaaS), le piattaforme (PaaS) o il software (SaaS) as-a-Service, "nel cloud" di qualche CSP (Cloud Service Provider – fornitori di servizi cloud).

Foto di CHUTTERSNAP / Unsplash

Ultimamente, un nuovo tipo di cloud computing è nato grazie ai suoi molteplici vantaggi, in uno slot tra l'offerta PaaS e SaaS:

lo chiamano "Serverless".

Non lasciarti ingannare dal nome: in realtà non significa che non ci siano server che eseguono le tue applicazioni; piuttosto, non sta a te gestire, interagire o persino vedere quei server. Di conseguenza, il paradigma consente agli sviluppatori di concentrarsi sulla logica di business della loro applicazione – ovvero sull'attività che conta davvero.

Ciò che tu e il provider di servizi cloud dovete gestire in ogni paradigma di cloud computing.

Da alcuni anni, in ITER IDEA, abbiamo abbracciato completamente questa nuova filosofia in ambito cloud per i numerosi vantaggi che porta ai nostri progetti e, quindi, ai nostri clienti. In un'architettura serverless, i componenti di un'app vengono avviati solo quando necessario: attivati da eventi, richieste API, ecc., e terminati subito dopo. I prezzi a consumo sono quindi molto convenienti in questo modello, insieme all'assenza di costi nella gestione di server, sistemi operativi, reti, ecc. Inoltre, puoi progettare le tue applicazioni per funzionare per dieci utenti o diecimila, sfruttando la scalabilità del cloud.

Un esempio da AWS dei vantaggi del pagamento in base al consumo nel cloud computing.

La creazione di un'applicazione serverless non è assolutamente semplice rispetto allo sviluppo di soluzioni "tradizionali"; i servizi cloud-native richiedono competenze di prim'ordine, che hanno un rapido turnover in termini di nuove competenze da apprendere e assimilare. Alcune tecnologie sono così recenti che nemmeno le università possono tenere il passo nel fornire tali competenze ai propri studenti, con i provider cloud che rilasciano i propri corsi e certificazioni. Tuttavia, l'acquisizione e l'implementazione di queste competenze vale la pena e fa davvero la differenza in termini di prestazioni, costi e manutenibilità delle soluzioni progettate. Per darti un riferimento, quando abbiamo iniziato a passare Papaya – il nostro servizio utilizzato da migliaia di studenti in tutta Europa –  a un'architettura serverless, abbiamo avuto un calo dei costi di 10 volte e un'esperienza generale visibilmente più fluida.

Dunque, come si realizza tutto questo? Ecco un esempio.

Da quando Amazon Web Services ha introdotto il serverless nel 2014 con AWS Lambda, lo scenario cloud si è evoluto rapidamente e hanno iniziato a diffondersi nuove interessanti architetture serverless. Guardiamo nel dettaglio una delle sue implementazioni più semplicistiche, utilizzando i servizi AWS come riferimento.

Un semplice diagramma serverless, da una guida AWS.

In una tipica applicazione web, abbiamo un client (computer, smartphone, ecc.) che comunica con l'architettura di back-end tramite richieste API. Amazon API Gateway è il servizio serverless che acquisisce, comprende e instrada le richieste; ad esempio, se la nostra app gestisce liste to-do, il cliente potrebbe aver richiesto un elenco di attività. Prima di tutto, dobbiamo assicurarci che l'utente sia autenticato e autorizzato ad acquisire quell'elenco di attività. Amazon Cognito è il nostro servizio per gestire utenti e autorizzazioni (inclusi i flussi di accesso e registrazione). Dopo aver ottenuto l'autorizzazione, API Gateway richiama la funzione AWS Lambda che gestisce le liste to-do; AWS Lambda è il servizio di elaborazione serverless che si attiva per eseguire una richiesta (con la nostra business logic) e poi si spegne dopo aver restituito il risultato. Successivamente, la nostra funzione deve recuperare i dati (la lista to-do) dal database. Nel mondo serverless, i sistemi NoSQL sono spesso preferiti per la loro efficienza e scalabilità. AWS offre DynamoDB, un potente storage NoSQL di tipo chiave-valore. La funzione Lambda ha acquisito da DynamoDB i dati che stavamo cercando, quindi possiamo restituire il risultato al client, che può finalmente mostrarlo all'utente.

Lo ripetiamo: si tratta di uno scenario minimalista: abbiamo in realtà a disposizione decine di servizi serverless di cui possiamo usufruire per gestire eventi, code, notifiche push, ecc.

In pratica,

lo sviluppo serverless consiste nel coordinamento di una serie di microservizi che dialogano tra loro quando necessario e si spengono quando non vengono utilizzati,

senza la necessità che un sistema centrale rimanga continuamente attivo per orchestrare l'intero flusso.

Wow! Serveless è quindi la panacea di tutti i mali?

Come per qualsiasi altra tecnologia, ci sono alcuni casi d'uso in cui il serverless potrebbe non essere suggerito; ad esempio, nel caso in cui il nostro flusso di lavoro sia stabile e prevedibile in modo che le risorse vengano utilizzate continuamente al 100%. Tuttavia, questi scenari sono piuttosto limitati ed è per questo che gli sviluppatori preferiscono sempre di più le risorse serverless.

Quali sono i principali provider cloud?

Nello scenario serverless e, più in generale del cloud computing, i competitor sono molti; abbiamo già citato Amazon Web Services, ma altri attori importanti sono Google Cloud Platform e Microsoft Azure. I provider hanno offerte molto simili, ma AWS è ancora leader del mercato (vedi sotto) grazie alla sua visione ed esecuzione. Ecco perché la maggior parte dei servizi con cui creiamo le nostre applicazioni sono sul cloud di Amazon; tuttavia, poiché alcuni dei servizi potrebbero essere migliori in uno o nell'altro provider, è bene mantenere una mente aperta e rimanere informati sugli sviluppi quotidiani dell'eccitante universo del cloud.

Gartner, 2020: Magic Quadrant per l'infrastruttura e i servizi cloud.

In conclusione, "Serverless" può essere un termine controverso e allo stesso tempo gettonato, ma in pochi anni ha dimostrato il suo valore alle molte aziende IT e sviluppatori che si sono innamorati dei suoi strumenti potenti e convenienti.

Serverless è il futuro ed è qui per restare. Sposalo con noi!

Contattaci

Ti risponderemo al più presto.