Cos'è il serverless?
Il serverless è un modello di sviluppo ed esecuzione di applicazioni cloud che consente agli sviluppatori di compilare ed eseguire codice senza gestire dei server e senza pagare per un'infrastruttura cloud inattiva
immagine astratta nera e blu
Cos'è il serverless?

Il serverless è un modello di sviluppo ed esecuzione di applicazioni di cloud computing che consente agli sviluppatori di realizzare ed eseguire codice applicativo senza eseguire il provisioning o gestire server o infrastruttura di backend.

Il serverless consente agli sviluppatori di concentrarsi completamente sulla scrittura della migliore logica di business e del migliore codice applicativo front-end di cui sono capaci. Tutto ciò che gli sviluppatori devono fare è scrivere il loro codice applicativo e implementarlo sui container gestiti da un provider di servizi cloud. Il provider cloud si occupa del resto, eseguendo il provisioning dell'infrastruttura cloud necessaria per eseguire il codice e scalando l'infrastruttura on-demand verso l'alto o verso il basso, come necessario. Il provider cloud è anche responsabile di tutta la gestione e manutenzione di routine dell'infrastruttura, come gli aggiornamenti e le correzioni del sistema operativo, la gestione della sicurezza, la pianificazione della capacità, il monitoraggio del sistema e altro ancora.

Cosa altrettanto importante: con il serverless, gli sviluppatori non pagano mai per la capacità inattiva. Il provider cloud avvia ed esegue il provisioning delle risorse di calcolo richieste on-demand quando viene eseguito il codice e poi le arresta nuovamente (eseguendo la cosiddetta "scalabilità a zero") quando l'esecuzione si arresta. La fatturazione inizia all'avvio dell'esecuzione e termina quando l'esecuzione viene arrestata; di norma, il prezzo è basato sul tempo di esecuzione e sulle risorse richieste.

Serverless non significa 'nessun server'

Nonostante il nome, sono senza alcun dubbio presenti dei server nel calcolo serverless. Il termine 'serverless' descrive l'esperienza dello sviluppatore con tali server - sono invisibili per lo sviluppatore, che non li vede, gestisce o interagisce con essi in alcun modo.

Oggi, ogni provider di servizi cloud leader del settore offre una piattaforma serverless, compresi Amazon Web Services (AWS Lambda), Microsoft Azure (Azure Functions), Google Cloud (Google Cloud Functions) e IBM Cloud (IBM Cloud Code Engine). Insieme al calcolo serverless, i  microservizi  e i  container  formano un triumvirato di tecnologie di norma considerate essere al centro dello sviluppo di applicazioni  native del cloud

Il serverless è più che un semplice FaaS

Function-as-a-service, o FaaS, è un servizio di cloud computing che consente agli sviluppatori di eseguire codice o container in risposta ad eventi o richieste specifici, senza specificare o gestire l'infrastruttura richiesta per eseguire il codice.

FaaS è il modello di calcolo centrale per il serverless e i due termini sono spesso utilizzati in modo intercambiabile. Il serverless, però, è molto di più che FaaS. Il serverless è un intero stack di servizi che può rispondere ad eventi o richieste specifici ed eseguire la scalabilità a zero quando non è più in uso - e per cui provisioning, gestione e fatturazione sono gestiti dal provider cloud e invisibili per gli sviluppatori. Oltre a FaaS, questi servizi includono:

  • Database e storage serverless: i database (SQL e  NoSQL) e lo storage (in particolare lo  storage a oggetti) sono alla base del livello di dati. Un approccio serverless a queste tecnologie comporta un allontanamento dal provisioning di "istanze" con limiti definiti di capacità, connessione e query e l'avvicinamento a modelli che scalano in linea con la domanda sia in termini di infrastruttura che di prezzo.

  • Streaming e messaggistica di eventi: le architetture serverless sono adatte per i carichi di lavoro basati su eventi e streaming, in particolare la piattaforma di streaming di eventi open source Apache Kafka

  • Gateway API: i gateway API fungono da proxy per le azioni web e forniscono l'instradamento del metodo HTTP, ID client e segreti, limiti di frequenza, CORS, visualizzazione dell'utilizzo delle API, visualizzazione dei log di risposta e politiche di condivisione di  API

Ashher Syed di IBM fornisce una spiegazione dettagliata del serverless e dello stack serverless (6:37):

Confronto tra serverless, PaaS, container e VM

Poiché il serverless,  PaaS (platform as a service), container e  VM (virtual machine)  svolgono tutti un ruolo critico nello sviluppo di applicazioni cloud e nell'ecosistema di calcolo, sarà utile un confronto tra il serverless e gli altri elementi per quanto riguarda alcuni attributi chiave.

  • Tempo di provisioning: misurato in millisecondi per il serverless, rispetto alle 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 gestite al 100% dal provider. Questo vale anche per PaaS, ma container e VM richiedono una notevole manutenzione, compresi l'aggiornamento e la gestione di sistemi operativi, immagini di container, connessioni, eccetera.

     

  • Scalabilità: la scalabilità automatica, compresa la scalabilità automatica a zero - è istantanea e intrinseca al serverless. Gli altri modelli offrono una scalabilità automatica ma lenta, che richiede un'attenta messa a punto delle regole di scalabilità automatica e nessuna scalabilità a zero.

     

  • Pianificazione della capacità: nessuna necessaria per il serverless. Gli altri modelli richiedono una combinazione di scalabilità automatica e una certa pianificazione della capacità.

     

  • Condizione di stateless: intrinseca per il serverless, il che significa che la scalabilità non è mai un problema; lo stato viene mantenuto in un servizio o una risorsa esterni. PaaS, container e VM possono avvalersi di HTTP, mantenere un socket o una connessione aperti per lunghi periodi di tempo e memorizzare lo stato in memoria tra le chiamate.

     

  • Alta disponibilità (HA, High Availability) e DR (disaster recovery): entrambi intrinseci al serverless senza sforzi supplementari e senza costi aggiuntivi. Gli altri modelli richiedono costi aggiuntivi e sforzi di gestione. Nel caso sia di VM che di container, l'infrastruttura può essere riavviata automaticamente.

  • Utilizzo delle risorse: il serverless è efficiente al 100% perché non esistono fattori come la capacità inattiva - viene richiamato solo su richiesta. Tutti gli altri modelli presentano almeno un certo grado di capacità inattiva.

     

  • Granularità e risparmio della fatturazione: il serverless viene misurato in unità di 100 millisecondi. PaaS, container e VM sono di norma misurati all'ora o al minuto.

Serverless, Kubernetes e Knative

Kubernetes è una piattaforma di orchestrazione dei container open source che automatizza l'implementazione, la gestione e la scalabilità dei container. L'automazione di Kubernetes semplifica notevolmente lo sviluppo di applicazioni basate su container.

Le applicazioni serverless sono spesso implementate in container. Da solo, Kubernetes non può eseguire applicazioni serverless senza un software specializzato che integri Kubernetes con una piattaforma serverless di uno specifico provider cloud.

Knative fornisce un framework serverless per Kubernetes. È un'estensione open-source per Kubernetes che consente a qualsiasi container di essere eseguito come un carico di lavoro serverless su qualsiasi piattaforma cloud su cui viene eseguito Kubernetes, indipendentemente dal fatto che il container sia creato intorno a una funzione serverless oppure a qualche altro codice applicativo (ad esempio, microservizi). Knative funziona astraendo il codice e gestendo l'instradamento di rete, i trigger di evento e la scalabilità automatica per l'esecuzione serverless.

Knative è trasparente per gli sviluppatori - essi si limitano a creare un container come al solito utilizzando Kubernetes e Knative fa il resto, eseguendo il container come un carico di lavoro serverless.

Scopri di più su Knative

Vantaggi e svantaggi del serverless

Vantaggi

Alla luce di quanto detto in precedenza, non dovrebbe sorprendere il fatto che il calcolo serverless offra diversi vantaggi tecnici e di business ai singoli sviluppatori e ai team di sviluppo aziendali.

Produttività degli sviluppatori migliorata:  come osservato sopra, il serverless consente ai team di sviluppo di concentrarsi sulla scrittura di codice, non sulla gestione dell'infrastruttura. Mette a disposizione degli sviluppatori molto più tempo per innovare e ottimizzare la loro funzionalità delle applicazioni front-end e la loro logica di business.

Paga solo per l'esecuzione: la misurazione inizia quando viene effettuata la richiesta e termina quando l'esecuzione finisce. Confronta ciò con il modello di calcolo  IaaS (infrastructure as a service) , in cui i clienti pagano per i server fisici, le VM e altre risorse richieste per eseguire le applicazioni, dal momento in cui eseguono il provisioning di queste risorse e fino a quando non ne eseguono esplicitamente il ritiro.

Sviluppa in qualsiasi linguaggio:  il serverless è un ambiente poliglotta, che consente agli sviluppatori di codificare in qualsiasi linguaggio o framework -Java, Python, JavaScript, node.js - con cui si sentono a proprio agio.

Cicli di sviluppo/DevOps semplificati. Il serverless semplifica l'implementazione e, in un senso più ampio, semplifica  DevOps  perché gli sviluppatori non dedicano tempo alla definizione dell'infrastruttura necessaria per integrare, testare, fornire e implementare build di codice in produzione.

Prestazioni efficienti in termini di costi. Per determinati carichi di lavoro - elaborazione perfettamente parallela, elaborazione di flussi, alcune attività di elaborazione dei dati - il calcolo serverless può essere sia più rapido che più efficiente in termini di costi rispetto ad altre forme di calcolo.

Visibilità dell'utilizzo. Le piattaforme serverless forniscono una visibilità pressoché totale dei tempi di sistema e utente e possono aggregare le informazioni sull'utilizzo in modo sistematico.

I professionisti dello sviluppo e dell'IT citano altri vantaggi specifici del calcolo serverless. Puoi esplorarli utilizzando lo  strumento interattivo (PDF, 1,8 MB)  qui di seguito:

 

Casi di utilizzo per il serverless

Data la sua unica combinazione di attributi e vantaggi, l'architettura serverless è adatta per i casi di utilizzo che riguardano microservizi, backend mobili ed elaborazione di flussi di dati ed eventi.

Serverless e microservizi

Il caso di utilizzo più comune del serverless oggi è il supporto di architetture di microservizi. Il modello di microservizi è incentrato sulla creazione di piccoli servizi che svolgono un singolo lavoro e comunicano tra loro utilizzando le API. Sebbene i microservizi possano anche essere realizzati e gestiti utilizzando PaaS o i container, il serverless ha guadagnato un notevole slancio grazie ai suoi attributi di piccoli elementi di codice, scalabilità intrinseca e automatica, provisioning rapido e un modello di prezzi che non prevede mai addebiti per la capacità inattiva.

Backend delle API

Qualsiasi azione (o funzione) in una piattaforma 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 che disponi di azioni web, puoi assemblarle in una  API  completa con un gateway API che apporta ulteriore sicurezza, supporto OAuth, limitazione della frequenza e supporto del dominio personalizzato.

Per un'esperienza pratica con i backend API, prova il tutorial relativo ad "applicazione web serverless e API."

Elaborazione dei dati

Il serverless è adatto per lavorare con dati strutturati di testo, audio, immagini e video, su attività quali l'arricchimento, la trasformazione, la convalida e la ripulitura di dati, l'elaborazione di PDF, la normalizzazione audio, l'elaborazione di immagini (rotazione, nitidezza, riduzione del rumore, generazione di anteprime), il riconoscimento ottico dei caratteri (OCR, optical character recognition) e la transcodifica video. Per un caso di utilizzo dettagliato di elaborazione di immagini, leggi "In che modo SiteSpirit è diventato 10 volte più veloce, al 10% del costo"

Operazioni di calcolo/mappa massivamente parallele

Qualsiasi tipo di attività perfettamente parallela è un buon caso di utilizzo per un runtime serverless, con ogni attività parallelizzabile che produce un singolo richiamo di azione. Le attività di esempio includono tutto quanto va dalla ricerca ed elaborazione di dati (specificamente lo storage di oggetti sul cloud), le operazioni di  Map(-Reduce)  e il web scraping e fino all'automazione dei processi di business, la regolazione di iperparametri, le simulazioni Monte Carlo e l'elaborazione di genomi.

Per un esempio dettagliato, leggi "In che modo una simulazione Monte Carlo è stata eseguita oltre 160 volte più velocemente su un'architettura serverless rispetto a una macchina locale".

Carichi di lavoro di elaborazione di flussi

La combinazione di Apache Kafka gestito con FaaS e database/storage offre una solida base per realizzare in tempo reale pipeline di dati e applicazioni di streaming. Queste architetture sono ideali per lavorare con tutti i tipi di inserimenti di streaming di dati (per la convalida, la ripulitura, l'arricchimento e la trasformazione), compresi i dati dei sensori IoT, i dati dei log delle applicazioni, i dati del mercato finanziario e gli streaming di dati di business (da altre fonti di dati).

Applicazioni comuni per il serverless

In un recente sondaggio di IBM, i professionisti IT hanno riferito di utilizzare il serverless in un'ampia gamma di applicazioni, tra cui CRM (customer relationship management), analytics e business intelligence, finanza e altro ancora:

 

Tutorial: introduzione al calcolo serverless

Puoi ampliare le tue capacità di calcolo serverless con questi tutorial:

Soluzioni
IBM Cloud Code Engine

Esegui il tuo container, il tuo codice applicativo o il tuo lavoro batch su un runtime del container completamente gestito

Esplora IBM Cloud Code Engine
IBM Cloud Satellite

Implementa ed esegui le applicazioni in modo coerente in ambienti on-premise, di edge computing e di cloud pubblico da qualsiasi fornitore di cloud

Esplora IBM Cloud Satellite
IBM Cloudant

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

Esplora IBM Cloudant
Risorse Serverless in the enterprise, 2021

La nuova ricerca svela degli insight sulle opportunità e le sfide del mondo reale del calcolo serverless.

Introduzione a IBM Cloud Code Engine

Vai oltre le funzioni per eseguire tutti i tuoi carichi di lavoro containerizzati - inclusi applicazioni web, microservizi e lavori batch - su questa piattaforma serverless completamente gestita.

Apprezza di nuovo il tuo cloud

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

Passa alla fase successiva

Il calcolo serverless offre un modo più semplice e più efficiente in termini di costi per creare e gestire applicazioni nel cloud. Scopri di più su IBM Cloud Code Engine, una piattaforma serverless con pagamento a consumo (pay-as-you-use) che consente agli sviluppatori di implementare applicazioni e flussi di lavoro serverless senza che siano necessarie competenze di Kubernetes.

Esplora IBM Cloud Code Engine oggi stesso