Pemisahan
Wates sing disimpen ing basis data, dudu ing kode
Saben CRM ngaku multi-tenant. Ngaku iku murah; sing penting yaiku lapisan endi sing ngadegake wates. Yen wangsulane "aplikasi kita tansah nambahake filter sing bener", mula jaminane mung sae karo pangembang sing paling kesel sing nathe nulis query.
iKonekt wis multi-tenant wiwat migrasi kapisan, dudu ditambahake mengko, sing katon kaya gombalan nanging sejatine pangakuan: nambahake mengko meh ora bisa ditindakake kanthi meyakinkan, lan saben wong sing wis nyoba duwe critane dhewe.
Pamisahan ana ing basis data. Saben saka 26 tabel nggawa tenant sing duweke, lan kawicaksanan sing mriksa mlaku ing saben maca lan saben nulis, ing ngisor aplikasi kabeh. Query sing lali wates ora bakal ngasilake pelanggan wong liya. Iku ora ngasilake apa-apa.
Keamanan tingkat baris, dipaksa
Ora konvensi, ora aturan telaah kode. Basis data nolak. Pitung puluh loro kawicaksanan, ditulis siji-siji dudu digawe otomatis — amarga kawicaksanan sing digawe otomatis yaiku kawicaksanan sing ora tau diwaca wong.
Kunci komposit
Rekam anak nuduhake tenant-e lan induke bebarengan, minangka pasangan. Identifikasi saka perusahaan sing salah ora bisa ditanggapi — iku mung dudu rujukan sing sah.
Ora ana tenant bawaan, ora nathe
Panjalukan tanpa lingkup ora dadi panjalukan kanggo tenant sijih kanthi diam. Iku mbalikake kesalahan sadurunge tekan basis data. Ora ana mode "tanpa lingkup" sing bisa kelalen dipateni.
Bug sing ora bisa muni dhewe
Nalika karyane tenancy lagi dilakoni, umume kesalahan iku keroncong. Wenehana rong perusahaan domain pelanggan sing padha lan basis data nolak langsung, karo kode kesalahan lan jejak tumpukan; sampeyan bisa ndandani sadurunge mangan awan.
Siji ora nolak. Tabel sing bisa diowahi prompt diindeks mung miturut jene prompt-e — dudu miturut jene lan tenant. Perusahaan kapindho sing ngowahi salinane dhewe bakal diam nindhihake salinan perusahaan kapisan, liwat SQL sing sah kabeh, tanpa kesalahan, tanpa pepeling, lan tanpa tes sing gagal. Iku tinemu kanthi maca saben indeks unik sing isia sawise ngganti kunci, siji-siji, amarga curiga sing keroncong iku duwe kanca.
Kita nyebutake amarga iku wujud jujur saka karya iki. Pamisahan dudu fitur sing sampeyan uripake; iku kabiasaan maca bagian schema sing garing kanthi anggep ana sing ora setuju karo sampeyan ing kono.
Tes, kanggo cathetan: 942, dilakoni nglawan basis data sing dibangun maneh saka nol ing saben owah-owahan. Iku ora ana kanggo mbuktikake desain pinter. Iku ana amarga mode gagal desain iki diam, lan kegagalan diam butuh wong sing nyerakake kanggo dheweke.
Apa pamisahan menehi marang wong biasa
- Saben grup bisa nganggo sawetara perusahaan saka siji instalasi, lan penjual ing siji ora bakal nathe ndeleng pelanggan perusahaan liyane — dudu amarga kawicaksanan, nanging amarga konstruksi.
- Program mitra, sakumpulan prompt, klaim marang pelanggan: kabeh dilingkupi saben perusahaan, supaya konfigurasi siji tenant ora bisa dadi duweke kabeh.
- Panjalukan pambusakan dituruti ing njero wates dudu ing tumpukan sing dienggo bareng, lan iku sing nggawe bisa diwangsuli kanthi jujur.
- Lan ora ana wong sing kudu ngelingake kabeh iku. Iku pokoke — jaminan sing gumantung ing dielingake dudu jaminan.
Siji baris maneh sing dudu babagan basis data
Saben layanan sadulur ing kulawarga nyimpen kredensial sing dijenengi dhewe. Ora ana sing ngomong nganggo sing dienggo bareng, supaya ora ana layanan sing bisa kepara tumindak minangka liyane — disiplin cilik sing asale langsung saka nathe duwe token bareng lan ora seneng karo iku.
Iku naluri sing padha karo aturan basis data. Gawe sing salah dadi ora bisa dudu mung disarani, lan sampeyan nggawe atensi sampeyan kanggo pelanggan dudu kanggo kewaspadaan.
- 126 tabelSaben sijine nggawa tenant-e, kanthi pemeriksaan sing dipaksa urip.
- 272 kawicaksananDitulis siji-siji, supaya saben sijine wis diwaca wong.
- 3942 tesNglawan basis data sing dibangun maneh saka nol, ing saben owah-owahan.
- 40 tenant bawaanPanjalukan tanpa lingkup ora nathe tekan data.
Diukur ing build urip

“Aplikasi kita tansah nyaring miturut perusahaan.”
Tansah nggawe akeh pakaryan ing ukara kasebut.
Dhawuhake watese mudhun menyang basis data lan klausa WHERE sing kelalen bakal ora ngasilake apa-apa dudu pelanggan wong liya. Layar kosong iku kegagalan sing luwih apik tinimbang perkenalan sing canggung.
Kanggo grup sing nganggo sawetara merek →