Zakupci, host i filtar podataka
ToRun se oslanja na model za više zakupaca iz ABP Frameworka. Redak označen kao IsMultiTenant ima stupac TenantId koji okvir automatski filtrira; upiti u kontekstu jednog zakupca nikad ne vide retke drugog. Kontekst hosta (TenantId == null) vidi zaseban dio: ondje se nalaze kanonski katalozi kao što su SubscriptionPlan, AiProvider i LegalDocument.
Zašto hosta tretiramo kao punopravnog sudionika
Većina SaaS proizvoda dodaje hosta kao „administratorske alate”. Mi ga modeliramo kao srodnog zakupca: host ima vlastite nadzorne ploče, vlastita AI pravila i vlastite odnose naplate. Tako možemo vlastiti produkcijski promet pokretati na istim gradivnim elementima koje koristi svaki klijent.
Značajke vezane uz plan za svakog zakupca
Planovi pretplate nose retke FeatureLimit, Entitlement, Capability i Mode. Kad zakupac aktivira plan, skup značajki kojima može pristupiti presjek je njegova plana i globalnog kataloga. Dodavanje novog načina rada ne zahtijeva diranje svakog zakupca: dobiva ga automatski ako ga uključuje plan koji ima.
Ubacivanje BYOK-a pri svakom pozivu
Čak i uz zajedničku infrastrukturu, BYOK vjerodajnice ostaju ograničene na zakupca kojem pripadaju. Svaki AI zahtjev dohvaća vjerodajnice u kontekstu zakupca istim filtrom podataka; curenje ključeva među zakupcima na razini pohrane nije moguće.
Što namjerno ne radimo
Zakupce ne izoliramo na razini baze podataka ni procesa. Trošak skaliranja zasebne baze za svakog zakupca uništava jediničnu ekonomiku SaaS proizvoda za više zakupaca. Filtar podataka uz predmemoriju odvojenu po zakupcu dovoljan je kad je shema za to projektirana od prvog dana.