Erottelu
Raja, jonka pitää tietokanta, ei koodi
Jokainen CRM väittää olevansa monivuokralainen. Väite on halpa; olennaista on, mikä kerros pitää linjan. Jos vastaus on "sovelluksemme lisää aina oikean suodattimen", takuu on vain yhtä hyvä kuin se vähiten levännyt kehittäjä, joka on koskaan kirjoittanut kyselyn.
iKonekt oli monivuokralainen ensimmäisestä migraatiostaan lähtien eikä jälkikäteen lisätty, mikä kuulostaa kehumiselta mutta on oikeastaan myöntämys: jälkikäteen lisääminen on lähes mahdotonta tehdä uskottavasti, ja jokaisella, joka on yrittänyt, on tarina siitä.
Eroonkytkentä asuu tietokannassa. Jokainen kahdestakymmenestäkuudesta taulusta kantaa vuokralaisen, johon se kuuluu, ja sitä tarkistava käytäntö ajetaan jokaisella luvulla ja kirjoituksella, kokonaan sovelluksen alapuolella. Kysely, joka unohtaa rajan, ei palauta jonkun toisen asiakkaita. Se ei palauta mitään.
Rivitason tietoturva, pakotettu
Ei konventio, ei koodikatselmoinnin sääntö. Tietokanta kieltäytyy. Seitsemänkymmentäkaksi käytäntöä, kirjoitettu yksi kerrallaan eikä generoituna — koska generoitu käytäntö on käytäntö, jota kukaan ei ole lukenut.
Yhdistelmäavaimet
Lapsitietue viittaa vuokralaiseen ja ylätietueeseensa yhdessä, parina. Väärän yrityksen harhainen tunniste ei ratkea — se ei yksinkertaisesti ole kelvollinen viittaus.
Ei oletusvuokralaista, koskaan
Pyyntö ilman laajuutta ei hiljaa muutu pyynnöksi vuokralaista nolla kohtaan. Se heittää poikkeuksen ennen kuin pääsee tietokantaan. Ei ole "laajuudetonta" tilaa, jonka unohtaisi sammuttaa.
Virhe, joka ei voinut ilmoittaa itsestään
Kun vuokralaisuustyötä tehtiin, suurin osa virheistä oli kovaäänisiä. Anna kahdelle yritykselle sama asiakasverkkotunnus, ja tietokanta vastustaa heti, virhekoodi ja pinolista mukana; korjaat sen ennen lounasta.
Yksi ei vastustanut. Muokattavien kehoteohitusten taulu oli avainnettu pelkän kehotetyypin mukaan — ei tyypin ja vuokralaisen mukaan. Toinen yritys, joka muokkasi omaa kopiotaan, olisi hiljaa ylikirjoittanut ensimmäisen yrityksen kopion, täysin kelvollisella SQL:llä, ilman virhettä, varoitusta tai epäonnistuvaa testiä. Se löydettiin lukemalla jokainen jäljellä oleva yksilöllinen indeksi avaimen muuttamisen jälkeen, yksi kerrallaan, epäilyksenä että kovaäänisillä oli seuraa.
Mainitsemme sen, koska se on tämän työn rehellinen muoto. Eroonkytkentä ei ole ominaisuus, jonka kytkee päälle; se on tapa lukea skeeman tylsät osat olettaen, että jokin siellä on eri mieltä.
Testit, merkintää varten: niitä on 942, ja ne ajetaan tietokantaa vasten, joka rakennetaan nollasta jokaisella muutoksella. Ne eivät ole siellä todistamassa, että suunnittelu on nokkela. Ne ovat siellä, koska juuri tämän suunnittelun vikaantumistapa on hiljainen, ja hiljaiset viat tarvitsevat jonkun huutamaan puolestaan.
Mitä eroonkytkentä antaa tavalliselle ihmiselle
- Ryhmä voi pyörittää useita yrityksiä yhdestä asennuksesta, ja yhden yrityksen myyjä ei koskaan näe toisen asiakasta — ei käytännön, vaan rakenteen kautta.
- Kumppaniohjelma, kehotejoukko, vaatimus asiakkaaseen: kaikki rajattu yrityskohtaisesti, joten yhden vuokralaisen asetukset eivät voi muuttua kaikkien asetuksiksi.
- Poistopyyntö täytetään rajan sisällä eikä jaetun kasan yli, ja juuri se tekee rehellisen vastauksen mahdolliseksi.
- Eikä kenenkään tarvitse muistaa mitään tästä. Se on pointti — takuu, joka riippuu muistamisesta, ei ole takuu.
Vielä yksi rivi, joka ei koske tietokantoja
Jokainen sisarservice perheessä pitää omaa nimettyä tunnistettaan. Mikään ei puhu jaetulla tunnisteella, joten mikään service ei voi vahingossa toimia toisena — pieni kurinpito, joka tuli suoraan siitä, että jaettu tunniste oli joskus olemassa eikä siitä nautittu.
Se on sama vaisto kuin tietokantasääntö. Tee väärästä asiasta mahdotonta eikä vain lannistettavaa, ja käytät huomiosi asiakkaisiin eikä valppauteen.
- 126 tauluaJokainen kantaa vuokralaisensa, tarkistus pakotettuna päälle.
- 272 käytäntöäKirjoitettu yksitellen, joten jokaisen on lukenut ihminen.
- 3942 testiäTietokantaa vasten, joka rakennetaan nollasta jokaisella muutoksella.
- 40 oletusvuokralaistaPyyntö ilman laajuutta ei koskaan päädy dataan.
Mitattu live-versiosta

"Sovelluksemme suodattaa aina yrityksen mukaan."
"Aina" tekee tuossa lauseessa paljon työtä.
Siirrä raja alas tietokantaan, ja unohtunut WHERE-ehto palauttaa mitään jonkun toisen asiakkaiden sijaan. Tyhjä ruutu on parempi vika kuin kiusallinen esittely.
Ryhmille, joilla on useita brändejä →