Cloudflare Workers: introduzione al serverless edge computing
Cloudflare Workers è la piattaforma serverless edge di Cloudflare che permette di eseguire codice JavaScript o TypeScript direttamente sui 300+ data center globali, a pochissimi millisecondi dall'utente finale. A differenza di AWS Lambda o Google Cloud Functions, i Workers usano V8 isolates invece di container, ottenendo cold start praticamente zero e latenze inferiori al millisecondo. Sono ideali per A/B testing, manipolazione delle richieste, API leggere e generazione dinamica di contenuti.
V8 Isolates: l'innovazione tecnica
I Workers non girano in container o VM, ma in isolates della VM JavaScript V8 (la stessa di Chrome e Node.js). Un singolo processo V8 può ospitare migliaia di isolates separati senza overhead di context switch. Il cold start passa dai 100-500ms di Lambda a meno di 5ms. La memoria per worker è limitata (128MB) e il tempo CPU per richiesta è di 10-50ms a seconda del piano, ma è sufficiente per la stragrande maggioranza dei casi d'uso edge.
Procedura passo-passo
- Installa Node.js 18+ sulla macchina di sviluppo.
- Installa il CLI Wrangler:
npm install -g wrangler. - Autenticati con
wrangler loginaprendo il browser. - Crea un nuovo progetto:
wrangler init mio-worker. - Modifica src/index.ts o src/index.js con la logica desiderata.
- Esegui in locale:
wrangler dev. - Effettua il deploy:
wrangler deploy. - Verifica l'URL mio-worker.tuoaccount.workers.dev.
- Configura un custom domain dal dashboard Workers.
- Imposta variabili d'ambiente in wrangler.toml con [vars].
Esempio: hello world e modifica risposta
Il Worker più semplice esporta un fetch handler che riceve una Request e restituisce una Response. Esempio di modifica dell'HTML in transito: const response = await fetch(request); const text = await response.text(); return new Response(text.replace('vecchio', 'nuovo'), response);. Più sofisticato è l'uso di HTMLRewriter, un parser streaming nativo che permette di applicare trasformazioni DOM-like senza materializzare il documento in memoria.
Casi d'uso comuni
A/B testing: scelta random tra due versioni di pagina con setting cookie. Geolocalizzazione: redirect in base a request.cf.country. Header manipulation: aggiunta di CORS, security headers, custom auth. API gateway: routing verso microservizi diversi. Image transformation: integrazione con Cloudflare Images. Edge cache custom: usare KV o Cache API per logiche custom. Bot mitigation: validazione fingerprint con logica personalizzata.
Storage: KV, Durable Objects, R2, D1
I Workers possono accedere a vari servizi di storage Cloudflare. KV è un key-value store eventual-consistent globale. Durable Objects forniscono strong consistency e stateful computing. R2 è object storage S3-compatibile senza egress fee. D1 è database SQLite gestito. Queues e Streams completano l'offerta per scenari asincroni.
Errori comuni e come risolverli
- CPU time exceeded: la richiesta ha superato il limite (10ms su Free, 50ms su Paid). Ottimizza il codice o aumenta il piano.
- Worker fa loop infinito: fetch del request originale senza condizione. Aggiungi un'header per spezzare il loop.
- CORS preflight bloccato: aggiungi handler per OPTIONS con header Access-Control-* corretti.
- Quota giornaliera esaurita: Free ha 100k richieste/giorno. Upgrade o ottimizza.
- Risposta non cachata: imposta cf.cacheTtl o usa Cache API esplicitamente.
Pricing
Il piano Free include 100.000 richieste/giorno e 10ms CPU/richiesta. Il piano Workers Paid (5 dollari/mese) include 10 milioni di richieste/mese e 50ms CPU, con costo marginale di 0.30 dollari per milione di richieste aggiuntive. Per la maggior parte dei siti il Paid è sufficientissimo e costa meno di un caffè al mese. KV, R2 e D1 hanno pricing separato ma generoso sul tier free.
Domande frequenti
D: Posso usare npm packages?
R: Sì, con bundling tramite Wrangler. Alcuni package Node-specifici richiedono polyfill.
D: Workers supportano WebSocket?
R: Sì, sia come server (Durable Objects) sia come client.
D: Posso scrivere in TypeScript?
R: Sì, Wrangler supporta TS out-of-the-box.
D: Quanto costa testare?
R: wrangler dev è gratuito senza limiti, gira in locale con miniflare.
Considerazioni operative finali
Quando applichi una configurazione di questo tipo in produzione è sempre buona norma seguire un'approccio incrementale: parti con un test su staging, monitora gli effetti per qualche giorno, poi estendi gradualmente al traffico live. La rete Cloudflare elabora ogni cambiamento in pochi secondi a livello globale, quindi le modifiche sono effettive quasi immediatamente, ma gli effetti collaterali su utenti reali possono richiedere ore o giorni per emergere. Annota nel runbook interno data, motivo e parametri di ogni modifica significativa. Una documentazione precisa accelera enormemente il troubleshooting futuro e facilita il passaggio di consegne tra membri del team.
Vale anche la pena ricordare che Cloudflare aggiorna frequentemente l'interfaccia del dashboard e le posizioni delle voci di menu. La logica e le funzionalità descritte in questa guida restano valide, ma il percorso esatto per raggiungere ogni opzione può variare leggermente nel tempo. In caso di difficoltà a trovare una specifica voce, utilizza la barra di ricerca interna del dashboard oppure consulta la documentazione ufficiale aggiornata. La community Cloudflare sul forum ufficiale e su Stack Overflow è inoltre molto attiva e offre spesso risposte rapide a problemi specifici di configurazione.
Per progetti complessi che coinvolgono più servizi Cloudflare contemporaneamente (CDN, Workers, WAF, Access, R2) conviene strutturare la configurazione come codice tramite Terraform o Pulumi. Questo permette versioning, code review, rollback atomici e deploy ripetibili tra environment. Per team con esigenze più semplici la gestione manuale via dashboard resta perfettamente valida, soprattutto se accompagnata da una checklist scritta delle impostazioni applicate. La scelta dell'approccio dipende dalle dimensioni del progetto e dal grado di automazione desiderato. L'importante è essere consistenti e mantenere tracciabilità delle modifiche effettuate.
Hai bisogno di aiuto?
Se vuoi configurare Cloudflare per il tuo sito con il team di G Tech Group, scrivici tramite il modulo di contatto.