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.
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:
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.
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:
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.
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.
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.
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:
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:
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.
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.