Applicazioni Web serverless: cosa sono e come crearle gratis con Cloudflare Pages, D1 e R2

Cosa sono Cloudflare Pages, D1 e R2: servizi per sviluppare, distribuire ed erogare applicazioni Web serverless.

Il moderno approccio al cloud computing consente di realizzare, distribuire ed erogare applicazioni Web che non presuppongono importanti investimenti in hardware e risorse per il networking.

Le applicazioni Web serverless scaturiscono dall’idea di procedere alla loro distribuzione senza oneri di manutenzione, mantenendo bassi i costi e beneficiando di un’immediata ed elevata scalabilità.

Nell’ultimo periodo Cloudflare ha realizzato una piattaforma cloud full-stack, capace cioè di venire incontro a tutte le esigenze degli sviluppatori e in grado di supportare la distribuzione di applicazioni serverless.
L’ulteriore vantaggio è che i servizi Cloudflare per creare ed erogare applicazioni serverless sono stati costruiti sulla piattaforma di edge computing dell’azienda statunitense. I server sono cioè fisicamente vicini ai dispositivi degli utenti finali che richiedono l’accesso ai dati quindi le applicazioni Web possono godere di prestazioni sempre ai massimi livelli.

Invece di distribuire le risorse da una regione specifica, l’applicazione Web serve i suoi contenuti sempre dal server più vicino a ciascun utente. Lo sviluppatore Web non deve più occuparsi di suddividere la distribuzione della sua applicazione su più regioni o dimensionare le risorse in modo manuale per soddisfare la domanda.

Il viaggio di Cloudflare verso la costruzione di una piattaforma cloud full-stack è cominciato con Cloudflare Workers.
Diversamente da AWS Lambda e Google Cloud Functions che eseguono il codice all’interno di container dedicati, Cloudflare Workers carica il codice sotto forma di JavaScript. Il codice JavaScript può essere eseguito senza ricorrere ai container, in modo semplice e veloce, peraltro utilizzando le API Web Platform comuni a tutti i browser moderni.

L’uso di API conformi con gli standard rende le funzioni serverless completamente portabili: ciò significa che il codice può essere agevolmente trasportato e gestito altrove senza legarsi a uno specifico fornitore. I Workers possono essere ospitati ed eseguiti anche in proprio, qualora lo si volesse.

Ovviamente questo approccio porta con sé alcuni svantaggi: i Cloudflare Workers non offrono supporto per runtime diversi da V8, lo stesso motore che integrano ad esempio Chromium e Chrome.
Il supporto per linguaggi diversi da JavaScript e TypeScript è quindi disponibile solo per il codice che può essere trasformato in JavaScript oppure compilato in WebAssembly.

I Workers non supportano inoltre Node.js (sono compatibili con un piccolo sottoinsieme di pacchetti NPM) e non permettono di stabilire connessioni dirette via TCP, ad esempio verso il server di un database relazionale. È quindi necessario inviare le richieste tramite un proxy HTTP.

Cloudflare ha predisposto un’intera articolata offerta che poggia proprio sui Workers e che consente di sviluppare facilmente applicazioni versatili senza lasciare la piattaforma.

Cloudflare Pages

Costruire un’applicazione Web da zero richiede coraggio, creatività, passione e determinazione.
Cloudflare Pages è una piattaforma che permette di esporre sul Web il codice che l’utente pubblica all’interno del suo repository GitHub collegato oppure che ospita direttamente sui sistemi Cloudflare.

In pochi secondi, Pages permette di distribuire il codice ed erogare il sito attraverso una piattaforma globale, qual è quella di Cloudflare, dislocata in oltre 270 data center a livello mondiale.

In questo modo, affidandosi allo stack cloud di Cloudflare, si può godere delle stesse prestazioni e affidabilità di una rete attraverso la quale alcuni dei più grandi siti Web del mondo gestiscono il loro traffico. Non solo. La buona notizia è che Cloudflare non pone nessun limite al numero di richieste gestibili o alla larghezza di banda che ciascuna applicazione può impegnare.

Con Pages si può quindi creare e gestire il front-end delle applicazioni: da quando, a novembre 2021, Cloudflare ha annunciato l’integrazione con i Workers, gli sviluppatori dell’azienda hanno integrato il sistema con Remix, Sveltekit, Qwik e Next.js.

Per impostazione predefinita, i progetti erogati attraverso Pages utilizzano un URL pages.dev fornito da Cloudflare. È però possibile supportare qualunque nome a dominio personalizzato attraverso la modifica dei record DNS e attivare il supporto HTTPS.
Inoltre il sistema Web Analytics di Cloudflare è già pronto per fornire dati di traffico in tempo reale.

La documentazione di Pages è ricca di esempi: viene ad esempio spiegato come creare un form HTML e raccogliere i dati in un Worker oppure come creare un blog e metterlo online.

Database serverless con Cloudflare D1

Abbiamo già detto che una limitazione rilevante dei Cloudflare Workers consiste nell’impossibilità di stabilire connessioni dirette via TCP. Ciò riduce la libertà d’azione di ogni programmatore che non riesce a collegare un database relazione e, ad esempio, estrarre i dati che servono oppure aggiungere le informazioni ricevute in seguito alla compilazione di un form online.

Cloudflare D1 è il servizio che va a colmare questo vuoto: anch’esso basato sul concetto di edge computing, si tratta di un database relazionale costruito su SQLite. Cloudflare offre funzionalità di replica e backup ridondanti con la possibilità di ripristinare i dati in casi di necessità. Inoltre, le prestazioni in fase di lettura e scrittura sono le migliori possibili, senza oneri di manutenzione e senza dover configurare server da gestire a lungo termine.

Il database stesso, essendo in formato SQLite, risulta memorizzato in un unico file, facilmente portabile e utilizzabile altrove senza dover avviare particolari operazioni di conversione. È quindi esso stesso il primo database serverless in assoluto.

Cloudflare D1 è al momento accessibile solo tramite i Cloudflare Workers: abilitare l’accesso dall’esterno ai dati conservati in D1 richiederebbe la creazione di un’API pubblica.

L’applicazione di esempio Northwind Traders è stata sviluppata da Cloudflare utilizzando lo storico database dimostrativo che Microsoft ha iniziato a distribuire per la prima volta insieme con Access nel 1997.
Chiunque si sia occupato di programmazione e di RDBMS conosce Northwind, una base dati che viene spesso utilizzata in tanti corsi ed esempi.

Ecco, quello storico database Northwind, grazie ai servizi Cloudflare e in particolare a D1, si trasforma in un’applicazione aziendale, con uno schema realistico e molte chiavi esterne che coinvolgono un ampio ventaglio di tabelle.
La demo di Northwind Traders presenta anche una dashboard in cui è possibile trovare dettagli e metriche sulle query SQL D1 che vengono via via utilizzate “dietro le quinte”.

Cloudflare spiega come creare il primo database D1 e collegarlo a un Worker.

Cloudflare R2: storage dei dati gestiti dalle applicazioni Web

Per chiudere il cerchio, Cloudflare R2 offre agli sviluppatori un supporto per memorizzare i dati gestiti dalle loro applicazioni Web.
Con il servizio R2, Cloudflare ha deciso di rimuovere le tariffe di uscita ovvero i costi che vengono applicati quando i dati escono dalla rete cloud del provider. Di solito, infatti, i fornitori fanno pagare due volte: quando le informazioni vengono scritte, lette e archiviate ma anche ogni volta che i dati vengono inviati altrove.

Il piano free di R2 mette a disposizione 10 GB gratis per l’archiviazione al mese e da 1.000.000 di operazioni mensili sui dati memorizzati.
Complessivamente, R2 appare significativamente più economico di AWS S3 per gestire quei dati che si devono utilizzare di frequente e sebbene manchi di alcune funzionalità rispetto al servizio di Amazon, è compatibile con le API S3.

Nelle scorse settimane abbiamo presentato un esempio di CMS self-hosted su Cloudflare per pubblicare contenuti gratis: il progetto microfeed sfrutta proprio Pages, D1 e R2.

Com’è ovvio, la piattaforma Cloudflare non viene incontro a tutti i possibili casi d’uso ma è in rapida evoluzione e anziché replicare l’offerta dei concorrenti è stata progettata per farsi carico degli aspetti più ostici che il programmatore incontra durante lo sviluppo di un’applicazione Web.

Ti consigliamo anche

Link copiato negli appunti