Custom SaaS arhitektura: Jedan sustav, stotine firmi
Multi-tenant PostgreSQL s RLS, audit log koji se ne da izbrisati i arhitektura koja ne puca kad dodate deseti tenant.
- Multi-tenant
- PostgreSQL
- RLS
- Audit Log
- B2B SaaS
- TypeScript
- Node.js
Izazov
B2B klijent trebao je jedan sustav koji služi stotine firmi — svaka vidi samo svoje podatke, svaka ima svoje korisnike i postavke. "Samo stavi tenant_id u svaki upit" zvuči lako dok jedan developer ne napravi grešku i jedan tenant ne vidi podatke drugoga. Zahtjevi: fleksibilna autentikacija, nemjenjivi audit log i dodavanje novih organizacija bez prekida rada.
Rješenje
Multi-tenant arhitektura s Row Level Security (RLS) u PostgreSQLu. Aplikacija postavlja kontekst tenanta na razini sesije; baza filtrira redove automatski. Nema "sjeti se dodati WHERE u svakom query-ju" — ako zaboravite, RLS i dalje blokira. Uz to: šifriranje osjetljivih polja, redoviti backupi i audit log za sve kritične operacije koji se ne da izbrisati bez traga.
Što smo napravili
- Multi-tenant s RLS — jedan schema, stroge politike; novi tenant = novi red u tablici organizacija i automatski provisioning.
- RLS Security — čak i raw SQL ili bug u kodu ne iznese podatke krivog tenanta.
- Audit Log — tko, što, kada; append-only, za compliance i debugging kad nešto "netko je promijenio" postane pitanje.