Serverless e Cloud Functions

L'uso di architetture serverless e funzioni cloud, come AWS Lambda o Google Cloud Functions, per ridurre la gestione dell'infrastruttura e ottimizzare i costi.

Cos'è l’architettura serverless?

Per architettura serverless non si fa riferimento a soluzioni prive di server, ma identifica modelli di sviluppo basati sul cloud.

Perchè compare il termine “serverless” allora?

Questo termine sottolinea che gli sviluppatori possono concentrarsi sulla creazione di applicazioni senza la preoccupazione di gestire i server. In un'architettura serverless, è il provider del servizio cloud a prendersi cura della manutenzione e della scalabilità.


Quali sono le caratteristiche distintive di un’architettura serverless? Ecco le principali:

  • possibilità di scrivere ed eseguire il codice senza gestire i server: questo snellisce il lavoro dei developers;
  • attivazione basata sui server: le applicazioni serverless si attivano solo in risposta a specifici eventi (triggers), come ad esempio richieste HTTP;
  • modello pay per use: questo modello di cloud computing appare anche estremamente flessibile, poiché il pagamento avviene in base all’effettivo utilizzo del sistema.

L’infrastruttura dei modelli serverless è quindi completamente gestita dai provider dei servizi cloud che si occupano del provisioning dei server e tutto ciò che ne garantisce un funzionamento corretto.

Vantaggi dell’architettura serverless

L’architettura serverless gode ormai di una certa popolarità, dovuta anche alla nascita di piattaforme come AWS Lambda e Google Cloud Functions che presenteremo a breve.

Intanto, iniziamo col presentare i vantaggi di adottare un’architettura serverless:

  • scalabilità: è gestita in automatico dai provider. Dunque, il team di sviluppatori non deve intervenire manualmente per scalare le risorse, in quanto le applicazioni si adattano a un aumento o a una diminuzione del traffico, garantendo prestazioni elevate anche durante possibili picchi di domanda;
  • costi ottimizzati: come già spiegato, un modello di pagamento basato sull'utilizzo effettivo delle risorse appare estremamente conveniente, soprattutto rispetto ai tipici modelli di cloud computing dove bisogna pagare per le risorse in anticipo, stimando anche i potenziali rialzi nella domanda del servizio. Questo è un beneficio concreto, evidente soprattutto nel caso di progetti che prevedono traffico variabile;
  • rapidità di sviluppo: grazie alla figura del cloud provider, le tempistiche per lo sviluppo e il deploy si riducono notevolmente per le applicazioni serverless. Difatti, la modularità e la flessibilità sono ulteriori caratteristiche che evidenziano come questo modello di sviluppo consenta agli sviluppatori di rispondere prontamente alle esigenze del mercato o dei clienti.

Fino ad ora, appare evidente che l’architettura serverless pone le condizioni ideali per riuscire ad innovare i servizi proposti mantenendo un controllo sia sui costi che sulle tempistiche, ottimizzando a trecentosessanta gradi il lavoro degli sviluppatori.

Sfide dell’architettura serverless

Abbiamo appena descritto i vantaggi di un’architettura serverless, ma da un’altra prospettiva è giusto chiedersi quali siano le sfide da affrontare quando si adotta questo specifico modello di cloud computing.

Molto spesso, le piattaforme serverless sono proprietarie, con API e linguaggi di scripting specifici. Questo può causare una situazione di “vendor lock-in”: termine che descrive la difficoltà nel dover cambiare fornitore di servizi cloud.

Questo cambiamento potrebbe comportare un elevato dispendio di tempo e denaro, per cui suggeriamo di adottare delle semplici precauzioni.

Prima di tutto, è bene valutare con attenzione la scelta della piattaforma serverless, verificando soprattutto ciò che riguarda la portabilità del codice.

Inoltre, quando possibile, è sempre meglio prediligere librerie open source che non appartengono ad uno specifico fornitore.

Un secondo potenziale svantaggio di questo modello riguarda il debug. L’ambiente serverless è progettato in modo che, una volta eseguite, le funzioni vengono eliminate, rendendo il processo di individuazione degli errori molto più complesso rispetto agli ambienti tradizionali.

In questo caso, consigliamo di verificare quali sono gli strumenti che il provider del cloud mette a disposizione per effettuare il debug, ma anche di utilizzare tecniche avanzate di log.

Grazie a queste, sarà possibile raccogliere informazioni dettagliate sull’esecuzione del codice, rendendo più facile eventuali interventi.

Questa panoramica descrive come l’architettura serverless presenti numerosi vantaggi, ma altrettante sfide che, in caso di errori di valutazione, possono trasformarsi in svantaggi che incideranno sulla riuscita del progetto.

Cloud Functions: AWS Lambda vs Google Cloud Functions

Le cloud functions rappresentano una specifica offerta nell’ambito dell’architettura serverless.

Sono delle unità di codice eseguibili solo in risposta a determinati eventi e, ovviamente, anche queste sono gestite dal provider del servizio cloud scelto.

Esempi pratici e già ben noti di cloud functions sono dati da piattaforme come AWS Lambda di Amazon e Google Cloud Functions.

Anticipiamo che entrambi questi servizi fanno parte della categoria FaaS (Function as a Service), le cui principali caratteristiche le abbiamo già descritte nella prima parte dell’articolo.

Panoramica AWS Lambda

AWS Lambda è una piattaforma di calcolo serverless che rientra nell’offerta di Amazon Web Services.

La popolarità di questo servizio è data dal fatto che supporta il lavoro degli sviluppatori, consentendogli di scrivere codice senza dover gestire il server.

Il funzionamento di AWS Lambda appare abbastanza semplice, poiché è sufficiente caricare o scrivere - grazie alla presenza dell’editor integrato - il codice, configurando i trigger che suggeriscono quando eseguire delle specifiche azioni.

Nei momenti in cui si scatenano questi eventi, Lambda eseguirà automaticamente le funzioni, ridimensionandole in base alla quantità di richieste.

Non a caso, la piattaforma adotta un modello di pagamento in base al consumo, riducendo notevolmente i costi per le aziende.

Oltre alla scalabilità, allo sviluppo iterativo e ad una evidente riduzione dei costi, AWS Lambda risulta vantaggiosa anche per l’integrazione con servizi di terze parti, così da semplificare la creazione di architetture serverless.

Ecco alcuni caso d’uso di AWS Lambda:

  • elaborazione di file, con la possibilità di automatizzare il trattamento dei file caricati su Amazon S3, ovvero un servizio di archiviazione dati integrabile con la piattaforma;
  • app web e mobile, con la gestione delle logiche di backend;
  • stream processing, analizzando stream di dati in tempo reale.

Panoramica Google Cloud Functions

E Google Cloud Functions, invece, cos’è e come funziona?

Anche questo è un ambiente di esecuzione serverless che consente la creazione di servizi cloud, lasciando piena libertà ai developers. Infatti, viene il codice è eseguito in un ambiente completamente gestito da Google.

Google Cloud Functions supporta i principali linguaggi di programmazione, tra cui Python, Node.js, Java e PHP.

Si tratta di una piattaforma abbastanza simile a quella offerta da Amazon, in quanto adotta un modello di pagamento basato sul consumo effettivo delle risorse e, ovviamente, permette agli sviluppatori di non preoccuparsi della gestione dei server.

Anche le logiche di questi servizi appaiono simili. Proprio come AWS Lambda, anche Google Cloud Functions si basa sull’associazione delle funzioni a dei triggers specifici.

Ecco alcuni casi d’uso di Google Cloud Functions:

  • creazione di applicazioni con API leggere, con la possibilità di sviluppare microservizi o API RESTful scalabili;
  • sviluppo di logiche di backend per chatbot o assistenti virtuali che rispondono alle richieste inoltrate dagli utenti mediante API;
  • trasformazione dei dati in tempo reale;
  • elaborazione di eventi cloud, con app in grado di reagire con immediatezza alle azioni degli utenti.

Le tendenze future dell'architettura serverless

Prima di chiudere e lasciare a voi le ultime considerazioni, riteniamo opportuno aprire una piccola parentesi e analizzare le tendenze future dell’architettura serverless: un campo in continua evoluzione.

Senza dubbio, in futuro vedremo l’architettura serverless utilizzata in modi nuovi ed innovativi.

Ad esempio, ci sono elevate possibilità che si accosti sempre di più all’analisi dei dati in tempo reale. Questo dipende sia dalla scalabilità automatica di questa soluzione, sia dalla capacità che possiede di elaborare efficientemente anche grandi quantità di dati.

Potremmo assistere, quindi, all’adozione di questo modello serverless per la personalizzazione della user experience, in real time, sui siti web o app mobile.

Ovviamente, l’architettura serverless potrebbe intrattenere legami sempre più solidi anche con sistemi di intelligenza artificiale per lo sviluppo di chatbot intelligenti, per prevedere le possibili richieste dei clienti e molto altro ancora.

Conclusioni

L’uso di architetture serverless e cloud functions può apportare diversi benefici alle aziende, tra cui una consistente riduzione dei costi, delle tempistiche e dell’effort richiesto per lo sviluppo di un software.

Ma non solo: come per ogni cosa, non esistono lati positivi senza quelli negativi, anche se questi ultimi sono facilmente ovviabili.

Quindi, qual è la conclusione? Che questi modelli di cloud computing rappresentano tanto il presente quanto il futuro del settore, rendendo i servizi FaaS una scelta sempre più funzionale e strategica.

Autoreadmin
Potrebbero interessarti...