Ločevanje
Meja, ki jo drži zbirka podatkov, ne koda
Vsak CRM trdi, da je večnajemniški. Ta trditev je poceni; pomembno je, katera plast drži črto. Če je odgovor »naša aplikacija vedno doda pravi filter«, je zagotovilo le toliko vredno, kot je vreden najmanj spočit razvijalec, ki je kdaj napisal poizvedbo.
iKonekt je bil večnajemniški od prve selitve naprej in ne dokončan naknadno, kar zveni kot hvalisivost, dejansko pa je priznanje: naknadna izvedba je skoraj nemogoče prepričljivo narediti, vsak, ki je poskusil, ima svojo zgodbico.
Ločitev prebiva v zbirki podatkov. Vsaka od šestindvajsetih tabel nosi najemnika, ki ji pripada, politika, ki to preverja, pa teče ob vsakem branju in vsakem pisanju, povsem pod aplikacijo. Poizvedba, ki pozabi mejo, ne vrne tujih strank. Ne vrne ničesar.
Varnost na ravni vrstic, vsiljena
Ne konvencija, ne pravilo pregleda kode. Zbirka podatkov to zavrne. dvanainsedemdeset politik, zapisanih posamezno in ne ustvarjenih — ker je politika, ki jo je ustvaril stroj, politika, ki je ni prebral nihče.
Sestavljeni ključi
Podrejeni zapis se sklicuje na svojega najemnika in starša hkrati, kot par. Uštekan identifikator napačnega podjetja se ne razreši — preprosto ni veljavna referenca.
Brez privzetega najemnika, nikoli
Zahteva brez obsega ne postane tiho zahteva za najemnika nič. Sproži napako, še preden doseže zbirko podatkov. Ni načina »brez obsega«, ki bi ga lahko pozabili izklopiti.
Napaka, ki si ni mogla privoščiti, da bi se oglasila
Med delom na večnajemniškosti je bila večina napak glasna. Dajte dvema podjetjema isto domeno stranke in zbirka podatkov takoj ugovarja, s kodo napake in sledom sklada; popravite je pred kosilom.
Ena ni ugovarjala. Tabela urejanjljivih preglasitev pozivov je bila ključana le po vrsti poziva — ne po vrsti in najemniku. Drugo podjetje bi z urejanjem svoje kopije tiho prepisalo kopijo prvega, s popolnoma veljavnim SQL-om, brez napake, brez opozorila in brez padlega testa. Odkrili so jo tako, da so po spremembi ključa prebrali vsa preostala enolična kazala, eno za drugim, v sumu, da glasna imajo družbo.
Omenjamo, ker je to iskrena oblika tega dela. Ločitev ni funkcija, ki jo vklopite; je navada brati dolgočasne dele sheme s predpostavko, da se vam kaj notri ne strinja.
Testi, za spomin: 942 jih je, izvedejo se na zbirki podatkov, ponovno zgrajeni iz nič, ob vsaki spremembi. Niso tam, da bi dokazali, da je zasnova pametna. Tam so zato, ker je način odpovedi te zasnove tih, tihim odpovedim pa mora nekdo vzklikati v njihovem imenu.
Kaj ločitev prinese navadnemu človeku
- Skupina lahko upravlja več podjetij iz ene namestitve, prodajalec v enem nikoli ne vidi stranke drugega — ne po politiki, temveč po zasnovi.
- Partnerski program, nabor pozivov, zahtevek do stranke: vse je obsegano na podjetje, tako da konfiguracija enega najemnika ne more postati konfiguracija vseh.
- Zahtevek po izbrisu se izpolni znotraj meje in ne čez skupnega kopa, kar je tisto, kar omogoča iskren odgovor.
- In nihče si tega ne more zapomniti. To je poanta — zagotovilo, ki je odvisno od tega, da si ga zapomnimo, ni zagotovilo.
Še ena vrstica, ki ni o zbirkah podatkov
Vsaka sestrska storitev v družini ima svojo poimenovano poverilnico. Nobena ne govori s skupno, zato ena ne more po nesreči nastopati kot druga — majhna disciplina, ki je izšla neposredno iz tega, da smo nekoč imeli skupni žeton in si tega nismo uživali.
To je isti nagon kot pravilo zbirke podatkov. Naredite napačno stvar nemogočo in ne odsvetovano, pozornost pa porabite za stranke in ne za budnost.
- 126 tabelVsaka nosi svojega najemnika, s preverjanjem, ki je vsiljeno.
- 272 politikZapisanih posamezno, tako da je vsako prebral človek.
- 3942 testovNa zbirki podatkov, ponovno zgrajeni iz nič, ob vsaki spremembi.
- 40 privzetih najemnikovZahteva brez obsega nikoli ne doseže podatkov.
Izmerjeno na živi različici

»Naša aplikacija vedno filtrira po podjetju.«
»Vedno« v tem stavku nosi veliko bremena.
Premaknite mejo navzdol v zbirko podatkov in pozabljen stavek WHERE vrne nič namesto tujih strank. Prazen zaslon je boljši neuspeh kot neprijeten predstavitveni sestanek.
Za skupine z več blagovnimi znamkami →