Il serverless, o serverless computing, è un approccio allo sviluppo software che consente agli sviluppatori di creare ed eseguire il codice delle applicazioni senza doversi preoccupare di attività di manutenzione come l'installazione di aggiornamenti software, la sicurezza, il monitoraggio e altro ancora. Con l'ascesa del cloud computing, il serverless è diventato uno strumento popolare per le organizzazioni che desiderano offrire agli sviluppatori più tempo per scrivere e implementare il codice.
Nonostante il nome, un framework serverless non significa computing senza server. In un'architettura serverless, un fornitore di cloud service (CSP) gestisce attività come la gestione dei server, l'infrastruttura back-end, il provisioning dei server, la creazione di backup e altro ancora. Un altro vantaggio delle tecnologie serverless è che consentono ai provider di cloud di fornire risorse su un modello su richiesta. Con serverless, la fatturazione inizia solo quando inizia l'esecuzione del codice e termina insieme a essa.
Con la crescita del cloud computing, persone e aziende devono utilizzare e memorizzare i dati in modo diverso rispetto al passato. Per raggiungere questo obiettivo, le aziende si affidano più che mai alle funzioni cloud e riducono la loro dipendenza dall'infrastruttura on-premise. Oggi, tutti i principali CSP, tra cui Amazon Web Services (AWS Lambda), Microsoft Azure (Azure Functions) e IBM (IBM® Cloud Code Engine) offrono piattaforme serverless.
Insieme ad altre tecnologie infrastrutturali critiche, come infrastructure-as-a-service (IaaS), platform-as-a-service (PaaS) e function-as-a-service (FaaS), il serverless aiuta le organizzazioni in diversi modi importanti:
Il serverless rappresenta l'ultima di una serie di architetture per ambienti di codifica che si sono evolute per consentire ai programmatori di concentrarsi maggiormente su ciò che sanno fare meglio: scrivere e implementare codice. Le altre tre architetture rilevanti per lo sviluppo di serverless sono Bare Metal Server, macchine virtuali (VM) e container. Diamo uno sguardo più da vicino a ciascuna di esse.
In un ambiente serverless, il function as a service (FaaS), un servizio che consente ai clienti di eseguire codice in risposta agli eventi, è fondamentale per liberare gli sviluppatori dalla gestione dell'infrastruttura sottostante. Con FaaS e serverless computing, gli sviluppatori possono concentrarsi esclusivamente sullo sviluppo delle applicazioni.
Come abbiamo visto con bare metal, VM e container, l'hosting di un'app richiede in genere il provisioning e la gestione di un server, insieme all'installazione e alla gestione di un sistema operativo. Con FaaS, l'hardware fisico, il sistema operativo VM e la gestione del software del server web sono tutti gestiti dal CSP. FaaS consente agli sviluppatori di implementare applicazioni e workflow serverless senza problemi e i termini FaaS e serverless sono spesso usati in modo intercambiabile.
Platform-as-a-Service (PaaS) è un modello di cloud computing che offre ai clienti una piattaforma cloud completa, più conveniente e meno complessa rispetto alla creazione e alla manutenzione di una piattaforma on-premise. Sebbene entrambe le architetture serverless e PaaS mantengano il backend invisibile agli sviluppatori, le somiglianze finiscono qui. Gli ambienti PaaS offrono un maggiore controllo sugli ambienti di implementazione, ma richiedono anche una maggiore gestione. Le applicazioni in PaaS devono essere configurate manualmente per scalare e possono richiedere più tempo per l'avvio rispetto a quelle serverless.
Infrastructure-as-a-Service (IaaS) è un cloud service che offre risorse come calcolo, server e macchine virtuali via internet su base pay-as-you-go. L'IaaS consente agli utenti di scalare rapidamente, riducendo la necessità di spese di capitale iniziali elevate che derivano dall'acquisto, dalla creazione e dalla manutenzione di un'infrastruttura on-premise. In un modello IaaS, gli utenti acquistano capacità in anticipo. In un modello serverless, un evento attiva l'esecuzione del codice dell'app. In sostanza, IaaS addebita agli utenti un costo anticipato per le risorse, mentre serverless addebita agli utenti solo il tempo di esecuzione del codice.
Mentre il cloud computing continua ad espandersi e le aziende cercano nuovi modi per utilizzare la tecnologia per creare nuovo valore aziendale, i casi d'uso serverless stanno crescendo rapidamente.
Negli ultimi anni si è assistito a una crescita massiccia dei casi d'uso aziendali per le applicazioni di intelligenza artificiale (AI) e machine learning (ML), in particolare nell'AI generativa. Nello specifico, il serverless aiuta ad abilitare la cosiddetta AI basata sugli eventi, in cui un flusso di intelligenza costante informa le capacità di processo decisionale in tempo reale. Inoltre, il serverless può aiutare a risolvere la sfida della scalabilità quando si tratta di creare nuove soluzioni di AI e ML, consentendo agli sviluppatori di concentrarsi sulla formazione anziché sull'infrastruttura sottostante.
Le architetture a microservizi sono uno dei casi d'uso più diffusi per serverless. I microservizi, o architettura a microservizi, sono un approccio architettonico cloud-native in cui una singola applicazione è composta da numerosi componenti o servizi più piccoli ad accoppiamento libero e distribuibili in modo indipendente. Le funzionalità del serverless computing relative a piccoli bit di codice, la scalabilità automatica, il provisioning rapido e il modello di prezzo on-demand lo rendono ideale per le architetture a microservizi.
Il cloud ibrido combina infrastrutture di cloud pubblico, cloud privato e on-premise per creare un'unica infrastruttura IT flessibile e conveniente. Il serverless aiuta le aziende che adottano una strategia di cloud ibrido fornendo l'agilità, la flessibilità e la scalabilità necessarie per gestire workload variabili in diversi ambienti cloud, tra cui pubblico, privato ed edge.
Il serverless riduce drasticamente il costo e la complessità della scrittura e dell'implementazione del codice per applicazioni di big data. Gli ambienti serverless consentono agli sviluppatori di concentrarsi sul codice e sulla logica aziendale, piuttosto che su tutte le attività di routine di gestione dell'infrastruttura. Inoltre, le funzionalità always-on di serverless significano che le pipeline di dati possono essere progettate in modo da reagire alle modifiche in tempo reale dei dati e modificare la logica dell'applicazione di conseguenza. Oggi, serverless aiuta gli sviluppatori a costruire pipeline scalabili di big data senza dover gestire l'infrastruttura sottostante.
Le funzionalità di serverless, l'automazione e la scalabilità lo rendono ideale per il trattamento dei dati richiesto dalle applicazioni Internet of Things (IoT). Le funzioni serverless automatizzate sono senza stato e progettate per gestire singoli eventi. Inoltre, la potenza di calcolo flessibile del serverless consente agli sviluppatori che creano applicazioni IoT di adattarsi a un'ampia gamma di esigenze di connessione e trattamento dei dati quando lavorano con nodi ampiamente dispersi. Con la crescita del numero di dispositivi IoT, serverless è in grado di aiutare gli sviluppatori a fornire solide basi per l'analytics dei dati critica alle applicazioni IoT.
Un API gateway è un software che prende la richiesta dell'utente di un'applicazione, la instrada verso uno o più servizi di backend, raccoglie i dati appropriati e li consegna all'utente in un unico pacchetto combinato. I modelli serverless fungono da proxy per le azioni delle applicazioni web e forniscono il routing con metodo HTTP, client ID e segreti, limiti di velocità, CORS, la visualizzazione dell'utilizzo delle API, la visualizzazione dei log delle risposte e le policy di condivisione delle API.
In un modello serverless, l'API gateway può essere utilizzato per costruire servizi API REST e attivare il codice associato a ciascun evento. Gli eventi e le funzioni in un ambiente serverless possono essere trasformati in endpoint HTTP. Queste azioni, note come "azioni web", vengono raccolte in un'API completa con un API gateway che aggiunge un ulteriore livello di sicurezza e supporto personalizzato. Inoltre, gli API gateway offrono agli sviluppatori la possibilità di accedere a una serie di integrazioni personalizzate per l'autenticazione, che possono contribuire a ridurre il time-to-market e a migliorare la produttività degli sviluppatori.
Chatbot come IBM® watsonx Assistant e ChatGPT di Microsoft sono adatti per gli ambienti serverless grazie al modello di prezzo pay-as-you-go di serverless, che non richiede agli utenti di pagare per le risorse che non stanno utilizzando. Il serverless aiuta le organizzazioni di tutte le dimensioni a utilizzare i chatbot per una varietà di attività, come aumentare il coinvolgimento dei clienti e automatizzare i servizi che in precedenza richiedevano l'input umano.
I tempi di esecuzione serverless sono adatti per attività parallele imbarazzanti, ovvero attività di calcolo che possono essere facilmente suddivise in attività più piccole ed eseguite in parallelo. Questo perché, in un'architettura serverless, ogni attività parallelizzabile può comportare la chiamata di un'azione. In un ambiente serverless, i workload possono essere suddivisi in molte attività secondarie, tutte in esecuzione indipendentemente l'una dall'altra.
Esempi di attività parallele su un runtime serverless includono simulazioni Monte Carlo, elaborazione batch, transcodifica video, elaborazione di oggetti su object storage, punteggio dei modelli, web scraping e flussi di dati aziendali.
Poiché le organizzazioni di tutte le dimensioni e in un'ampia gamma di settori cercano di utilizzare il cloud computing per raggiungere i propri obiettivi di trasformazione digitale, il computing serverless svolge un ruolo fondamentale. Liberando gli sviluppatori da attività ripetitive come l'installazione e l'aggiornamento del sistema operativo, il provisioning dei server e il ridimensionamento dell'infrastruttura, gli ambienti serverless aiutano gli sviluppatori a concentrarsi sulla logica di business e sulla scrittura e implementazione di codice.