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

"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 iniziale | Motivo | Rischio |
|---|---|---|---|
| Ingresso | Cloudflare Workers | Edge globale e bassa latenza | Separare ciò che supera CPU, memoria o dipendenze |
| API leggere | Workers / Edge Functions | Inoltro, validazione e I/O breve | Workers è edge; Edge Functions è nel progetto Supabase |
| Webhook | Workers o Edge Functions | Callback, firma e scrittura idempotente | Accodare il lavoro pesante |
| Autenticazione | Supabase Auth | Auth, RLS, permessi e social login | Non esporre service role o secret al browser |
| Dati aziendali | Supabase Postgres | Relazioni, transazioni, query e trigger | Anche D1 richiede migration, constraint e permessi |
| Oggetti | Supabase Storage / R2 | Upload, immagini, export e backup | Scegliere per accesso, egress, CDN e strumenti |
| Lavori lunghi | Worker Node.js / piattaforma task | Browser, file, moduli nativi, consumer | Non legare tutto a una richiesta sincrona |
| Servizio Node | Node.js | npm, connessioni lunghe e runtime completa | Gestire 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
| Metodo | Caso | Nota |
|---|---|---|
| Supabase JS Client | Auth, Storage e query leggere | Conserva JWT e RLS tramite API |
| Hyperdrive + driver | SQL, ORM e Postgres diretto | Raggruppa connessioni e può mettere in cache read |
| service role / secret key | Amministrazione affidabile | Può 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à
| Tipo | Inizio | Criteri |
|---|---|---|
| Fatti aziendali | Supabase Postgres / D1 / altro relazionale | Relazioni, transaction, constraint, query, migration e permessi |
| File | Supabase Storage / R2 / S3 | Accesso, egress, CDN, ciclo e strumenti |
| Cache/configurazione | KV / Cache | Lettura 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
Step 1: Elencare le azioni
Annota moduli, webhook di pagamento, cronologia, report pianificati, upload ed eventi d'uso da pubblicare questa settimana. - 2
Step 2: Classificare le responsabilità
Segna risposta immediata, identità e accesso, fatto aziendale, file, lavoro asincrono o segreto. - 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
Step 4: Controllare i limiti
Verifica CPU, memoria, durata, database, egress, file e pausa per non dipendere dal bordo della quota. - 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?
Workers può essere l'intero backend?
Supabase e Workers sono concorrenti?
Webhook in Workers o Edge Functions?
Node.js è superato?
8 min di lettura · Pubblicato il: 9 ott 2026
Guida allo stack tecnico per solo founder
Se arrivi dalla ricerca, il modo più veloce per orientarti è passare all’articolo precedente o successivo della stessa serie.
Precedente
Stack frontend per solo founder: scegliere Astro, Next.js, React, Tailwind e shadcn/ui
Confronta Astro, Next.js, React, Tailwind e shadcn/ui per siti di contenuti, tool e dashboard SaaS, con confini di manutenzione e segnali di migrazione.
Parte 5 di 8
Successivo
Deploy per solo founder: Cloudflare, Vercel o Railway
Confronta Cloudflare Pages e Workers, Vercel e Railway per workload, limiti attuali, rischi di costo e manutenzione di uno stack gestito da una persona.
Parte 7 di 8



Commenti
Accedi con GitHub per lasciare un commento