Eraldus
Piir, mida hoiab andmebaas, mitte kood
Iga CRM väidab end olevat mitme rentnikuga. Väide on odav; oluline on, milline kiir piiri hoiab. Kui vastus on „meie rakendus lisab alati õige filtri“, siis on garantii vaid nii hea kui kõige vähem välja puhanud arendaja, kes kunagi päringu kirjutas.
iKonekt oli mitme rentnikuga juba esimesest migratsioonist, mitte järelpaigaldatud, mis kõlab kiiduna ja on tegelikult tunnistus: seda järelpaigaldada veenvalt on peaaegu võimatu, ja kõigil, kes on proovinud, on lugu.
Eraldus elab andmebaasis. Kõik kakskümmend kuus tabelit kannavad rentnikku, kellele nad kuuluvad, ja seda kontrolliv reegel jookseb iga lugemise ja kirjutamise juures, täiesti rakendusest allpool. Päring, mis piiri unustab, ei tagasta kellegi teise kliente. Ta ei tagasta midagi.
Reatasemeline turvalisus, sunnitud
Mitte kokkulepe, mitte koodiülevaatuse reegel. Andmebaas keeldub. Seitsekümmend kaks reeglit, ükshaaval kirja pandud, mitte genereeritud — sest genereeritud reegel on reegel, mida keegi pole lugenud.
Komposiitvõtmed
Alamkirje viitab oma rentnikule ja oma vanemale koos, paarina. Vale ettevõtte eksinud identifikaator ei lahene — ta lihtsalt ei ole kehtiv viide.
Vaikerentnikku ei ole, mitte kunagi
Päring ilma ulatuseta ei muutu vaikselt päringuks rentniku null. Ta viskab vea enne andmebaasi jõudmist. „Uluseta“ režiimi, mida unustada välja lülitada, ei ole.
Viga, mis ei saanud end kuulutada
Kui rentnikutööd tehti, olid enamus vigadest valjud. Anna kahel ettevõttel sama kliendidomeen ja andmebaas keeldub kohe, veakoodi ja pinujäljega; parandad selle enne lõunat.
Üks ei protestinud. Tabel redigeeritavate viipade ülekirjutustest oli võtmega ainult viiba liigi järgi — mitte liigi ja rentniku järgi. Teine ettevõte, kes redigeeris oma koopiat, oleks vaikselt üle kirjutanud esimese ettevõtte oma, täiesti kehtiva SQL-iga, ilma veata, ilma hoiatuseta, ilma läbikukkunud testita. See leiti, kui pärast võtme muutmist loeti läbi iga järelejäänud unikaalne indeks, ükshaaval, kahtlusega, et valjudel on seltskonda.
Mainime seda, sest see on selle töö aus kuju. Eraldus pole lüliti, mida sisse lülitad; see on harjumus lugeda skeemi igavaid osi eeldusega, et miski seal sinuga ei nõustu.
Testid, täpsuse huvides: neid on 942 ja need jooksevad iga muudatuse korral nullist üles ehitatud andmebaasi vastu. Need ei ole seal selleks, et tõestada, kui nutikas disain on. Need on seal, sest just selle disaini vearežiim on vaiksene, ja vaiksene viga vajab kedagi, kes selle eest välja hüüab.
Mida eraldus tavalisele inimesele annab
- Grupp saab ühest installatsioonist juhtida mitut ettevõtet, ja ühe müüja ei näe kunagi teise klienti — mitte poliitika tõttu, vaid ehituse tõttu.
- Partneriprogramm, promptide kogu, nõue kliendile: kõik skoobitud ettevõtte kaupa, nii et ühe rentniku seadistus ei saa saada kõigi omaks.
- Kustutamistaotlus täidetakse piiri sees, mitte ühise hunniku üle, ja just see teeb võimalikuks ausalt vastata.
- Ja keegi ei pea seda meeles pidama. See ongi punkt — garantiu, mis sõltub sellest, et keegi seda meeles peab, pole garantiu.
Veel üks rida, mis pole andmebaaside kohta
Iga õeteenus perekonnas hoiab oma nimega identimisteavet. Mitte ükski ei räägi jagatud omaga, nii et ükski teenus ei saa kogemata käituda teisena — väike distsipliin, mis tuli otse sellest, et kunagi oli meil jagatud token ja see ei meeldinud.
See on sama instinkt kui andmebaasireegel. Tee vale asi võimatuks, mitte keelatuks, ja kulutad oma tähelepanu klientidele, mitte valvsusele.
- 126 tabelitIgaüks kannab oma rentnikku, kontroll sunnitud sisse.
- 272 reeglitKirjutatud ükshaaval välja, nii et igaühe on läbi lugenud inimene.
- 3942 testiNullist üles ehitatud andmebaasi vastu, iga muudatuse korral.
- 40 vaikimisi rentnikkuTaotlus ilma skoobita ei jõua kunagi andmeteni.
Mõõdetud elaval buildil

„Meie rakendus filtreerib alati ettevõtte järgi.“
Selles lauses teeb „alati“ palju tööd.
Nihuta piir andmebaasi sisse ja unustatud WHERE-klausel tagastab mitte midagi, mitte kellegi teise kliente. Tühi ekraan on parem viga kui ebaviisakas tutvustus.
Gruppidele, kes juhivad mitut brändi →