Cambia tema

Stack backend per un fondatore solitario: Cloudflare Workers, Supabase, Node.js e database

Easton editorial illustration: a central API routing hub with one inbound request token and three clearly differentiated outbound branches

"Cloudflare pubblica limiti distinti di richieste, CPU, memoria, subrequest e dimensione per Workers Free e Paid, senza durata HTTP fissa mentre il client resta connesso."

Il frontend è pronto. Ora devi implementare /api/submit, /api/checkout-webhook e /api/report-cron, oltre a memorizzare users, usage_events e files. Cosa va in Workers, Supabase o in un servizio Node separato?

Uno stack backend non è una sola piattaforma. Ingresso, dati, file, attività lunghe, autenticazione e webhook vanno distribuiti. Workers copre edge e logica leggera, Supabase Auth e Postgres, Node.js il lavoro fuori dalla runtime edge. Confronta la tabella con il backlog.

1. Tabella delle responsabilità: dove va ogni elemento

Inizia da API, webhook, cron, dati e file:

ResponsabilitàPunto inizialeMotivoRischio
IngressoCloudflare WorkersEdge globale e bassa latenzaSeparare ciò che supera CPU, memoria o dipendenze
API leggereWorkers / Edge FunctionsInoltro, validazione e I/O breveWorkers è edge; Edge Functions è nel progetto Supabase
WebhookWorkers o Edge FunctionsCallback, firma e scrittura idempotenteAccodare il lavoro pesante
AutenticazioneSupabase AuthAuth, RLS, permessi e social loginNon esporre service role o secret al browser
Dati aziendaliSupabase PostgresRelazioni, transazioni, query e triggerAnche D1 richiede migration, constraint e permessi
OggettiSupabase Storage / R2Upload, immagini, export e backupScegliere per accesso, egress, CDN e strumenti
Lavori lunghiWorker Node.js / piattaforma taskBrowser, file, moduli nativi, consumerNon legare tutto a una richiesta sincrona
Servizio NodeNode.jsnpm, connessioni lunghe e runtime completaGestire deploy, monitoraggio, patch e scala

La tabella non suggerisce di mettere tutto in Workers. Workers ha limiti; Supabase quote e pause; Node.js operazioni continue. Puoi rimandare Node, ma devi riconoscerne il segnale.

Decidere dove vivono i dati

  • Dati aziendali → Supabase Postgres o database relazionale per relazioni, transazioni, query, trigger e foreign key.
  • File → Supabase Storage o R2 secondo permessi, egress, CDN, regione e strumenti.
  • Cache → KV; D1 può conservare relazioni leggere senza sostituire la fonte di verità.

Il confronto D1, Postgres, R2, S3 e SQLite appartiene all’articolo storage. Qui assegniamo solo categorie.

Separare webhook e lavoro lungo

Stripe o GitHub possono arrivare a Workers o Edge Functions. L’handler valida la firma, registra idempotenza e risponde. Browser, file grandi o attese esterne continuano in Queue, Workflow, Container o Node.js.

Workers Paid offre 30 secondi CPU HTTP di default, configurabili fino a 5 minuti; Cron almeno orario arriva a 15 minuti. HTTP non ha wall-clock fisso con client connesso, ma disconnessioni, retry, risorse e update rendono fragile un lavoro lungo legato alla richiesta.

Soglie dei piani gratuiti

A luglio 2026, Workers Free include 100.000 richieste/giorno, 10 ms CPU, 128 MB e 50 subrequest. Supabase Free include 50.000 MAU, 500 MB database, 5 GB egress, 1 GB file e due progetti attivi.

Sono budget iniziali, non promesse. Supabase sospende dopo una settimana inattiva e Workers richiede Paid oltre Free. Con utenti o pagamenti stabili, aggiungi alert, costi e degradazione.

2. Cloudflare Workers: cosa è adatto e cosa no

Workers non è universale. I confini pratici sono CPU, memoria, subrequest e bundle.

Limiti Workers Free a luglio 2026

Sono 100.000 richieste/giorno e 10 ms CPU per invocation, 128 MB, 50 subrequest e 3 MB compressi. Il superamento CPU restituisce 1102. HTTP non ha wall-clock fisso con client connesso; ctx.waitUntil() estende fino a 30 secondi dopo risposta o disconnessione.

Limiti Workers Paid Standard

Il minimo è 5 dollari per account/mese, con 10 milioni di richieste e 30 milioni di ms CPU. CPU HTTP: 30 secondi default, fino a 5 minuti. Extra: 0,30 dollari per milione di richieste e 0,02 per milione di ms. Sono 10.000 subrequest, 10 MB e 128 MB.

Casi adatti

  • Ingresso, proxy edge e API leggere.
  • Webhook, firme e enqueue idempotente.
  • Cron, Queues e Workflows.
  • KV/R2, cache, redirect e A/B.

Prevalgono I/O, validazione e orchestrazione, senza grandi buffer, browser o librerie native.

Casi non adatti

  • CPU continua → dividere, asincrono o Node.js/Container.
  • File intero in memoria → stream o upload diretto.
  • Browser lungo → Node.js con Playwright/Puppeteer.
  • Dipendenza fuori runtime → Node.js o container.

La compatibilità Node non rende adatto ogni workload. Valuta risorse, retry, durata e osservabilità.

Soglia di costo

A 5 ms, 10 milioni di richieste consumano 50 milioni di ms CPU. Dopo 30 milioni inclusi, l’extra è circa 0,40 dollari, oltre a KV, Queues o R2.

Il rischio è una funzione centrale valida solo nella quota gratuita. Prepara rate limit, cache e fallback.

3. Supabase: limiti di Auth, Postgres, Storage ed Edge Functions

Supabase riunisce Postgres, Auth, Storage, Realtime ed Edge Functions, ciascuno con limiti.

Limiti Supabase Free a luglio 2026

Sono 500 MB database, 50.000 MAU, 5 GB egress, 5 GB cached egress e 1 GB file, con due progetti attivi. Dopo una settimana inattiva viene sospeso: serve a validare, non garantire produzione.

Quota Supabase Pro

Parte da 25 dollari/mese: 100.000 MAU, 8 GB disk, 250 GB egress, 250 GB cached e 100 GB file. Include 10 dollari di compute credit; gli extra aumentano il conto.

Casi adatti

  • Email, OAuth, sessioni e RLS.
  • Relazioni, constraint, transaction e query.
  • File con policy.
  • Trigger, funzioni e migration Postgres.
  • Edge Functions legate a Auth, Postgres e Storage.

Quando la logica scrive dati utente, aggiorna righe o registra upload, Supabase riduce i componenti.

Limiti Edge Functions

Runtime TypeScript/Deno: 256 MB, 2 secondi CPU per request e idle timeout 150 secondi. Durata massima: 150 secondi Free e 400 Paid.

Wall-clock include attesa I/O, non CPU. Browser, multithreading nativo, video e file grandi vanno a worker dedicati. I background task mantengono i limiti.

Edge Functions o Workers

  • Logica legata a Supabase → Edge Functions.
  • Ingresso edge o proxy indipendente → Workers.

Webhook che aggiorna subscription sta bene in Edge Functions; firma, rate limit e forward in Workers. Il lavoro lungo va in coda.

Pausa del progetto

Free si sospende dopo una settimana inattiva. Uno strumento occasionale può attendere la ripresa; un prodotto stabile deve valutare Pro, backup e migration.

4. Node.js: quando ha ancora senso

Serverless riduce manutenzione, non elimina runtime complete, dipendenze di sistema e processi persistenti.

Quando usare Node.js

  • Playwright o Puppeteer.
  • File grandi, parsing e disco temporaneo.
  • Moduli nativi o npm fuori edge.
  • Consumer persistenti, WebSocket e API admin.
  • Backend condiviso con risorse e osservabilità uniformi.

Screenshot, PDF, raccolta, video e file grandi richiedono spesso più CPU, memoria, processi o filesystem.

Segnali per Node.js

Valutalo quando i job toccano ripetutamente CPU, memoria, durata, bundle o compatibilità, oppure richiedono browser, moduli nativi, connessioni persistenti o queue affidabili.

Non usare solo «più di 30 secondi». Ogni prodotto ha limiti diversi; conta rientrare nel modello di risorse, retry, idempotenza e osservabilità.

Quando non usare Node.js

  • Forward API o routing edge.
  • Validazione e write I/O leggeri.
  • Nessun file pesante, nativo o connessione lunga.
  • Nessuna domanda che giustifichi un server.

Workers o Edge Functions coprono questi casi.

Node.js non è superato

Edge scambia vincoli con poca gestione e distribuzione; Node.js scambia infrastruttura con compatibilità, controllo e processi persistenti. Aggiungilo quando browser, file o dipendenze diventano reali.

5. Workers e Supabase: API client o Hyperdrive

Formano uno stack di edge più identità e dati, non solo concorrenti.

Combinare Workers e Supabase

Workers gestisce inoltro, validazione, rate limit e cache; Supabase Auth e Postgres identità, dati e policy. È adatto al primo prodotto senza server.

Per Auth, Data API o Storage basta supabase-js. Per SQL, transaction o ORM frequenti usa driver e pool anziché una connessione nuova per invocation.

Tabella delle connessioni

MetodoCasoNota
Supabase JS ClientAuth, Storage e query leggereConserva JWT e RLS tramite API
Hyperdrive + driverSQL, ORM e Postgres direttoRaggruppa connessioni e può mettere in cache read
service role / secret keyAmministrazione affidabilePuò bypassare RLS; solo client server isolato

Hyperdrive riduce latenza e pressione collegando Supabase Postgres. Non autorizza: role, table e RLS dipendono da credenziali e policy.

Rischio della service role key

Queste chiavi sono privilegiate e possono bypassare RLS. Non esporle a browser, mobile, repository o log; solo secret backend.

Usa un client server separato perché una sessione non sostituisca Authorization. Webhook, batch e admin richiedono privilegi minimi e audit.

Confine Edge Functions/Workers

  • Forte dipendenza da Supabase → Edge Functions.
  • Ingresso, proxy, rate limit e routing indipendenti → Workers.

Decidi in base al centro di dati e permessi, funzioni edge e posizione di log/deploy. La chiave privilegiata è sempre backend.

6. Proprietà dei dati: business, file e cache

D1, Postgres, KV e R2 memorizzano dati ma risolvono problemi diversi.

Tabella della proprietà

TipoInizioCriteri
Fatti aziendaliSupabase Postgres / D1 / altro relazionaleRelazioni, transaction, constraint, query, migration e permessi
FileSupabase Storage / R2 / S3Accesso, egress, CDN, ciclo e strumenti
Cache/configurazioneKV / CacheLettura rapida, ricostruzione e consistenza accettabile

Utenti, ordini, subscription, progetti e diritti influenzano pagamento o accesso. Usa un database con constraint, migration e backup. Postgres offre query, foreign key, trigger, integrità e MVCC; D1 richiede una valutazione propria.

Non dividere i file a 1 GB. Supabase Storage si abbina ad Auth/RLS; R2 al traffico/CDN Cloudflare. Decidi per policy, egress, upload, trasformazione e SDK.

La cache non è il database aziendale. Se ordini o diritti esistono solo lì, scadenza, ritardo o cancellazione cambiano lo stato reale.

Il confronto completo resta all’articolo storage.

7. Passi successivi della serie

Seguono deploy, database e storage, pagamenti, autenticazione e autorizzazione.

Articoli correlati

Vedi Cloudflare Pages, Cloudflare Free Plan Limits 2026, proxy API Workers, iniziare con Supabase e Supabase Edge Functions.

Creare prima la propria tabella

Elenca cinque azioni e marca «risposta / identità / fatto / file / task / secret»; assegna Workers, Supabase, Node.js o rimanda. La piattaforma è un mezzo: responsabilità e fallimenti determinano l’affidabilità.

Distribuire le responsabilità del primo backend da solista

Parti dalle azioni e dai tipi di dati per assegnare API, autenticazione, dati, file e lavori lunghi a servizi con poca manutenzione.

⏱️ Estimated time: 45 min

  1. 1

    Step 1: Elencare le azioni

    Annota moduli, webhook di pagamento, cronologia, report pianificati, upload ed eventi d'uso da pubblicare questa settimana.
  2. 2

    Step 2: Classificare le responsabilità

    Segna risposta immediata, identità e accesso, fatto aziendale, file, lavoro asincrono o segreto.
  3. 3

    Step 3: Scegliere il servizio iniziale

    Usa Workers per edge e API leggere, Supabase per Auth, Postgres e Storage, Node.js per lavori pesanti.
  4. 4

    Step 4: Controllare i limiti

    Verifica CPU, memoria, durata, database, egress, file e pausa per non dipendere dal bordo della quota.
  5. 5

    Step 5: Coprire sicurezza ed errori

    Tieni le chiavi fuori dal browser, valida firme, usa idempotenza, retry e log.

FAQ

Workers Free basta per iniziare?
Di solito basta per API leggere, webhook e proxy: 100.000 richieste al giorno e 10 ms CPU per invocation, oltre a 128 MB e limiti specifici per subrequest, KV e Queues. È un budget iniziale, non uno SLA.
Workers può essere l'intero backend?
Può gestire molta logica, ma browser automation, file grandi in memoria, CPU pesante, dipendenze native e consumer persistenti sono più adatti a Queues, Workflows, Containers o Node.js.
Supabase e Workers sono concorrenti?
Di solito si completano: Workers gestisce edge e logica leggera; Supabase Auth, Postgres e Storage. Si collegano via API o Hyperdrive con driver Postgres.
Webhook in Workers o Edge Functions?
Workers è diretto per firma, routing e inoltro; Edge Functions per logica legata a Supabase. Rispondi rapidamente e accoda il lavoro pesante.
Node.js è superato?
No. Runtime completa, npm, browser, moduli nativi, file, connessioni lunghe e consumer persistenti hanno ancora usi chiari. Rimanda l'operatività finché non emerge un limite reale.

8 min di lettura · Pubblicato il: 9 ott 2026

Commenti

Accedi con GitHub per lasciare un commento

Easton BlogEaston Blog