Rozdzélk
Graniô, chtërną trzëmô baza dónych, a nie kòd
Każdë CRM twierdzë, że je multi-tenant. To twierdzenié je tanié; wôżné je, chtërna warstwa trzëmô liniã. Jeżlë òdpòwiedź je „nôszô aplikacjô zawszé dodôwô właściwí filtr”, to gwarancjô je tak dobrô, jak nômni wëpòczëti programista, chtërny kòl raz napisôł zapytanié.
iKonekt béł multi-tenant òd pierszi migracjë, a nie dòdóny pò temù, co zwãka jak chechtanié, a w zôstôwkù je priznaniém: dòdawanié tegò pò temù je kòl niemòżlëwé zrobic przekònąco, a kążi, chtërny próbòwôł, mô swòją historijã.
Òddzelenié mieszczi w bazi dónych. Kążdô z dwadzesctëszescë tabel nosi tenanta, do chtërnégò nôleżi, a pòlitika, chtërna to sprôwdzô, dzejô na kążdim czëtanim i kążdim zapisie, całowno pòd aplikacją. Zapytanié, chtërno zôpòmni graniã, nie wrôcô cudzich klientów. Òno nie wrôcô niczégò.
Bezpieczeństwo na rowni wierszów, wymùszoné
Nie to je kònwencjô, nie regła przeglądu kòdu. Baza òdmôwio. Sétmiesiądzescëdzewiã pòlitików, napisónych pò jedny, a nie generowónych — bò generowónô pòlitika to je pòlitika, chtërny nikt nie czitôł.
Złożoné klucze
Dzéckò-rekòrd òdnozë sã do swòjégò tenanta i swòjégò rodzica jednoczesno, jak parã. Lëchi identifikator z zlej firmë nie rozwiąże sã — òn prosto nie je pòprawnym òdnozzenim.
Żodnégò domëszlnégò tenanta, nigdë
Zapytanié bez zakresu nie stôwô sã cëchò zapytanim do tenanta zero. Òno wërzucô błąd, zanim dòjdze do bazi dónych. Nie mò „unscoped” mòdù, chtërnégò mòżna zôpòmniec wëłączic.
Błąd, chtërny ni mògł sã zjawnic
Kòl robòtë nad tenancjã wôżnô czãsc błãdów béła głośnô. Dôj dwóm firmóm té samégò klienta doména, a baza òdmôwi prosto, z kòdã błędù i stosem; naprawisz to przed òbiadã.
Jeden nie zaprotestowôł. Tabélô edytowónych nadpisów promptów béła kluczowónô samym rodzajã prompta — nie rodzajã i tenantã. Drëgô firma, edytując swòją kòpiã, bë cëchò nadpisôła pierszé firmë, przez całowno pòprawné SQL, bez błędù, bez òstrzégò, bez pôdającegò testu. Òstało to znalezione przez czitanie kążdégò òstôtnégò unikalnégò indeksu pò zmianie klucza, pò jednym, z pòdzejanim, że głośné mògłë miec towarziszã.
Wspòminamë o tim, bò to je czescô forma ti robòtë. Òddzelenié nie je fùnkcją, chtërną włączisz; to je nawika czitaniô nudnëch czãsczów schematu z zôłożenim, że cos tam sã z tobą nie zgòdzô.
Testë, dlô pòrządku: 942 z nich, pùszczóné na bazie zbudowóny òd zera przy kążdi zmianie. Nie sã tam, żebë dowiôc, że projekt je sprytny. Sã tam bò mòd failurë tegò konkretnégò projektu je cëchi, a cëchim błãdóm trzëbô niechò kòs czësò krzyczy w ich imionie.
Czim òddzelenié dôwô zwëkłégò człowieka
- Grëpa mòże prowadzëc wiôldżë firmów z jedny instalacjë, a sprzedôwca w jedny nigdë nie òzdrzë klienta drëgòj — nie przez pòlitikã, przez kònstrukcijã.
- Program partnersczi, zbiór promptów, roszczenié do klienta: wszëtkò w zakresie per firma, tak że konfiguracjô jednégò tenanta nie mòże stôwô sã wszëtczich.
- Żądanié wëmazaniô je zrealizowóné w grôni, a nie przez wspólną kãpã, i to je czim mòżnô szczeré òdpòwiedzec.
- A nikt nie mùszi niczégò pòmniec. To je pùnkt — gwarancjô, chtërna zôlëżi òd pòmniô, nie je gwarancją.
Jeszcze jedna linijka, chtërna nie je ò bazach dónych
Kążdô bratny służba w familiji trzëmô swòjé wlasné nazwóné pòwierdzë. Niczé nie gôdô wspólnym, tak że żodnô służba nie mòże przëpadkò dzejac jak drëgô — môłô discyplina, chtërna prziszła prosto z tegò, że kòl raz béł wspólny token i nie béło z nim wesoło.
To je ten sam instinkt jak regła bazi dónych. Zrób zlã rzecz niemòżlëwą, a nie zlëkóną, i pòświãcisz swòją uwagã klientóm, a nie czëżbë.
- 126 tabelKążdô nosi swòjégò tenanta, z wymùszoną sprôwdã.
- 272 pòlitikówNapisóné pòjedinczo, tak że kążdą przeczitôł człowiek.
- 3942 testówNa bazie zbudowóny òd zera, przy kążdi zmianie.
- 40 domëszlnëch tenantówZadanie bez zôrsu nigdë nie dosygnie danych.
Zmérzoné na żiwim buildze

„Nasza aplikacjô zawszë filtrëje pò fòrmie.”
To „zawszë” robi w tim zdanim baro wiele robòtë.
Przeniesë granicę niżi do bazy dëtów, a zabitô klauzula WHERE nie zwrôci nic zamiast cudzich klientów. Pùsti ekran je lepszą awarią niż niemôłé przistawienié.
Dla grupów z wieloma markama →