Topics Serverless

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.

Scopri di più su GitLab

Che cos'è la logica di business serverless?

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.

Serverless, FaaS (Functions as a Service) e servizi gestiti

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.

Attributi del modello serverless

  • 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.

Confronto dei servizi gestiti su cloud

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

Valori di business e vantaggi di GitLab Serverless

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.

Vuoi iniziare?

Scopri cosa è capace di fare il tuo team grazie a una piattaforma DevSecOps unificata.