Ajratish
Kod emas, ma'lumotlar bazasi saqlaydigan chegara
Har bir CRM o'zini ko'p mijozli (multi-tenant) deb da'vo qiladi. Bu da'vo arzon; muhim narsa — qaysi qatlam chiziqni ushlab turayotgani. Agar javob «ilovamiz har doim to'g'ri filtr qo'shib turadi» bo'lsa, kafolat faqat shu so'rovni yozgan eng charchagan dasturchi darajasida bo'ladi.
iKonekt birinchi migratsiyasidan boshlab ko'p mijozli edi, keyinchalik qo'shib berilmagan — bu maqtovga o'xshaydi, aslida esa tan olishdir: uni keyin ishonchli tarzda qo'shib berish deyarli imkonsiz, va buni sinab ko'rgan har kimning o'z hikoyasi bor.
Ajratish ma'lumotlar bazasida yashaydi. Yigirma oltita jadvalning har biri o'ziga tegishli mijozni (tenant) ko'rsatadi, va buni tekshiruvchi siyosat har bir o'qish va yozishda, butunlay ilovadan pastda ishlaydi. Chegarani unutgan so'rov boshqaning mijozlarini qaytarmaydi. U hech narsani qaytarmaydi.
Qator darajasidagi xavfsizlik, majburiy
Bu odat ham, kod tekshiruvi qoidasi ham emas. Ma'lumotlar bazasi rad etadi. Yetmish ikkita siyosat, generatsiya qilinib emas, birma-bir yozilgan — chunki generatsiya qilingan siyosatni hech kim o'qimagan siyosatdir.
Kompozit kalitlar
Bola yozuv o'z mijozini va ota yozuvini birga, juftlik sifatida ko'rsatadi. Boshqa kompaniyadan kelgan begona identifikator ishlamaydi — u oddiygina noto'g'ri havoladir.
Standart mijoz (tenant) hech qachon yo'q
Doirasi (scope) yo'q so'rov jimlik bilan «nol-mijoz» so'roviga aylanmaydi. U ma'lumotlar bazasiga yetib bormasdan xato beradi. Unutib o'chirib qo'yish mumkin bo'lgan «doirasiz» rejim yo'q.
O'zini e'lon qila olmagan xato
Mijozlar (tenancy) bo'yicha ish olib borilayotganda, xatolarning aksariyati baland ovozli edi. Ikki kompaniyaga bir xil mijoz domeni bering — ma'lumotlar bazasi darhol xato kodi va stack trace bilan qarshi chiqadi; tushlikka qadar tuzatib bo'lasiz.
Bittasi qarshi chiqmadi. Tahrirlanadigan prompt ustamalari jadvali faqat prompt turiga qarab kalitlangan edi — turga va mijozga emas. Ikkinchi kompaniya o'z nusxasini tahrirlaganda, birinchi kompaniyanikini butunlay to'g'ri SQL orqali, xatosiz, ogohlantirishsiz va muvaffaqiyatsiz testlarsiz jim o'zgartirib qo'yardi. Bu kalit o'zgartirilgandan keyin qolgan har bir unique indeksni, baland ovozli xatolar yolg'iz emas degan gumon bilan, birma-bir o'qish orqali topildi.
Buni shu ishning halol ko'rinishi sifatida aytamiz. Ajratish — yoqib qo'yadigan funksiya emas; bu sxemaning zerikarli qismlarini, ichida siz bilan kelishmagan narsa bor deb faraz qilib, o'qish odatidir.
Testlar, dalil sifatida: 942 tasi, har bir o'zgarishda noldan qayta yaratilgan ma'lumotlar bazasida ishlaydi. Ular dizayn aqlli ekanligini isbotlash uchun emas. Ular shu yerda, chunki bu dizaynning xato rejimi jimdir, va jim xatolar uchun kimdir ular nomidan baqirishi kerak.
Ajratish oddiy odamga nima beradi
- Guruh bitta o'rnatishdan bir nechta kompaniyani boshqarishi mumkin, va bittasidagi sotuvchi boshqasining mijozini hech qachon ko'rmaydi — siyosat bilan emas, konstruksiya bilan.
- Hamkorlik programmasi, promptlar to'plami, mijozga da'vo — barchasi kompaniya bo'yicha doiralangan, shuning uchun bitta mijozning sozlamalari hamma uchun bo'lib qolmaydi.
- Ma'lumotlarni o'chirish so'rovi umumiy uyum bo'ylab emas, chegara ichida bajariladi — aynan shu halol javob berishni imkonli qiladi.
- Va hech kim buni eslab turishi shart emas. Mana shu — eslab qolishga bog'liq kafolat kafolat emas.
Ma'lumotlar bazalari haqida bo'lmagan yana bir qator
Oiladagi har bir qardosh xizmat o'z nomlangan kredensialini saqlaydi. Hech narsa umumiy kredensial bilan gaplashmaydi, shuning uchun hech bir xizmat boshqasi nomidan tasodifan ish turolmaydi — bu kichik intizom bir paytlar umumiy token bo'lgani va bundan zavqlanmaganimizdan to'g'ridan-to'g'ri kelgan.
Bu ma'lumotlar bazasi qoidasidagi xuddi shu instinkt. Noto'g'ri narsani rag'batlantirilmas emas, imkonsiz qiling — va diqqatingizni ogohlikka emas, mijozlarga sarflaysiz.
- 126 jadvalHar biri o'z mijozini ko'rsatadi, tekshiruv majburiy yoqilgan.
- 272 siyosatBirma-bir yozilgan, shuning uchun har biri inson tomonidan o'qilgan.
- 3942 testHar bir o'zgarishda noldan qayta yaratilgan ma'lumotlar bazasida.
- 40 standart mijozDoirasi yo'q so'rov ma'lumotlarga hech qachon yetib bormaydi.
Jonli build'da o'lchangan

«Ilovamiz har doim kompaniya bo'yicha filtrlaydi.»
Bu jumlada «har doim» juda katta yuk ko'taradi.
Chegarani ma'lumotlar bazasiga pastga ko'chirsangiz, unutilgan WHERE bandida boshqaning mijozlari o'rniga hech narsa qaytadi. Bo'sh ekran noqulay tanishuvdan yaxshiroq xatodir.
Bir nechta brendni yurituvchi guruhlar uchun →