Back to Blog
databasepostgresqlcloudnews

PostgreSQL Serverless 2025: La Verità su Supabase, Neon e PlanetScale

Analisi approfondita del panorama dei database nel 2025. Confronto tra le architetture, le prestazioni e il passaggio all'archiviazione disaggregata di Supabase, Neon e PlanetScale.

DataFormatHub Team
December 23, 202514 min read
Share:
PostgreSQL Serverless 2025: La Verità su Supabase, Neon e PlanetScale

Il panorama dei database per le applicazioni moderne è in uno stato di costante evoluzione, con paradigmi serverless e distribuiti che spingono i confini di ciò che è possibile con i dati relazionali. Come professionisti del settore, abbiamo assistito a significativi progressi nell'ultimo anno, in particolare all'interno dell'ecosistema PostgreSQL, con piattaforme come Supabase, Neon e persino PlanetScale, tradizionalmente incentrata su MySQL, che si contendono la supremazia nell'offrire soluzioni robuste, scalabili e adatte agli sviluppatori. Non si tratta di clamore pubblicitario; si tratta di cambiamenti architettonici tangibili, guadagni di prestazioni ed efficienze operative che stanno diventando fondamentali per gli ambienti di produzione.

Avendo recentemente testato queste piattaforme, ho osservato una chiara tendenza: la disaggregazione del calcolo e dell'archiviazione, la gestione sofisticata delle connessioni e l'incessante ricerca di flussi di lavoro per sviluppatori "simili a Git" non sono più funzionalità aspirazionali, ma requisiti fondamentali. I numeri raccontano una storia interessante, rivelando sia progressi impressionanti che sfide persistenti.

La Sabbia che Scorre delle Architetture di Database: Dal Monolite ai Microservizi

La tradizionale implementazione di PostgreSQL, pur essendo robusta, spesso fatica a soddisfare le esigenze delle moderne funzioni serverless e delle applicazioni distribuite a livello globale. Il forte accoppiamento intrinseco tra calcolo e archiviazione in una standard istanza PostgreSQL crea colli di bottiglia per la scalabilità indipendente e introduce complessità per l'alta disponibilità e il disaster recovery. Nell'ultimo anno, queste piattaforme hanno raddoppiato gli sforzi su architetture che affrontano fondamentalmente queste limitazioni.

Neon, in particolare, ha costruito l'intera sua premessa su questa disaggregazione. La loro architettura separa il processo di calcolo di PostgreSQL, che viene eseguito come un microservizio stateless, da un livello di archiviazione durevole e multi-tenant. Questo design significa che un'istanza PostgreSQL può essere avviata o arrestata su richiesta, estraendo solo i dati necessari dal livello di archiviazione per rispondere alle query. Questa è una significativa deviazione dalle configurazioni tradizionali in cui una singola istanza controlla l'archiviazione locale, semplificando i backup, la replica logica e il provisioning di repliche di lettura. Lo stesso livello di archiviazione è progettato come un archivio chiave-valore, integrato con l'archiviazione di oggetti cloud come Amazon S3 o Google Cloud Storage per la durabilità e la scalabilità.

Supabase, pur offrendo un'istanza PostgreSQL gestita, ha fatto evolvere i suoi servizi circostanti per abbracciare modelli più orientati ai microservizi. La loro migrazione a un'architettura di piattaforma v2, completata per i piani a pagamento e gradualmente implementata per i piani gratuiti da marzo 2024, scompone servizi come Storage, Realtime e il connection pooler (PgBouncer). In precedenza, questi erano servizi a istanza singola per progetto. L'architettura v2 li sposta a un modello multi-tenant, in cui una singola istanza serve molti progetti. Questo mira a liberare risorse per i database PostgreSQL, abilitare funzionalità più intensive di risorse e spianare la strada a funzionalità come la scalabilità a zero tempi di inattività. Questa è un'ottimizzazione pratica, che consente a Supabase di offrire un migliore utilizzo delle risorse e potenzialmente prestazioni più stabili tra la sua base di utenti.

L'Evoluzione Architettonica di Supabase: L'Edge e le Capacità Real-time

Supabase continua a perfezionare il suo ecosistema attorno a PostgreSQL, con notevoli progressi nelle sue Edge Functions e nelle capacità Realtime. L'impegno della piattaforma nel fornire un backend-as-a-service (BaaS) completo basato su standard aperti rimane forte.

Edge Functions: Avvicinare il Calcolo agli Utenti

Le Edge Functions di Supabase, basate su Deno, sono funzioni TypeScript distribuite a livello globale progettate per essere eseguite vicino all'utente, riducendo al minimo la latenza per le richieste HTTP. Per un'analisi più approfondita di come questo si confronta con altri runtime edge, consulta Cloudflare vs. Deno: La Verità sul Edge Computing nel 2025. I recenti aggiornamenti nel 2025 hanno reso più snella la distribuzione e la gestione di queste funzioni, con opzioni di distribuzione diretta dalla dashboard e dalla CLI di Supabase.

Un aspetto fondamentale per gli sviluppatori è come queste Edge Functions interagiscono con il database PostgreSQL. Mentre Supabase fornisce un'API RESTful generata automaticamente (PostgREST) e un'API GraphQL, le Edge Functions possono anche connettersi direttamente al database utilizzando qualsiasi client PostgreSQL popolare. Ciò consente di eseguire SQL raw all'interno della funzione, una funzionalità potente per la logica personalizzata che richiede bassa latenza e accesso diretto ai dati.

Considera uno scenario in cui è necessario eseguire una convalida personalizzata o una trasformazione dei dati prima di scrivere nel database, oppure attivare una query complessa in base a un webhook in entrata. Un'Edge Function può intercettare la richiesta, eseguire la logica e quindi interagire con PostgreSQL. Ad esempio, utilizzando il driver Deno Postgres:

// supabase/functions/my-edge-function/index.ts
import { Pool } from 'https://deno.land/x/postgres@v0.17.0/mod.ts'; //

Deno.serve(async (req) => {
  try {
    const { some_data } = await req.json();

    // Stabilisci un connection pool al database
    // In produzione, l'URL del database è configurato automaticamente con SSL.
    const pool = new Pool(Deno.env.get('DATABASE_URL'), 1);
    const connection = await pool.connect();

    try {
      // Esempio: Inserisci dati dopo una certa convalida
      const result = await connection.queryObject`
        INSERT INTO public.my_table (data_field)
        VALUES (${some_data})
        RETURNING id;
      `;
      return new Response(JSON.stringify({ id: result.rows[0].id }), {
        headers: { 'Content-Type': 'application/json' },
        status: 200,
      });
    } finally {
      connection.release();
    }
  } catch (err) {
    return new Response(String(err?.message ?? err), { status: 500 });
  }
});

Questa connessione diretta contrasta con le interazioni client-side, in cui l'API PostgREST è spesso preferita per la sua applicazione RLS integrata e la serializzazione JSON. Per le Edge Functions, la natura server-side rende fattibili e spesso più performanti le connessioni TCP dirette per operazioni complesse e stateful.

Real-time: Replica Logica di PostgreSQL su Scala

La funzionalità Realtime di Supabase è un elemento distintivo, che abilita aggiornamenti live per applicazioni di chat, strumenti collaborativi e dashboard. La loro architettura sfrutta la funzionalità di Replica Logica di PostgreSQL per trasmettere le modifiche al database. A differenza della replica fisica, che invia file binari, la replica logica trasmette le modifiche ai dati (inserimenti, aggiornamenti, eliminazioni) come messaggi logici, consentendo sottoscrizioni granulari a livello di tabella.

Il cuore di questo sistema prevede che Supabase crei slot di replica su PostgreSQL per trasmettere le voci del Write-Ahead Log (WAL). Queste voci WAL vengono quindi analizzate ed emesse come payload JSON ai client tramite connessioni WebSocket. Questo design consente la scalabilità orizzontale disaccoppiando il database dallo strato di consegna in tempo reale, supportando più abbonati con un sovraccarico minimo. Supabase utilizza un server Elixir/Phoenix per la sua infrastruttura Realtime, una scelta deliberata grazie ai punti di forza di Elixir nella gestione di connessioni concorrenti e messaggi a bassa latenza. Questa infrastruttura personalizzata è stata creata per superare i limiti del meccanismo nativo NOTIFY/LISTEN di PostgreSQL, in particolare il suo limite di payload di 8000 byte, che sarebbe insufficiente per capacità real-time di livello enterprise.

Il servizio Realtime fornisce anche Broadcast per messaggi effimeri e Presence per il tracciamento dello stato condiviso, estendendosi oltre le semplici notifiche di modifica del database. Questo approccio a più livelli offre agli sviluppatori potenti strumenti per la creazione di applicazioni dinamiche senza una profonda conoscenza degli interni della replica PostgreSQL.

Neon's Serverless PostgreSQL: Disaggregazione in Pratica

Neon ha costantemente promosso la disaggregazione del calcolo e dell'archiviazione come il cambiamento fondamentale per PostgreSQL serverless. La loro architettura è una risposta diretta ai limiti del PostgreSQL tradizionale negli ambienti serverless e cloud-native.

Separazione Calcolo e Archiviazione: L'Innovazione Principale

L'architettura di Neon divide il monolite PostgreSQL in un livello di calcolo stateless e un livello di archiviazione multi-tenant durevole. I nodi di calcolo, che sono istanze PostgreSQL standard, diventano effimeri. Quando un database è inattivo per un periodo configurabile (ad esempio, cinque minuti), il nodo di calcolo viene arrestato, scalando a zero. All'arrivo di una nuova connessione, un nodo di calcolo viene rapidamente avviato in un container Kubernetes, connettendosi al sistema di archiviazione esistente senza dover ripristinare i dati. Questa capacità di "scalare a zero" è un significativo meccanismo di risparmio sui costi per i carichi di lavoro intermittenti.

Il livello di archiviazione è un sistema basato su livelli append-only costruito per gli archivi di oggetti, che fornisce durabilità e consente funzionalità come il time-travel e il branching. Le scritture nel database vengono trasmesse in flussi come record WAL ai WAL safekeepers, che garantiscono la durabilità attraverso un meccanismo di consenso basato su Paxos prima di essere elaborati dal pageserver e caricati nell'archiviazione di oggetti. Questo robusto sistema di archiviazione consente la scalabilità indipendente delle risorse di calcolo e archiviazione.

Per mitigare la latenza di "avvio a freddo" intrinseca alla scalabilità del calcolo a zero, Neon impiega strategie come il connection pooling tramite PgBouncer. PgBouncer consente a Neon di supportare fino a 10.000 connessioni concorrenti mantenendo un pool di connessioni a PostgreSQL, riducendo il sovraccarico di stabilire nuove connessioni di database per ogni richiesta client.

Gli sviluppatori possono scegliere tra stringhe di connessione dirette e poolate. Per le funzioni serverless e l'alta concorrenza, la stringa di connessione poolata, identificabile dall'opzione -pooler nel nome host (ad esempio, ep-neon-db.pooler.neon.tech), è altamente raccomandata.

// Esempio di connessione a Neon con pooling
import { Pool } from '@neondatabase/serverless';

const connectionString = process.env.DATABASE_URL_POOLED; // ad esempio, postgres://user:pass@ep-neon-db.pooler.neon.tech/dbname

const pool = new Pool({ connectionString });

export async function handler(event) {
  const client = await pool.connect();
  try {
    const res = await client.query('SELECT NOW()');
    return {
      statusCode: 200,
      body: JSON.stringify({ time: res.rows[0].now }),
    };
  } finally {
    client.release();
  }
}

Branching Simile a Git e Time-Travel

Una delle caratteristiche distintive di Neon, e un significativo potenziatore della produttività, è la sua funzionalità di branching simile a Git. Grazie alla sua architettura di archiviazione copy-on-write, la creazione di un nuovo branch è un'operazione istantanea, indipendentemente dalle dimensioni del database. Questo nuovo branch è una copia completa e isolata dei dati e dello schema del branch principale al momento della creazione, ma memorizza solo il delta delle modifiche, rendendolo estremamente conveniente.

Questo abilita potenti flussi di lavoro per gli sviluppatori:

  • Sviluppo di Funzionalità: Gli sviluppatori possono creare un branch per ogni nuova funzionalità, sperimentare senza influire sulla produzione e scartare facilmente il branch.
  • Test: Avvia un branch di database dedicato per ogni esecuzione della pipeline CI/CD o per ogni distribuzione di anteprima. L'integrazione di Neon con Vercel, ad esempio, può creare automaticamente un branch per ogni distribuzione di anteprima.
  • Ripristino Point-in-Time (PITR): Neon conserva una cronologia delle modifiche (record WAL) per una finestra di ripristino configurabile (ad esempio, 6 ore nella versione gratuita, fino a 30 giorni nei piani Scale). Ciò consente agli utenti di creare un branch da qualsiasi punto nel passato all'interno di questa finestra, "viaggiando nel tempo" in modo efficace per riprendersi da errori o analizzare stati storici.

La CLI neonctl è centrale per la gestione di questi branch:

# Crea un nuovo branch da 'main'
neonctl branch create my-feature-branch --parent-branch-name main

# Crea un branch da un punto specifico nel tempo (ad esempio, 1 ora fa)
neonctl branch create bugfix-branch --parent-branch-name production --point-in-time "1 hour ago"

# Elenca i branch
neonctl branch list

Ogni branch ottiene un endpoint di calcolo autoscaling indipendente, prevenendo problemi di "vicino rumoroso" e garantendo prestazioni costanti. Quando inattivi, anche questi branch si riducono a zero, ottimizzando i costi.

PlanetScale's Vitess-Powered MySQL: Una Lente Comparativa per PostgreSQL

Mentre PlanetScale è stata storicamente sinonimo di Vitess-powered MySQL, il suo recente ingresso nello spazio PostgreSQL gestito con PlanetScale for Postgres e il progetto Neki in corso per PostgreSQL sharded è un'opportunità eccellente. Questo fornisce un'opportunità per confrontare e contrastare le filosofie architettoniche, in particolare per quanto riguarda la scalabilità orizzontale.

Il Modello di Sharding di Vitess e la Sua Influenza

Vitess, nato in YouTube, è un sistema di clustering di database che abilita la scalabilità orizzontale di MySQL attraverso lo sharding esplicito. Lo fa instradando le query attraverso i proxy VTGate, che comprendono lo schema di sharding e dirigono le query agli shard appropriati. Vitess astrae la complessità dello sharding dallo strato applicativo, consentendo alle applicazioni di interagire con ciò che appare come un singolo database MySQL monolitico.

Le recenti versioni di Vitess, come Vitess 21 (ottobre 2024) e Vitess 23 (novembre 2025), si sono concentrate sul miglioramento della compatibilità delle query, sul miglioramento della gestione del cluster e sull'espansione delle capacità VReplication. Vitess 21 ha introdotto il supporto sperimentale per le transazioni distribuite atomiche e le CTE ricorsive, affrontando limitazioni di lunga data in SQL distribuito. Vitess 23 ha ulteriormente perfezionato le metriche per il routing delle transazioni e il comportamento degli shard e ha aggiornato la sua versione predefinita di MySQL a 8.4.6, segnalando un impegno per la compatibilità futura.

PlanetScale for Postgres e Project Neki

PlanetScale ha lanciato ufficialmente il suo servizio PostgreSQL gestito, costruito per prestazioni e affidabilità su AWS o Google Cloud, alla fine del 2025. Questa offerta sfrutta i suoi cluster "Metal", costruiti su unità NVMe locali per fornire "I/O illimitato" e latenze significativamente inferiori rispetto alle istanze basate su EBS tradizionali. Il cluster M-10, a partire da 50$/mese, rende le prestazioni NVMe più accessibili.

Lo sviluppo fondamentale qui è il Project Neki, l'iniziativa di PlanetScale per portare lo sharding in stile Vitess a PostgreSQL. A differenza di Vitess, che è stato open source fin dall'inizio, Neki viene progettato da zero, traendo lezioni da Vitess ma non come fork. Questo indica un investimento serio nella risoluzione delle sfide di scalabilità orizzontale di PostgreSQL a un livello fondamentale, piuttosto che semplicemente adattare una soluzione MySQL esistente.

Nel frattempo, Supabase ha anche compiuto una mossa significativa nello spazio di sharding di PostgreSQL portando a bordo Sugu Sougoumarane, co-creatore di Vitess, per guidare il progetto Multigres. Multigres mira a portare lo sharding a PostgreSQL, partendo da zero ma con un focus sulla compatibilità e l'usabilità, imparando dal percorso di Vitess. Questo segnala una corsa affascinante per fornire soluzioni di sharding PostgreSQL robuste e native.

Benchmarking della Promessa "Serverless": Latenza, Throughput e Costo

La promessa dei database serverless è l'elasticità, il basso sovraccarico operativo e l'economicità. Tuttavia, questi vantaggi spesso sono accompagnati da caratteristiche prestazionali che differiscono dalle istanze provisioned tradizionali.

Latenza di Avvio a Freddo e Gestione delle Connessioni

Uno dei compromessi più discussi negli ambienti serverless è la latenza di avvio a freddo. Per Neon, quando un nodo di calcolo scala a zero, la sua riattivazione può richiedere da 500 ms a pochi secondi, a seconda di fattori come le dimensioni del database e il carico di lavoro. Questa latenza può essere problematica per le richieste sincrone rivolte all'utente.

Neon mitiga questo problema con il suo connection pooler (PgBouncer). Utilizzando una stringa di connessione poolata, le applicazioni si connettono a PgBouncer, che mantiene connessioni aperte all'istanza PostgreSQL sottostante. Questo riduce significativamente il sovraccarico di stabilire una nuova connessione TCP e di autenticarsi con PostgreSQL per ogni richiesta client, mascherando efficacemente parte della latenza di avvio a freddo dalla prospettiva dell'applicazione.

Avvio a Freddo Comparativo (Illustrativo, non un benchmark diretto):

  • Neon (calcolo scalato a zero): ~500ms - 2s (prima connessione dopo l'inattività)
  • Supabase Edge Function (avvio a freddo): ~100ms - 500ms (prima invocazione dopo l'inattività)
  • PlanetScale (Metal provisioned): Latenza di avvio a freddo quasi nulla grazie alle istanze sempre attive e basate su NVMe.

Throughput e Prestazioni di I/O

Per i carichi di lavoro sostenuti, l'infrastruttura sottostante diventa fondamentale. I cluster "Metal" di PlanetScale, con unità NVMe locali, mirano esplicitamente a un throughput elevato e una bassa latenza. Affermano "IOPS illimitati" in cui i clienti in genere raggiungono i limiti della CPU prima dei colli di bottiglia di I/O, con latenze p95 che scendono da ~45 ms a 5-10 ms dopo la migrazione a Metal.

Il modello di archiviazione disaggregata di Neon, pur consentendo l'elasticità, introduce salti di rete tra calcolo e archiviazione. Per contrastare il potenziale degrado delle prestazioni, Neon impiega una cache di file locale (LFC) tra i buffer condivisi di PostgreSQL e l'archiviazione remota. Questa LFC sfrutta la cache di pagine Linux, mirando a fornire latenze simili alla RAM per i dati a cui si accede frequentemente, riversandosi su disco quando la LFC supera la capacità della RAM.

Le prestazioni di Supabase sono legate al suo cloud provider sottostante e all'allocazione delle risorse delle sue istanze PostgreSQL gestite. L'architettura v2, con il suo approccio multi-tenant per servizi come Realtime e Storage, mira a fornire risorse più dedicate al database stesso, migliorando potenzialmente le prestazioni di base e la coerenza.

Modelli di Costo

  • Neon: Prezzi basati sul consumo, scalando il calcolo a zero quando inattivo, lo rende molto conveniente per lo sviluppo, i test e i carichi di lavoro a raffica.
  • Supabase: Offre un piano gratuito generoso, con piani a pagamento basati su ore di calcolo, archiviazione e messaggi in tempo reale.
  • PlanetScale: Storicamente noto per i suoi prezzi basati sull'utilizzo per Vitess, la sua nuova offerta PostgreSQL include cluster Metal a partire da 50$/mese, fornendo un'opzione dedicata e ad alte prestazioni.

Esperienza Sviluppatore e Integrazione dell'Ecosistema: CLI, API e Framework

L'abilità tecnica di una piattaforma è buona quanto la sua usabilità. Tutte e tre le piattaforme danno la priorità all'esperienza dello sviluppatore attraverso strumenti CLI robusti, API complete e un'integrazione perfetta con gli stack di sviluppo moderni.

  • Supabase CLI: La supabase CLI è uno strumento centrale per lo sviluppo locale, la gestione delle migrazioni e la distribuzione delle Edge Functions. I recenti aggiornamenti nel 2025 includono la possibilità di distribuire le Edge Functions dalla CLI senza Docker.
  • Neon CLI (neonctl): neonctl fornisce un controllo completo sui progetti Neon, inclusa la creazione e la gestione dei branch. È fondamentale per automatizzare i flussi di lavoro CI/CD.
  • PlanetScale CLI: La CLI di PlanetScale è ben considerata per la gestione dei cluster Vitess e ora si estende alle sue offerte PostgreSQL, consentendo agli sviluppatori di interagire con i flussi di lavoro di branching e le modifiche dello schema.

La Strada da Percorrere: Sfide e Modelli Emergenti

Nonostante i rapidi progressi, persistono diverse sfide e stanno emergendo nuovi modelli. Ottenere distribuzioni PostgreSQL multi-regione veramente coerenti e forti rimane complesso. Lo sharding, come perseguito da Neki (PlanetScale) e Multigres (Supabase), è un passo verso la scalabilità orizzontale, ma garantire letture e scritture coerenti e a bassa latenza tra regioni geograficamente distanti è un problema più difficile.

Il "Ciclo Superiore dell'IA" sta anche influenzando profondamente l'innovazione dei database. PlanetScale ha annunciato la disponibilità generale del supporto vettoriale in MySQL nell'aprile 2025, consentendo di archiviare dati vettoriali insieme ai dati relazionali. Supabase ha anche supportato a lungo pgvector per la ricerca di similarità efficiente. Questa tendenza suggerisce che i database diventeranno più "intelligenti", non solo archiviando dati ma anche aiutando attivamente nella loro interpretazione e applicazione all'interno dei flussi di lavoro dell'IA.

Conclusione: Considerazioni Pratiche per gli Ambienti di Produzione

I recenti sviluppi in Supabase, Neon e PlanetScale sottolineano un ecosistema vibrante e in rapida evoluzione per PostgreSQL. Ogni piattaforma offre vantaggi distinti per casi d'uso specifici:

  • Neon eccelle per le applicazioni serverless di nuova creazione e i flussi di lavoro di sviluppo che beneficiano del branching istantaneo e della scalabilità economica a zero.
  • Supabase presenta un BaaS completo e convincente, sfruttando PostgreSQL al suo interno e arricchendolo con potenti capacità in tempo reale e Edge Functions flessibili.
  • PlanetScale ha compiuto un forte ingresso nel mercato PostgreSQL con i suoi cluster "Metal" ad alte prestazioni e l'ambizioso progetto di sharding Neki.

Per uno sviluppatore senior che valuta queste opzioni, la scelta dipende dalla prevedibilità del carico di lavoro, dalla criticità del branching simile a Git e se è necessario un BaaS completo o principalmente un database con funzionalità di scalabilità avanzate. La continua innovazione, in particolare attorno alla disaggregazione architettonica e all'esperienza dello sviluppatore, indica un futuro promettente per i database relazionali altamente scalabili e resilienti nel cloud.


Fonti


🛠️ Strumenti Correlati

Esplora questi strumenti DataFormatHub correlati a questo argomento:


📚 Potrebbe Piaccerti Anche