Che cos'è il modello serverless?
Il serverless è un modello di progettazione dell'architettura software che sfrutta l'esecuzione di codice basata sugli eventi attraverso servizi gestiti su cloud. L'obiettivo è quello di sviluppare applicazioni altamente scalabili ed economiche composte da piccole funzioni indipendenti senza che gli sviluppatori debbano progettare o pensare all'infrastruttura sottostante in cui viene eseguito il loro codice.
Tutte le applicazioni utilizzano un server in un determinato momento. Ma quindi, perché si parla di logica di business serverless (senza server)? Il termine serverless fa riferimento a un'architettura e a un modello di servizio in cui gli sviluppatori non devono preoccuparsi dell'infrastruttura e possono invece concentrarsi sulla logica di business della loro applicazione. Il serverless è il futuro dell'evoluzione dell'architettura software, che dal monolite è passata ai microservizi per poi giungere alle funzioni, come spiega Adrian Cockcroft in questo video.
Spesso serverless e FaaS sono considerati termini intercambiabili, ma non è del tutto corretto. Il serverless è un pattern architettonico globale che utilizza FaaS insieme ad altri servizi gestiti su cloud. Il FaaS è un tipo specifico di servizio, come AWS Lambda, Google Cloud Functions e Azure Functions, che consente agli sviluppatori di distribuire le funzioni.
-
Unità di codice piccole e indipendenti. Spesso i servizi scritti utilizzando l'architettura serverless sono costituiti da una singola funzione.
-
Esecuzione basata sugli eventi. L'infrastruttura necessaria per eseguire una funzione non esiste fino a quando quest'ultima non viene attivata. Una volta ricevuto un evento, viene creato un ambiente di elaborazione effimero per eseguire tale richiesta, che verrà eliminato immediatamente o, più spesso, rimarrà attivo per un breve periodo di tempo, di solito 5 minuti.
-
Scalabilità a zero. Non appena una funzione non riceve più richieste, l'infrastruttura viene disattivata e smette completamente di funzionare. Ciò consente di risparmiare sui costi, poiché l'infrastruttura viene eseguita solo in caso di utilizzo. In assenza di utilizzo, l'ambiente viene ridotto a zero.
-
Scalabilità all'infinito. Il FaaS si occupa di monitorare il carico e creare istanze aggiuntive quando necessario, in teoria fino all'infinito. Ciò elimina praticamente la necessità per gli sviluppatori di pensare alla scalabilità durante la progettazione delle applicazioni. Una singola funzione distribuita può gestire da una a un miliardo di richieste senza alcuna modifica al codice.
-
Utilizzo dei servizi gestiti. Spesso, le architetture serverless fanno uso di servizi forniti dal cloud per elementi della loro applicazione che forniscono elevati carichi di lavoro standardizzati, come l'archiviazione di file, la gestione di database e code, e così via. Ad esempio, Firebase di Google è conosciuto nella community serverless come un servizio di gestione di database e stati che si collega ad altri servizi Google come Cloud Functions.
Di seguito trovi una tabella con alcuni esempi di servizi gestiti da AWS, Google Cloud e Azure, accanto alle loro controparti open-source.
Servizio | Open-source | AWS | Google Cloud | Azure |
---|---|---|---|---|
FaaS | Knative | Lambda | Cloud Functions | Azure Functions |
Archiviazione | Minio | S3 | Cloud Storage | Azure Storage |
Database SQL | MySQL | RDS | Cloud SQL | Azure SQL Database |
Database NoSQL | MongoDB, Cassandra, CouchDB | DynamoDB | Cloud Datastore | Cosmos DB |
Coda di messaggi | Kafka, Redis, RabbitMQ | SQS, Kinesis | Google Pub/Sub | Azure Queue Storage |
Service mesh | Istio | App Mesh | Istio on GKE | Azure Service Fabric Mesh |
GitLab Serverless consente alle aziende di implementare il proprio FaaS su Kubernetes.
Velocità
Maggiore velocità di innovazione. Quando gli sviluppatori possono concentrarsi esclusivamente sulla logica di business, la loro produttività aumenta.
Stabilità
Maggiore stabilità e resilienza (minori perdite a causa dei tempi di inattività).
Scalabilità
Maggiore scalabilità: il software è in grado di stare al passo con le esigenze aziendali.
Costi
Riduzione dei costi. Il modello serverless offre enormi risparmi sui costi rispetto a un'infrastruttura operativa 24 ore su 24, in quanto si pagano solo le risorse effettivamente utilizzate.
Nessun vincolo al fornitore
Non esistono vincoli al fornitore. Le organizzazioni possono scegliere a chi affidarsi, da qualsiasi cloud che supporti Kubernetes fino a server on-premise.
Flusso di lavoro
Il FaaS fa parte dello stesso flusso di lavoro del resto del ciclo di sviluppo del software, con un'unica applicazione per la gestione della pianificazione e dei test, il deployment e il monitoraggio.
Deployment
Il deployment delle funzioni è molto più semplice e ottimizzato rispetto all'utilizzo diretto di Knative.
Contenuti suggeriti
Oltre il 50% delle società Fortune 100 si affida a GitLab
Inizia a distribuire software migliori più velocemente
Scopri cosa può fare il tuo team grazie a una
piattaforma DevSecOps intelligente.