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.

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.