iKonekt

Skeiding

Die grens wat die databasis hou, nie die kode nie

Elke CRM beweer dat dit multi-huurder is. Die bewering is goedkoop; wat saak maak, is watter laag die lyn hou. As die antwoord is "ons toepassing voeg altyd die regte filter by", dan is die waarborg net so goed soos die minste uitgeruste ontwikkelaar wat ooit 'n navraag geskryf het.

iKonekt was multi-huurder vanaf sy eerste migrasie eerder as daarna terugwerkend aangebring, wat soos 'n spoggering klink en eintlik 'n erkenning is: om dit terugwerkend aan te bring is byna onmoontlik om oortuigend te doen, en almal wat dit probeer het, het 'n storie.

Die skeiding leef in die databasis. Elkeen van die ses-en-twintig tabelle dra die huurder waartoe dit behoort, en die beleid wat dit nagaan, loop by elke lees en elke skryf, heeltemal onder die toepassing. 'n Navraag wat die grens vergeet, gee nie iemand anders se kliënte terug nie. Dit gee niks terug nie.

Ryvlak-sekuriteit, afgedwing

Nie 'n konvensie, nie 'n kodehersieningsreël nie. Die databasis weier. Twee-en-sewentig beleide, een vir een uitgeskryf eerder as gegenereer — want 'n gegenereerde beleid is 'n beleid wat niemand gelees het nie.

Saamgestelde sleutels

'n Kindrekord verwys na sy huurder en sy ouer saam, as 'n paar. 'n Rondloper-identifiseerder van die verkeerde maatskappy los nie op nie — dit is eenvoudig nie 'n geldige verwysing nie.

Geen verstekhuurder, ooit

'n Versoek sonder 'n omvang word nie stilweg 'n versoek vir huurder nul nie. Dit gooi 'n fout voordat dit die databasis bereik. Daar is geen "sonder omvang"-modus om te vergeet om af te skakel nie.

Die fout wat homself nie kon aankondig nie

Terwyl die huurderswerk gedoen is, was die meeste foute luidrugtig. Gee twee maatskappye dieselfde kliëntdomein en die databasis protesteer onmiddellik, met 'n foutkode en 'n stelspoor; jy los dit voor ete op.

Een het nie geprotesteer nie. 'n Tabel van redigeerbare prompt-oorride was gesleutel op net die prompt se soort — nie op soort en huurder nie. 'n Tweede maatskappy wat hul eie kopie redigeer, sou stilweg die eerste maatskappy s'n oorgeskryf het, deur heeltemal geldige SQL, sonder fout, sonder waarskuwing, en sonder 'n mislukkende toets. Dit is gevind deur elke oorblywende unieke indeks te lees nadat 'n sleutel verander is, een vir een, op die vermoede dat die luidrugtiges geselskap gehad het.

Ons noem dit omdat dit die eerlike vorm van hierdie werk is. Skeiding is nie 'n funksie wat jy aanskakel nie; dit is 'n gewoonte om die vervelige dele van die skema te lees op die veronderstelling dat iets daarin met jou verskil.

Die toetse, ter wille van die rekord: 942 van hulle, uitgevoer teen 'n databasis wat by elke verandering van nul af herbou word. Hulle is nie daar om te bewys dat die ontwerp slim is nie. Hulle is daar omdat die faalmodus van hierdie spesifieke ontwerp stil is, en stil faleerings het iemand nodig wat namens hulle skreeu.

Wat skeiding 'n gewone mens besorg

  • 'n Groep kan verskeie maatskappye vanaf een installasie bedryf, en 'n verkoper in een sal nooit 'n kliënt van 'n ander sien nie — nie deur beleid nie, deur konstruksie.
  • 'n Vennootprogram, 'n stel prompts, 'n eis op 'n kliënt: alles met omvang per maatskappy, sodat een huurder se konfigurasie nie almal s'n kan word nie.
  • 'n Uitwissingsversoek word binne 'n grens gehonoreer eerder as oor 'n gedeelde hoop, en dit is wat dit moontlik maak om eerlik te antwoord.
  • En niemand hoef enigiets daarvan te onthou nie. Dit is die punt — 'n waarborg wat daarvan afhang om onthou te word, is nie 'n waarborg nie.

Nog 'n reël wat nie oor databasisse gaan nie

Elke susterdiens in die familie hou sy eie benoemde geloofsbewys. Niks praat met 'n gedeelde een nie, so geen diens kan per ongeluk as 'n ander optree nie — 'n klein dissipline wat direk daarvandaan gekom het dat ons eens 'n gedeelde teken gehad het en dit nie geniet het nie.

Dit is dieselfde instink as die databasisreël. Maak die verkeerde ding onmoontlik eerder as ontmoedig, en jy spandeer jou aandag aan kliënte in plaas van aan waaksaamheid.

Die grensOnder die toepassing
  • 126 tabelleElkeen dra sy huurder, met die kontrole afgedwing.
  • 272 beleideIndividueel uitgeskryf, sodat elkeen deur 'n mens gelees is.
  • 3942 toetseTeen 'n databasis wat van nul af herbou word, by elke verandering.
  • 40 verstekhuurders'n Versoek sonder 'n omvang bereik nooit die data nie.

Gemeet op die lewendige bou

“Ons toepassing filtreer altyd volgens maatskappy.”

Altyd doen baie werk in daardie sin.

Skuif die grens af in die databasis en 'n vergeet WHERE-kluiseloos lewer niks op in plaas van iemand anders se kliënte nie. 'n Leë skerm is 'n beter mislukking as 'n ongemaklike kennismaking.

Vir groepe met verskeie handelsmerke →