Home

topics

Serverless

Cos'è il serverless computing?
Scopri la soluzione serverless di IBM Registrati per ricevere gli aggiornamenti cloud
Illustrazione con collage di pittogrammi di monitor del computer, server, nuvole, punti

Data di pubblicazione: 10 giugno 2024
Autori: Stephanie Susnjara, Ian Smalley

Cos'è il serverless computing?

Il serverless computing è un modello di sviluppo ed esecuzione di applicazioni che consente agli sviluppatori di creare ed eseguire il codice delle applicazioni senza eseguire il provisioning o gestire server o infrastrutture di back-end.

Serverless non significa "senza server". Nonostante il nome, i server nel serverless computing sono gestiti da un fornitore di servizi cloud (CSP). Il termine "serverless" descrive l'esperienza dello sviluppatore con questi server: sono invisibili allo sviluppatore, che non li vede, non li gestisce e non interagisce con loro in alcun modo.

Con il serverless computing, gli sviluppatori possono concentrarsi sulla scrittura del miglior codice front-end per le applicazioni e sulla migliore logica aziendale possibile. Tutto quello che devono fare è scrivere il codice dell'applicazione e implementarlo nei container gestiti da un CSP.

Il provider di cloud si occupa del resto, ossia del provisioning dell'infrastruttura cloud necessaria per l'esecuzione del codice e della scalabilità dell'infrastruttura su richiesta, in base alle esigenze, ed è anche responsabile della gestione e della manutenzione ordinaria dell'infrastruttura, come gli aggiornamenti e le patch del sistema operativo, la gestione della sicurezza, la pianificazione della capacità, il monitoraggio del sistema e altro ancora.

Inoltre, con il serverless gli sviluppatori non pagano mai per la capacità inutilizzata. Il provider di cloud attiva e mette a disposizione le risorse di elaborazione necessarie su richiesta quando il codice viene eseguito, e le riduce di nuovo (scaling to zero) quando l'esecuzione si interrompe. La fatturazione inizia quando l'esecuzione viene avviata e termina quando viene interrotta; in genere, i prezzi si basano sul tempo di esecuzione e sulle risorse richieste.

Il serverless si è affermato come una delle principali offerte di cloud service insieme all'infrastructure as a service (IaaS), al platform as a service (PaaS), al function as a service (FaaS) e al software as a service (SaaS). Secondo un report di SkyQuest Technology, le dimensioni del mercato globale dell'architettura serverless sono state valutate in 8,01 miliardi di dollari nel 2022 e si prevede una crescita da 9,84 miliardi di dollari nel 2023 a 50,86 miliardi di dollari entro il 20311. Oggi tutti i principali provider di servizi cloud offrono una piattaforma serverless, tra cui Amazon Web Services (AWS Lambda), Microsoft Azure (Azure Functions), Google Cloud (Google Cloud Functions) e IBM Cloud (IBM Cloud Code Engine).

Insieme, serverless computing, microservizicontainer formano un triumvirato di tecnologie alla base dello sviluppo di applicazioni cloud-native.

Guarda questo video per una spiegazione dettagliata del serverless e dello stack serverless (06:37).

Scopri tutti i vantaggi dell'hybrid cloud

Connetti e integra i tuoi sistemi al fine di preparare l'infrastruttura per l'AI.

Contenuti correlati Registrati per la guida sulla modernizzazione delle app
Le origini del serverless

Il concetto di serverless ha avuto origine nel 2008, quando Google ha lanciato Google App Engine (GAE), una piattaforma per lo sviluppo e l'hosting di applicazioni web nei data center gestiti da Google. Grazie a GAE, uno sviluppatore di software poteva creare e lanciare software sul cloud di Google senza doversi preoccupare delle attività di gestione del server, come l'applicazione di patch o il bilanciamento del carico, che erano gestite da Google.

Il termine ''serverless'' è apparso per la prima volta in un articolo dello specialista di cloud computing Ken Fromm nel 20122. Nel 2014, Amazon ha introdotto AWS Lambda, la prima piattaforma serverless. Prendendo il nome dalle funzioni del calcolo lambda e della programmazione, AWS Lambda, un modello FaaS, ha aiutato il framework del serverless computing ad acquisire popolarità sul mercato di massa e a ottenere una rapida adozione tra gli sviluppatori di software consentendo loro di eseguire codice in risposta a eventi senza la necessità di una gestione del server. Nel 2016, Microsoft Azure Functions e Google Cloud Functions hanno lanciato le loro piattaforme serverless.

Tra gli altri fornitori principali dell'attuale mercato delle piattaforme serverless figurano IBM® Cloud Code Engine, Oracle Cloud Infrastructure (OCI) Functions, Cloudflare Workers e Alibaba Function Compute.

L'ecosistema serverless
Serverless e FaaS

Il serverless è più di un semplice function as a service (FaaS), il servizio di cloud computing che consente agli sviluppatori di eseguire codice o container in risposta a eventi o richieste specifiche, senza specificare o gestire l'infrastruttura necessaria per l'esecuzione del codice.

FaaS è il modello di elaborazione centrale del serverless e i due termini sono spesso usati in modo intercambiabile. Rispetto al FaaS, il serverless è un intero stack di servizi in grado di rispondere a eventi o richieste specifiche e di ridimensionarsi fino allo zero quando non vengono più utilizzati, e in cui il provisioning, la gestione e la fatturazione sono gestiti dal provider di cloud e invisibili agli sviluppatori.

Oltre al FaaS, questi servizi includono database e storage, application programming interface (API) gateway e architettura basata su eventi.

Database e storage serverless

I database (SQL e NoSQL) e lo storage (in particolare l'object storage) costituiscono le fondamenta del livello dati. Un approccio serverless a queste tecnologie implica la transizione dal provisioning di "istanze" con limiti definiti di capacità, connessione e query, verso modelli che scalano linearmente con la domanda sia nell'infrastruttura che nei prezzi.

API gateway

Gli API gateway 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.

Architettura serverless e basata su eventi

Le architetture serverless sono adatte ai workload basati su eventi e sull'elaborazione di flussi, in particolare la piattaforma di event streaming open source Apache Kafka.

Le funzioni serverless automatizzate sono senza stato e progettate per gestire singoli eventi. Queste funzioni sono diventate una parte essenziale dell'architettura basata su eventi (EDA): un modello di progettazione software costruito attorno alla pubblicazione, all'acquisizione, all'elaborazione e all'archiviazione degli eventi. In un framework EDA, i produttori di eventi (ad esempio, microservizi, API, dispositivi IoT) inviano notifiche di eventi in tempo reale ai consumatori di eventi, attivando routine di elaborazione specifiche. Ad esempio, quando Netflix rilascia una nuova serie originale, più servizi EDA attendono in standby la notifica di rilascio, che attiva una cascata di aggiornamenti per informare gli utenti. Molte altre aziende basate su applicazioni web e mobili rivolte all'utente (ad esempio, Uber, DoorDash, Instacart) si affidano all'architettura basata su eventi.

Serverless, PaaS, container e VM

Poiché serverless, platform as a service (PaaS), container e macchine virtuali (VM) svolgono tutti un ruolo fondamentale nell'ecosistema di sviluppo ed elaborazione delle applicazioni cloud, è utile confrontare il serverless e gli altri sistemi in base ad alcuni attributi chiave.

  • Tempo di provisioning: misurato in millisecondi per il serverless e in minuti oppure ore per gli altri modelli.
  • Onere amministrativo: nessuno per il serverless, rispetto a un continuum da leggero a medio a pesante rispettivamente per PaaS, container e VM.
  • Manutenzione: le architetture serverless sono totalmente gestite dai CSP. Questo vale anche per PaaS, mentre i container e le VM richiedono una manutenzione significativa che include l'aggiornamento e la gestione dei sistemi operativi, delle immagini di container, delle connessioni, ecc.
  • Scaling: l'autoscaling, incluso l'autoscaling to zero, è istantaneo e intrinseco al modello serverless. Gli altri modelli offrono uno scaling automatico ma lento, che richiede un'attenta messa a punto delle regole di autoscaling, e nessuno scaling to zero.
  • Pianificazione della capacità: non è necessaria per i serverless. Gli altri modelli richiedono un mix di scalabilità automatica e pianificazione della capacità.
  • Assenza di stato: intrinseca al serverless, e ciò significa che la scalabilità non è mai un problema; lo stato viene mantenuto in un servizio o una risorsa esterna. PaaS, container e VM possono sfruttare l'http, mantenere un socket o una connessione aperti per lunghi periodi di tempo e memorizzare lo stato tra le chiamate.
  • High availability (HA) e disaster recovery (DR): il serverless offre high availability e disaster recovery senza sforzi o costi aggiuntivi. Gli altri modelli richiedono costi e sforzi di gestione aggiuntivi. L'infrastruttura può essere riavviata automaticamente con VM e container.
  • Utilizzo delle risorse: il serverless ha un'efficienza del 100% perché non c'è capacità inutilizzata: viene richiamata solo su richiesta. Tutti gli altri modelli presentano almeno un certo grado di capacità inutilizzata.
  • Fatturazione e risparmio: il serverless è misurato in unità di 100 millisecondi. PaaS, container e VM sono generalmente misurati all'ora o al minuto.
Serverless, Kubernetes e Knative

Kubernetes è una piattaforma open source di orchestrazione dei container che automatizza la distribuzione, la gestione e la scalabilità dei container. Questa automazione semplifica notevolmente lo sviluppo di applicazioni containerizzate.

Le applicazioni serverless sono spesso distribuite in container. Tuttavia, Kubernetes può eseguire app serverless in modo indipendente solo con un software specializzato che integri Kubernetes con una piattaforma serverless di uno specifico provider di cloud.

Knative è un'estensione open source di Kubernetes che fornisce un framework serverless. Consente l'esecuzione di qualsiasi container come workload serverless su qualsiasi piattaforma cloud che esegue Kubernetes, indipendentemente dal fatto che il container sia basato su una funzione serverless o su un altro codice di applicazione (ad esempio, di microservizi). Knative funziona separandosi dal codice e gestendo il routing della rete, i trigger degli eventi e l'autoscaling per l'esecuzione serverless.

Knative è trasparente per gli sviluppatori: basta creare un container usando Kubernetes e Knative fa il resto, eseguendo il container come workload serverless.

Pro e contro del serverless
Pro

Il serverless computing offre ai singoli sviluppatori e ai team di sviluppo aziendali numerosi vantaggi tecnici e di business:

  • Miglioramento della produttività degli sviluppatori: come già detto, il serverless consente ai team di sviluppo di concentrarsi sulla scrittura del codice anziché sulla gestione dell'infrastruttura. Gli sviluppatori hanno molto più tempo per innovare e ottimizzare le funzionalità delle applicazioni front-end e la logica aziendale.
  • Pagamento in base all'esecuzione: il contatore inizia quando viene effettuata la richiesta e termina quando l'esecuzione viene interrotta. Si distingue quindi dal modello di calcolo IaaS, in cui i clienti pagano per i server fisici, le macchine virtuali e le altre risorse necessarie per l'esecuzione delle applicazioni, dal momento in cui effettuano il provisioning di tali risorse fino al momento in cui le disattivano esplicitamente.
  • Sviluppo in qualsiasi linguaggio: il serverless è un ambiente poliglotta, che consente agli sviluppatori di programmare in qualsiasi linguaggio o framework (Java, Python, JavaScript, node.js) con cui si sentono a proprio agio.
  • Cicli di sviluppo o DevOps semplificati: il serverless semplifica l'implementazione e, in senso più ampio, semplifica  DevOps perché gli sviluppatori non passano il tempo a definire l'infrastruttura necessaria per integrare, testare, fornire e distribuire le build di codice in produzione.
  • Prestazioni convenienti: per alcuni workload (ad esempio, l'elaborazione parallela, l'elaborazione di flussi e alcune attività di elaborazione dei dati), il serverless computing può essere più veloce ed economico di altre forme di elaborazione.
  • Latenza ridotta: in un ambiente serverless, il codice può essere eseguito più vicino all'utente finale, riducendo la latenza.
  • Visibilità dell'utilizzo: le piattaforme serverless offrono una visibilità quasi totale dei tempi del sistema e degli utenti e possono aggregare sistematicamente le informazioni sull'utilizzo.
Contro

Sebbene il serverless offra molti vantaggi, è essenziale considerare alcuni svantaggi:

  • Minor controllo: in un ambiente serverless, un'organizzazione cede il controllo del server a un CSP terzo, rinunciando così alla gestione dell'hardware e degli ambienti di esecuzione.
  • Dipendenza dal fornitore: ogni fornitore di servizi offre funzionalità serverless uniche che sono incompatibili con altri fornitori.
  • Avvio lento: noto anche come "avvio a freddo", l'avvio lento può influire sulle prestazioni e sulla reattività delle applicazioni serverless, in particolare negli ambienti in cui la domanda viene gestita in tempo reale. 
  • Test e debug complessi: il debug può essere più complicato con un modello di serverless computing, perché gli sviluppatori non hanno visibilità sui processi di back-end.
  • Costi più elevati per l'esecuzione di applicazioni che richiedono tempi lunghi: i modelli di esecuzione serverless non sono progettati per eseguire il codice per periodi prolungati. Pertanto, i processi di lunga durata possono costare di più rispetto ai tradizionali ambienti di server dedicati o VM.
Serverless e sicurezza

Mentre i CSP forniscono misure di sicurezza per la gestione delle applicazioni serverless, il cliente è anche responsabile della sicurezza del codice e dei dati dell'applicazione secondo un modello a responsabilità condivisa. Le misure di sicurezza basate sul cloud per il serverless includono policy di sicurezza e soluzioni automatizzate come la gestione delle informazioni e degli eventi di sicurezza (SIEM), la gestione delle identità e degli accessi (IAM) e il rilevamento e la risposta alle minacce.

Seguire le pratiche DevSecOps aiuta i team di sviluppo a proteggere le tecnologie serverless. DevSecOps, che sta per "sviluppo, sicurezza e operazioni", è una pratica di sviluppo delle applicazioni che automatizza l'integrazione della sicurezza e delle pratiche di sicurezza in ogni fase del ciclo di vita dello sviluppo del software, dalla progettazione iniziale all'integrazione, ai test, alla consegna e alla distribuzione.

Serverless e sostenibilità

A differenza dei tradizionali ambienti di data center on-premise, un modello di serverless computing può aiutare le organizzazioni a ridurre il consumo energetico e l'impronta di carbonio per le operazioni IT.

Inoltre, un modello serverless consente alle aziende di ottimizzare le proprie emissioni attraverso l'efficienza delle risorse, pagando e utilizzando solo le risorse necessarie. Questa caratteristica si traduce in un minor spreco di energia nei processi inattivi o in eccesso.

Casi d'uso serverless

Dati i suoi attributi e vantaggi unici, l'architettura serverless funziona meglio per i casi d'uso che coinvolgono microservizi, back-end mobili ed elaborazione di dati ed event stream.

Serverless e microservizi

Il caso d'uso attuale più comune del serverless è il supporto di architetture di microservizi. Il modello di microservizi è incentrato sulla creazione di piccoli servizi che svolgono una singola attività e comunicano tra loro tramite API. Anche se i microservizi possono essere costruiti e gestiti utilizzando PaaS o container, il serverless ha guadagnato un notevole slancio grazie ai suoi frammenti di codice di piccole dimensioni, alla scalabilità intrinseca e automatica, al provisioning rapido e a un modello di prezzo che non addebita mai la capacità inattiva.

Backend API

Qualsiasi azione (o funzione) in una piattaforma serverless può essere trasformata in un endpoint HTTP pronto per essere utilizzato dai client web. Quando sono abilitate per il web, queste azioni sono chiamate azioni web. Una volta ottenute le azioni web, è possibile assemblarle in un'API completa con un API gateway che offre sicurezza aggiuntiva, supporto OAuth3 limitazione della velocità e supporto di domini personalizzati.

Open Liberty InstantOn (CRIU)

Open Liberty InstantOn4 adotta un nuovo approccio per supportare l'avvio rapido per le applicazioni serverless. Con InstantOn, è possibile creare un checkpoint del processo dell'applicazione Java in esecuzione durante la creazione dell'applicazione e quindi ripristinare tale checkpoint in produzione. Il ripristino è rapido (in soli 100 millisecondi), il che lo rende ideale per il serverless. Poiché InstantOn è un checkpoint dell'applicazione esistente, il suo comportamento dopo il ripristino è identico, comprese le stesse eccellenti prestazioni di throughput. Questo processo consente alle organizzazioni di adottare il serverless per le nuove applicazioni cloud-native e offre l'opportunità di portare il serverless nelle aziende esistenti.

Elaborazione dati

Il serverless è adatto per lavorare con dati strutturati di testo, audio, immagini e video con attività quali l'arricchimento, la trasformazione, la convalida e la pulizia dei dati. Gli sviluppatori possono utilizzarlo anche per l'elaborazione dei PDF, la normalizzazione dell'audio, l'elaborazione delle immagini (rotazione, nitidezza, riduzione del rumore, generazione di miniature), il riconoscimento ottico dei caratteri (OCR) e la transcodifica dei video.

Operazioni di calcolo e "mappatura" a elevato parallelismo

Qualsiasi attività a elevato parallelismo è un buon caso d'uso per un runtime serverless, con ogni attività parallelizzabile che si traduce in un'invocazione di azione. Esempi di attività comprendono la ricerca e l'elaborazione dei dati (in particolare il cloud object storage), le operazioni MapReduce e il web scraping, la business process automation, la messa a punto di iperparametri, le simulazioni Monte Carlo e l'elaborazione del genoma.

Workload di elaborazione dei flussi

La combinazione di Apache Kafka gestito con FaaS e database o storage offre una base solida per la creazione di pipeline di dati e app di streaming in tempo reale. Queste architetture sono ideali per lavorare con tutti i tipi di flussi di dati (per la convalida, la pulizia, l'arricchimento e la trasformazione), compresi i dati dei sensori IoT, i dati di log delle applicazioni, i dati dei mercati finanziari e i flussi di dati aziendali (da altre origini dati).

AI e serverless

Il serverless offre la scalabilità automatica necessaria per eseguire workload di intelligenza artificiale (AI) e machine learning (ML), garantendo prestazioni ottimali e accelerando l'innovazione.

Hybrid cloud e serverless

Il serverless computing supporta una strategia hybrid cloud offrendo l'agilità, la flessibilità e la scalabilità necessarie per gestire workload variabili in ambienti on-premise, di cloud pubblico, cloud privato ed edge.

Applicazioni comuni del serverless

Il serverless supporta molte delle applicazioni più comuni di oggi, tra cui la gestione della relazione con il cliente (CRM), l'high-performance computing (HPC), la big data analytics, l'automazione dei processi aziendali, il video streaming, i videogiochi, la telemedicina, il digital commerce, la creazione di chatbot e altro ancora.

Tutorial: inizia con il serverless

Puoi migliorare le tue competenze in materia di serverless computing con questi tutorial:

  • Inizia con IBM Cloud Code Engine: esplora il nostro tutorial "Hello world" per vedere con i tuoi occhi quanto sia facile creare e distribuire un'applicazione IBM Cloud Code Engine.
  • Prova Liberty InstantOn (CRIU): sblocca nuovo valore per la tua organizzazione con IBM® WebSphere Liberty ottimizzando l'implementazione cloud e migliorando l'efficienza operativa. Liberty InstantOn presenta un modo migliore per ottenere prestazioni serverless senza compromessi.
  • Esegui processi in batch: scopri come eseguire un processo in batch utilizzando la console di Code Engine. Un processo esegue una o più istanze del codice eseguibile. A differenza delle applicazioni, che gestiscono le richieste HTTP, i processi sono progettati per essere eseguiti una sola volta e poi terminare.
Soluzioni
IBM Cloud Code Engine

Esegui il tuo container, il tuo codice di applicazione o processo batch su un runtime del container completamente gestito.

Esplora IBM cloud code engine
IBM Cloud Pak for Applications

Che si tratti di implementazione, creazione di nuove applicazioni cloud-native, refactoring o replatforming di applicazioni esistenti, Cloud Pak for Applications (CP4Apps) ha tutto ciò che serve.

Esplora IBM Cloud Pak for Applications
IBM cloud satellite

Distribuisci ed esegui app in modo coerente negli ambienti on-premise, di edge computing e di cloud pubblico da qualsiasi fornitore cloud.

Esplora IBM cloud satellite
IBM Cloudant

Il livello di dati per applicazioni iperscalabili, resilienti e disponibili a livello globale, basato su Apache CouchDB open source.

Esplora IBM Cloudant
Monitoraggio serverless Instana

Monitora le tue applicazioni e i tuoi servizi serverless per ottimizzare prestazioni, disponibilità e sicurezza.

Esplora il monitoraggio serverless Instana
Risorse
Serverless in the enterprise, 2021

Scopri di più sulle opportunità e le sfide reali del serverless computing.

Vai oltre le funzioni per eseguire tutti i workload containerizzati, comprese le app web, i microservizi e i processi batch, su questa piattaforma serverless completamente gestita.

Riscopri i vantaggi del cloud

Dai un'occhiata più da vicino a IBM Cloud Code Engine e ai benefici che offre.

Fai il passo successivo

Il serverless computing offre un modo più semplice ed economico per creare e gestire applicazioni nel cloud. Scopri IBM Cloud Code Engine, una piattaforma serverless con pagamento a consumo che consente agli sviluppatori di distribuire applicazioni e workflow serverless senza bisogno di competenze in Kubernetes.

Esplora Cloud Code Engine
Note a piè di pagina

(Tutti i link sono esterni a ibm.com)

Global Serverless Architecture Market Report, SkyQuest, marzo 2024

Why The Future Of Software And Apps Is Serverless, ReadWrite, ottobre 2012

3 About OAuth 2.0, OAuth

4 Faster startup for containerized applications with Open Liberty InstantOn, Open Liberty