iKonekt
Konzol megnyitása

Szeparáció

A határ, amelyet az adatbázis tart, nem a kód

Minden CRM azt állítja magáról, hogy több bérlős. Az állítás olcsó; az számít, melyik réteg tartja a vonalat. Ha a válasz az, hogy „az alkalmazásunk mindig hozzáadja a megfelelő szűrőt”, akkor a garancia csak annyit ér, mint a legkevésbé kipihent fejlesztő, aki valaha írt egy lekérdezést.

Az iKonekt az első migrációjától kezdve több bérlős volt, nem utólag építették bele – ami dicsekvésnek hangzik, valójában pedig vallomás: utólag meggyőzően megcsinálni szinte lehetetlen, és mindenkinek, aki megpróbálta, van egy története róla.

Az elkülönítés az adatbázisban él. A huszonhat tábla mindegyike tartalmazza a hozzá tartozó bérlőt, és az ezt ellenőrző szabály minden olvasáskor és íráskor fut, teljesen az alkalmazás alatt. Egy lekérdezés, amely elfelejti a határt, nem más cég ügyfeleit adja vissza. Semmit nem ad vissza.

Sorszintű biztonság, kikényszerítve

Nem konvenció, nem kódellenőrzési szabály. Az adatbázis megtagadja. Hetvenkét szabály, egyenként megírva, nem generálva – mert a generált szabályt senki sem olvasta el.

Összetett kulcsok

Egy gyermekrekord a bérlőjére és a szülőjére együtt hivatkozik, párosban. Egy rossz cégtől származó kóbor azonosító nem oldódik fel – egyszerűen nem érvényes hivatkozás.

Soha nincs alapértelmezett bérlő

Egy hatókör nélküli kérés nem csendben a nulla bérlőre vonatkozó kéréssé válik. Mielőtt elérné az adatbázist, hibát dob. Nincs „hatókör nélküli” mód, amelyet elfelejthetne kikapcsolni.

A hiba, amely nem tudta magát bejelenteni

Amíg a több bérlős működésen dolgoztunk, a hibák többsége hangos volt. Adjon két cégnek ugyanazt az ügyféltartományt, és az adatbázis azonnal tiltakozik, hibakóddal és veremkiírással; ebéd előtt megjavítja.

Egy nem tiltakozott. Egy szerkeszthető prompt-felülírásokból álló tábla csak a prompt fajtájára volt kulcsolva – nem a fajtára és a bérlőre. Egy második cég, amely a saját példányát szerkesztette, csendben felülírta volna az első cégét, teljesen érvényes SQL-lel, hiba nélkül, figyelmeztetés nélkül, és elbukó teszt nélkül. Úgy találtuk meg, hogy egy kulcs megváltoztatása után egyenként átolvastuk az összes megmaradó egyedi indexet, a gyanúban, hogy a hangosaknak volt társaságuk.

Azért említjük, mert ez ennek a munkának az őszinte formája. Az elkülönítés nem olyan funkció, amelyet bekapcsol; hanem szokás, hogy elolvassuk a séma unalmas részeit azzal a feltételezéssel, hogy valami ott nem ért velünk egyet.

A tesztek, a jegyzőkönyv kedvéért: 942 darab, minden változtatáskor a nulláról újjáépített adatbázison futtatva. Nem azért vannak, hogy bizonyítsák: a tervezés okos. Azért vannak, mert ennek a tervezésnek a hibamódja csendes, és a csendes hibákért valakinek helyettük kell kiabálnia.

Mit nyer egy hétköznapi ember az elkülönítésből

  • Egy csoport több céget is működtethet egyetlen telepítésről, és az egyik cég eladója sosem látja a másik ügyfelét – nem szabályzatból, hanem felépítésből fakadóan.
  • Egy partnerprogram, egy promptkészlet, egy ügyfélre vonatkozó igény: mindegyik cégenként hatókörözött, így egy bérlő beállítása nem válhat mindenkié.
  • Egy törlési kérelem határon belül teljesül, nem egy közös halmon át, ami teszi lehetővé, hogy őszintén válaszolhassunk rá.
  • És senkinek sem kell erre emlékeznie. Ez a lényeg – egy garancia, amely emlékezéstől függ, nem garancia.

Még egy sor, amely nem adatbázisokról szól

A család minden testvérszolgáltatása a saját, névvel ellátott hitelesítő adatait használja. Semmi nem beszél megosztottal, így egyetlen szolgáltatás sem cselekedhet véletlenül egy másik nevében – egy kis fegyelem, amely közvetlenül abból született, hogy egyszer volt már megosztott tokenünk, és nem élveztük.

Ugyanaz az ösztön, mint az adatbázis-szabály. Tegye lehetetlenné, nem csupán lebeszéltté a rosszat, és a figyelmét az ügyfelekre fordíthatja az éberség helyett.

A határAz alkalmazás alatt
  • 126 táblaMindegyik tartalmazza a saját bérlőjét, kikényszerített ellenőrzéssel.
  • 272 szabályzatEgyenként leírva, így mindegyiket elolvasta egy ember.
  • 3942 tesztEgy nulláról újjáépített adatbázissal szemben, minden módosításkor.
  • 40 alapértelmezett bérlőA hatókör nélküli kérés soha nem jut el az adatokig.

Az élő builden mérve

„Az alkalmazásunk mindig cég szerint szűr.”

Az a „mindig” ebben a mondatban rengeteget csinál.

Tegye le a határt egészen az adatbázisig, és egy elfelejtett WHERE záradék nem más ügyfeleit adja vissza, hanem semmit. Az üres képernyő jobb hiba, mint egy kínos bemutatkozás.

Több márkát működtető csoportoknak →