Barcha maqolalar
SaaSArchitectureMulti-tenancyNext.js

Ko'p ijarali SaaS: men haqiqatan nima bilan shug'ullanishim kerak edi

Nashr etilgan 30-oktabr, 2025 · 6 daqiqa o'qish

BookUp mening jizzat chiqishimdan boshlandi

Bu atrofdagi har bir sartaroshxona va salon Telegram DM va qog'oz daftardan bron yuritadi. Bu ishlaydi, keyin haqiqatan ishlamay qoladi — qo'shaloq bronlar, o'tkazib yuborilgan uchrashuv, haftangizni bir qarashda ko'rish imkoni yo'q. Shuning uchun men ularda bo'lishini xohlagan narsani qurdim.

Biznes g'oyasi oddiy: bitta platforma, ko'p bizneslar. Har bir biznes o'zining bron sahifasini, o'z jadvalini, o'z mijozlar ro'yxatini oladi.

Qiyin muhandislik qismi — "har bir biznes o'z maydoniga ega" degan hissiyotni haqiqiy qilish. Bu ko'p ijarachilik va mana u aslida nimani o'z ichiga oladi.

Subdomainlar: mijoz ko'radigan qism

Mijoz Mustafaning sartaroshxonasida bron qilganida, mustafa.bookup.uz-ga boradi. bookup.uz/businesses/mustafa emas — bu URL "siz boshqa birovning ilovasida joy ijaralayapsiz" deydi. Subdomain esa "bu Mustafaning joyi" deydi.

Next.js-da bu middleware-da ishlaydi. Har bir so'rov keladi, host sarlavhasini o'qiyman, asosiy domenni kesib tashlayman va ijarachi slugini olaman.

Yoqimli narsa: joker DNS buni bepul hal qiladi. Bitta DNS yozuvi, har bir subdomain bir xil serverga yo'naladi. Yangi biznes ro'yxatdan o'tib, slug tanlasa — darhol ishlaydi.

Ma'lumotlarni izolyatsiya qilish: sizni tishlagan qism

Bitta ma'lumotlar bazasi, umumiy jadvallar, har bir ijarachi qatorida tenant_id ustuni bor. Bu standart yondashuv.

Ehtiyot bo'lmasangiz sizni tishlagan qism: biror joyda tenant filtrini qo'shishni unutasiz. "So'nggi bronlar" so'rovi quraysiz, dev-da bitta ijarachi ma'lumotlari bilan ajoyib ishlaydi, keyin production-da siz beixtiyor bir biznesning bronlarini boshqa biznesning boshqaruv paneliga ko'rsatmoqdasiz.

Birinchi kundan qilishni xohlagan narsam: buni xizmat darajasida emas, modul darajasida qo'llash. Men naqshni sezmagunicha ijarachi neytral so'rov yordamchilariga aylangan kodni qayta ishlashga bir necha hafta sarfladim.

Onboarding: odamlarni bo'sh xonada qoldirmang

Yangi ijarachi ro'yxatdan o'tadi, slug tanlaydi, boshqaruv paneliga tushadi. Bo'sh jadval. Xizmatlar yo'q. Xodimlar yo'q.

Men nima qildim: avtomatik ravishda uchta namuna xizmati va zahira xodimni yaratdim. Ijarachi bron sahifasining ma'lumotlar bilan qanday ko'rinishini ko'radi. Namunalarni o'chirishi mumkin, ammo birinchi taassurot "oh, u shunday qiladi" bo'ladi, "qayerdan boshlayman" emas.

O'zimga nima derdim

Ijarachi ID autentifikatsiya tokeningizda, so'rov kontekstingizda va so'rov quruvchingizda birinchi kundan bo'lishi kerak.

Subdomainlar yo'l prefikslaridan ustun. URL egalikni ifodalaydi va egalik mahsulotni hech qanday qo'shimcha muhandislik uchun premium his ettiradi.

Onboarding bo'sh holati birinchi haqiqiy foydalanuvchi tajribasidir. Erta o'sha yerga sarmoya kiriting.