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
Serverless e Javascript
Function as a Service (FaaS)
Edge computing
Platform as a Service (PaaS)
Ricevi un riepilogo mensile degli approfondimenti Internet più popolari!
Copia link dell'articolo
Il computing serverless è un metodo di fornire servizi di backend su base "as-used". Un provider serverless consente agli utenti di scrivere e implementare codice senza doversi preoccupare dell'infrastruttura sottostante. Un'impresa che acquista servizi backend da un vendor serverless riceve un addebito sulla base delle elaborazioni e non deve prefissare né pagare per una determinata larghezza di banda o un determinato numero di server, dato che il servizio è scalabile automaticamente. Tenere presente che anche se si chiama serverless, vengono comunque ancora usati server fisici, ma è un aspetto che non tocca gli sviluppatori.
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 la stretta di mano, il risultato è una piattaforma FaaS con zero avvii a freddo. 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.