Home
topics
Serverless
Data di pubblicazione: 10 giugno 2024
Autori: Stephanie Susnjara, Ian Smalley
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, microservizi e container 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).
Connetti e integra i tuoi sistemi al fine di preparare l'infrastruttura per l'AI.
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.
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.
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.
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.
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.
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.
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.
Il serverless computing offre ai singoli sviluppatori e ai team di sviluppo aziendali numerosi vantaggi tecnici e di business:
Sebbene il serverless offra molti vantaggi, è essenziale considerare alcuni svantaggi:
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.
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.
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.
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.
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 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.
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.
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.
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).
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.
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.
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.
Puoi migliorare le tue competenze in materia di serverless computing con questi tutorial:
Esegui il tuo container, il tuo codice di applicazione o processo batch su un runtime del container completamente gestito.
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.
Distribuisci ed esegui app in modo coerente negli ambienti on-premise, di edge computing e di cloud pubblico da qualsiasi fornitore cloud.
Il livello di dati per applicazioni iperscalabili, resilienti e disponibili a livello globale, basato su Apache CouchDB open source.
Monitora le tue applicazioni e i tuoi servizi serverless per ottimizzare prestazioni, disponibilità e sicurezza.
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.
Dai un'occhiata più da vicino a IBM Cloud Code Engine e ai benefici che offre.
(Tutti i link sono esterni a ibm.com)
1 Global Serverless Architecture Market Report, SkyQuest, marzo 2024
2 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