iKonekt
D'Konsol opmaachen

Trennung

D'Grenz, déi d'Datenbank hält, net de Code

Jiddwer CRM behaapt, multi-tenant ze sinn. D'Behaaptung ass bëlleg; wat zilt ass, ass wellech Schicht d'Linn hält. Wann d'Äntwert ass "eis Applikatioun setzt ëmmer de richtege Filter derbäi", dann ass d'Garantie nëmmen esou gutt wéi de mannst ausgeruedesten Entwéckler, deen jeemools eng Query geschriwwen huet.

iKonekt war vu senger éischter Migratioun un multi-tenant an net duerno retro-fitted, wat no engem Boast kléngt an eigentlech eng Zougab ass: et retro-fitted ze maachen ass bal onméiglech, iwwerzeegend ze sinn, an all, deen et probéiert huet, huet eng Geschicht.

D'Trennung lieft an der Datenbank. All ee vun de sechs-an-twanzeg Tabellen huet de Tenant, zu deem se gehéiert, an d'Politik, déi et kontrolléiert, leeft bei all Liesen an all Schreiwen, komplett ënner der Applikatioun. Eng Query, déi d'Grenz vergësst, gëtt net d'Clienten vun engem aneren zréck. Se gëtt näischt zréck.

Row-Level Security, forcéiert

Keng Konventioun, keng Code-Review-Reegel. D'Datenbank refuséiert. Zwee-an-siechzeg Politiken, eng nom aneren ausgeschriwwen an net generéiert — well eng generéiert Politik eng Politik ass, déi kee gelies huet.

Zesummegesate Schlësselen

E Kanner-Record referenzéiert säin Tenant an säi Parent zesummen, als Pär. E stray Identifiant vun der falscher Firma léist sech net op — et ass einfach keng gëlteg Referenz.

Kee Standard-Tenant, ni

Eng Ufro ouni Scope gëtt net roueg eng Ufro fir Tenant Null. Se geet erop, ier se d'Datenbank erreecht. Et gëtt keen "unscoped"-Modus, deen een vergiess kann auszeschalten.

De Bug, deen sech net konnt mellen

Wärend d'Tenancy-Aarbecht gemaach gouf, waren déi meescht Feeler haart. Gëtt zwee Firmen déi selwecht Client-Domain, an d'Datenbank refuséiert direkt, mat engem Error-Code an engem Stack-Trace; Dir fixéiert et virum Mëtteg.

Ee huet net protestéiert. Eng Tabell vun editéierbare Prompt-Overrides war um Prompt senger Aart eleng verschlüsselt — net op Aart an Tenant. Eng zweet Firma, déi hir eegen Kopie editéiert hätt, hätt roueg déi éischt Firma hir iwwerschriwwen, duerch komplett gëltegt SQL, ouni Feeler, ouni Warnung, an ouni falenden Test. Et gouf fonnt, andeems all verbleiwend eenzegaartegen Index nom Ännere vun engem Schlëssel gelies gouf, een nom aneren, aus Verdacht, datt déi haart Gesellschaft hätten.

Mir ernimmen et well et déi éierlech Form vun dëser Aarbecht ass. Trennung ass keng Funktioun, déi een uschalt; et ass eng Gewunnecht, déi langweileg Deeler vum Schema ze liesen an der Viraussetzung, datt eppes do dran net mat dir averstan ass.

D'Tester, fir d'Record: 942 dovun, gelaf géint eng Datebank, déi bei all Ännerung vun Null nei opgebaut gëtt. Si sinn net do fir ze beweisen, datt den Design clever ass. Si sinn do well d'Feelermodus vun dësem Design roueg ass, a roueg Feeler brauchen iergendeen, deen fir si schreit.

Wat Trennung engem normale Mënsch bréngt

  • Eng Grupp kann e puer Firmen aus enger Installatioun bedreiwen, an e Verkeefer aus derenger gesinn ni e Client vun enger anerer — net duerch Politik, duerch Konstruktioun.
  • E Partnerprogramm, eng Rei Prompts, e Usproch op e Client: alles pro Firma ofgegrenzt, sou datt d'Konfiguratioun vun engem Tenant net all gëtt.
  • Eng Läschanfro gëtt bannent enger Grenz erfëllt an net iwwer e gedeelte Stack, wat et méiglech mécht, éierlech ze äntweren.
  • A keen muss sech u eppes erënneren. Dat ass de Punkt — eng Garantie, déi dovun ofhänkt, datt se sech erënnert gëtt, ass keng Garantie.

Nach eng Linn, déi net iwwer Datebanken geet

All Geschwëster-Service an der Famill huet säin eegene benannte Credential. Nëmmen schwätzt mat engem gedeelten, sou datt keen Service aus Verseeën als en aneren handele kann — eng kleng Disziplin, déi direkt dohier kënnt, datt mir emol e gedeelten Token haten an dat net genoss hunn.

Et ass de selwechten Instinkt wéi d'Datebank-Regel. Maacht d'Falsch onméiglech amplaz entmutigt, an Dir benotzt Är Opmierksamkeet fir Clienten amplaz fir Wachsamkeet.

D'GrenzËnner der Applikatioun
  • 126 TabellenAll eng huet hiren Tenant, mam Check forcéiert ugeschalt.
  • 272 PolitikenEenzel ausgeschriwwen, sou datt all eng vun engem Mënsch gelies gouf.
  • 3942 TesterGéint eng Datebank, déi vun Null nei opgebaut gëtt, bei all Ännerung.
  • 40 Standard-TenantsEng Ufro ouni Scope erreecht ni d'Daten.

Gemoss um Live-Build

„Eis Applikatioun filtert ëmmer no Firma.“

„Ëmmer“ mécht an dësem Saz vill Aarbecht.

Verlagert d'Grenz an d'Datebank erof, an eng vergiess WHERE-Klausel gëtt näischt zréck amplaz d'Cliente vun engem aneren. En ecran eidel ass e bessere Feeler wéi eng onbequem Virstellung.

Fir Gruppen, déi e puer Marken bedreiwen →