Il computing serverless è un metodo di fornire servizi di backend su base "as-used". Si usano ancora i server, ma un'impresa che acquista servizi backend da un vendor serverless riceve un addebito sulla base dell'uso e non su un valore fisso di larghezza di banda o di numero di server.
Dopo aver letto questo articolo sarai in grado di:
Argomenti correlati
Serverless e container a confronto
Serverless e Javascript
Function as a Service (FaaS)
Edge computing
Platform as a Service (PaaS)
Abbonati a theNET, il riepilogo mensile di Cloudflare sulle tematiche più discusse in Internet.
Copia link dell'articolo
L'elaborazione serverless è un metodo per fornire servizi di backend in base all'utilizzo effettivo. Un provider serverless consente agli utenti di scrivere e distribuire codice senza doversi preoccupare dell'infrastruttura sottostante. Un'azienda che si affida a un fornitore di servizi backend serverless paga in base al consumo di risorse e non deve prenotare e pagare per una quantità fissa di larghezza di banda o un numero fisso di server, poiché il servizio è auto-scalabile. Si noti che, nonostante il nome "serverless", i server fisici vengono comunque utilizzati, ma gli sviluppatori non devono esserne a conoscenza.
All'inizio del Web, chiunque volesse creare un'applicazione Web doveva possedere l'hardware fisico necessario per far eseguire un server, cosa che è costosa e farraginosa.
Poi arrivò il cloud computing, in cui un determinato numero di server o spazio su server poteva essere noleggiato in remoto. Gli sviluppatori e le imprese che noleggiano tale spazio nei server a unità fisse, in genere ne acquistano in eccesso per garantire che eventuali picchi di traffico o attività non superino i limiti mensili o rompano le loro applicazioni. Ciò significa che gran parte dello spazio sul server per cui viene pagato può andare sprecato. I provider cloud hanno introdotto dei modelli automaticamente scalabili per affrontare la questione, ma anche così, un picco indesiderato di attività, come un attacco DDoS, potrebbe risultare molto costoso.
Il computing serverless consente agli sviluppatori di acquistare servizi backend su base "pay-as-you-go" flessibile, e cioè gli sviluppatori pagano solo per i servizi che usano. È come passare da un abbonamento per il cellulare a tariffa fissa e limite fisso mensili, a uno che ti addebita solo ogni byte di dati che usi davvero.
Il termine "serverless" è un po' fuorviante perché si usano comunque dei server per fornire questi servizi backend, ma tutto lo spazio nei server e tutto ciò che concerne l'infrastruttura è gestito dal provider. Serverless significa che gli sviluppatori possono lavorare senza doversi preoccupare dei server.
Lo sviluppo delle applicazioni in genere si divide in due realtà: frontend e backend. Il frontend è la parte dell'applicazione che vedono e con cui interagiscono gli utenti, come ad esempio il layout visivo. Il backend è la parte che gli utenti non vedono; include il server in cui vivono i file dell'applicazione e il database in cui persistono i dati utente e la logica settoriale.
Ad esempio, immaginiamo un sito Web che venda biglietti per i concerti. Quando un utente digita l'indirizzo di un sito Web nella finestra del browser, il browser invia una richiesta al server di backend, che risponde con i dati del sito Web. L'utente quindi vedrà il frontend del sito Web, che includerà testo, immagini e campi che potrà riempire. L'utente quindi può interagire con uno dei campi del frontend per cercare uno dei suoi musicisti preferiti. Quando l'utente fa clic su "Invia", questo innesca una nuova richiesta al backend. Il codice del backend controlla il database per vedere se esiste un musicista con quel nome e, se così fosse, quand'è il suo prossimo concerto e quanti biglietti sono disponibili. Il backend quindi passa questi dati al frontend, il quale li visualizza in un modo che ha senso per l'utente. Allo stesso modo, quando l'utente crea un account e immette le informazioni finanziare per acquistare i biglietti, si verifica un'altra conversazione tra il frontend e il backend.
La maggior parte dei provider serverless offre servizi di database e archiviazione, e molti hanno anche delle piattaforme Function-as-a-Service (FaaS), come Cloudflare Workers. FaaS consente agli sviluppatori di eseguire piccoli pezzi di codice sul perimetro di rete. Con FaaS, gli sviluppatori possono creare un'architettura modulare, creando una base di codice più scalabile senza dover spendere risorse per mantenere il backend sottostante. Scopri di più su FaaS >>
Scopri di più sui vantaggi del serverless computing.
Un paio di tecnologie che vengono spesso confuse con l'elaborazione serverless sono Backend-as-a-Service e Platform-as-a-Service. Sebbene condividano le somiglianze, questi modelli non soddisfano necessariamente i requisiti del serverless.
Backend-as-a-service (BaaS) è un modello di servizio in cui un provider cloud offre servizi di backend come l'archiviazione dei dati, in modo che gli sviluppatori possano concentrarsi sulla scrittura del codice front-end. Ma mentre le applicazioni serverless sono basate su eventi ed eseguite sul perimetro, le applicazioni BaaS potrebbero non soddisfare nessuno di questi requisiti. Scopri di più su BaaS >>
Platform-as-a-service (PaaS) è un modello in cui gli sviluppatori essenzialmente noleggiano tutti gli strumenti necessari per sviluppare e distribuire applicazioni da un provider cloud, inclusi elementi come sistemi operativi e middleware. Tuttavia, le applicazioni PaaS non sono facilmente scalabili come le applicazioni serverless. Inoltre, PaaS non viene eseguito necessariamente ai margini e spesso presenta un notevole ritardo di avvio che non è presente nelle applicazioni serverless. Scopri di più su PaaS >>
Infrastructure-as-a-service (IaaS) è un termine generico per i provider di cloud che ospitano l'infrastruttura per conto dei loro clienti. I provider IaaS possono offrire funzionalità serverless, ma i termini non sono sinonimi. Scopri di più su IaaS >>
L'elaborazione serverless continua a evolversi man mano che i provider serverless escogitano soluzioni per superare alcuni dei suoi svantaggi. Uno di questi inconvenienti è l'avvio a freddo.
In genere, quando una particolare funzione serverless non viene chiamata da un po' di tempo, il provider disattiva la funzione per risparmiare energia ed evitare un over-provisioning. La prossima volta che un utente esegue un'applicazione che chiama quella funzione, il provider serverless dovrà riavviarla e ricominciare a ospitare quella funzione. Questo tempo di avvio aggiunge una latenza significativa, nota come "avvio a freddo".
Una volta che la funzione è attiva e funzionante, verrà servita molto più rapidamente alle richieste successive (avvii a caldo), ma se la funzione non viene richiesta di nuovo per un po', la funzione tornerà nuovamente inattiva. Ciò significa che il prossimo utente che richiederà quella funzione sperimenterà un avvio a freddo. Fino a poco tempo fa, gli avvii a freddo erano considerati un compromesso necessario per l'utilizzo delle funzioni serverless.
Cloudflare Workers ha risolto questo problema attivando in anticipo le funzioni serverless, durante l' handshake TLS. Dal momento che le funzioni Workers vengono avviate ai margini in un lasso di tempo molto breve, persino inferiore al tempo necessario per completare l'handshake, il risultato è una piattaforma FaaS con zero avvii a freddo. Questo approccio incarna il principio che The Network is the Computer®. Per iniziare a utilizzare Cloudflare Workers, consulta la documentazione per gli sviluppatori.
Man mano che vengono affrontati sempre più gli svantaggi dell'utilizzo del serverless e la popolarità dell'edge computing cresce, possiamo aspettarci di vedere l'architettura serverless diventare più diffusa.
L'elaborazione serverless utilizza un modello "pay-as-you-go", in cui gli sviluppatori pagano solo per le risorse di calcolo di backend che effettivamente utilizzano, invece di pagare per dello spazio server o per larghezza di banda riservati.
Function-as-a-Service (FaaS) è un tipo di piattaforma serverless che permette agli sviluppatori di eseguire piccole porzioni di codice modulare in risposta a determinati eventi, senza la necessità di gestire l'infrastruttura sottostante.
Nell'elaborazione serverless, per scalabilità automatica si intende la capacità del provider di allocare o ridurre le risorse di elaborazione secondo necessità, in modo da togliere agli sviluppatori l'onere di gestire autonomamente le policy di scalabilità.
L'elaborazione serverless si rivolge specificamente ai servizi di backend, gestendo la logica lato server, l'elaborazione dei dati e la gestione dell'infrastruttura che gli utenti non vedono direttamente.
L'elaborazione serverless comprime i costi eliminando la necessità di pagare per spazi server inattivi o per il tempo CPU inutilizzato. I costi, infatti, si basano unicamente sull'utilizzo effettivo.
In ambito serverless, per edge computing si intende la possibilità di distribuire le funzioni più vicino agli utenti finali, riducendo la latenza e migliorando le prestazioni delle applicazioni.
Per "mitigazione dei cold start" si intendono le tecniche che riducono il ritardo all'avvio di funzioni serverless inattive. I provider serverless dotati di questo tipo di funzionalità implementano in anticipo funzioni di avviamento rapido (spin-up) sul perimetro di rete, contribuendo a eliminare i ritardi nell'esecuzione.