Multi-tenant SaaS per healthcare: scelte architetturali
Il dilemma multi-tenant
Quando costruisci un SaaS healthcare, l'isolation tra tenant non è opzionale — è un requisito GDPR e HIPAA-equivalent. Le tre opzioni classiche:
- **Database-per-tenant**: massima isolation, ma operativamente costoso (backup, migrazioni, monitoring × N)
- **Schema-per-tenant**: middle ground, ma migration complesse e tooling limitato
- **Schema condiviso + RLS**: una sola istanza, isolation garantita da Postgres Row-Level Security
La nostra scelta: shared schema + Postgres RLS
KAIROS usa schema condiviso con Postgres RLS attivata per ogni tabella sensibile. Ogni transazione setta `app.current_studio_id` via `set_config`, e ogni policy filtra automaticamente.
CREATE POLICY tenant_isolation ON appointments
FOR ALL TO kairos_app
USING (studio_id = current_setting('app.current_studio_id')::uuid);
Edge runtime su Cloudflare Workers
Il backend gira su Cloudflare Workers (V8 isolate). Latenza globale sotto 100ms, scaling automatico, zero infrastruttura da gestire. La connessione Postgres usa Neon serverless con WebSocket nativo.
Conclusione
Le scelte architetturali non sono neutre — definiscono ciò che potrai fare in 2 anni. Costruisci per la scala fin dall'inizio, anche se oggi hai 10 studi.