Одна кодова база, сотні орендарів, нульовий витік даних — основа кожного масштабованого бізнесу SaaS.

Ви створюєте платформу, яка обслуговує кількох клієнтів з одного розгортання. Кожен клієнт очікує ізольованих даних, брендованого досвіду та виставлення рахунків для кожного орендаря — але ви не можете дозволити собі запускати окрему інфраструктуру для кожного. Вам потрібна економічна ефективність спільної інфраструктури з гарантіями ізоляції виділених систем. Це фундаментальна напруга в архітектурі SaaS, і неправильний вибір моделі ізоляції на ранніх етапах є однією з найдорожчих помилок у розробці платформи.
Explore more design patterns and system architectures
Наші архітектори можуть допомогти вам проектувати та будувати системи, використовуючи цей шаблон для ваших конкретних вимог.
Зв'яжіться з намиБагатотенантна архітектура SaaS забезпечує логічне або фізичне розділення між орендарями, водночас спільно використовуючи базові обчислювальні ресурси, сховища та мережеві ресурси. Цей патерн охоплює провізію орендарів, ізоляцію даних, управління функціями, тарифікацію та налаштування white-label. Ключове дизайнерське рішення — це модель ізоляції: спільна база даних з безпекою на рівні рядків (RLS), схема для кожного орендаря або база даних для кожного орендаря. Кожна модель обмінює силу ізоляції на операційну складність та економічну ефективність.
Система організована у три шари. Шлюз, що враховує орендарів, обробляє автентифікацію, визначення орендаря (через субдомен, JWT claim або API key) та маршрутизацію запитів. Шар застосунку повністю працює в контексті орендаря — кожен запит, кожен ключ кешу, кожне повідомлення черги прив'язане до визначеного орендаря. Шар даних забезпечує ізоляцію на рівні сховища за допомогою політик безпеки на рівні рядків (RLS), пулів з'єднань для кожного орендаря та шифрованого партиціонування даних у стані спокою.
tenant_id. Для схеми для кожного орендаря: динамічна маршрутизація з'єднань з управлінням пулом з'єднань. Для бази даних для кожного орендаря: автоматизація провізії за допомогою Terraform/Pulumiacme.yourapp.com) чистіші для white-label продуктів і дозволяють TLS-сертифікати для кожного орендаря. Визначення за шляхом (yourapp.com/acme/) простіше в реалізації та дозволяє уникнути складності wildcard DNS. MW рекомендує визначення за субдоменом для B2B SaaS з вимогами white-label, а за шляхом — для внутрішніх багатотенантних інструментів.tenant_id. Це здається очевидним, але конфлікти ключів кешу між орендарями є однією з найпоширеніших багатотенантних помилок. Ми забезпечуємо це через фабрику ключів кешу, яка автоматично додає префікс контексту орендаря.| Рівень | Технології |
|---|---|
| Обчислення | Node.js (NestJS), Python (FastAPI), контейнеризовані на ECS Fargate або Kubernetes |
| Дані | PostgreSQL з RLS, Redis (для кожного орендаря), S3 (партиціоновані бакети для орендарів) |
| Ідентифікація | Clerk, Auth0 або Okta з організаціями, прив'язаними до орендаря |
| Білінг | Stripe Connect (модель маркетплейсу), Stripe Billing (тарифіковані підписки) |
| Моніторинг | Datadog з тегами виміру орендаря, структуроване логування з tenant_id у кожному записі |
| Використовуйте, коли | Уникайте, коли |
|---|---|
| Будуєте B2B платформу, що обслуговує 10+ клієнтів зі спільної інфраструктури | Кожен клієнт вимагає повністю виділеної інфраструктури (відповідність/контрактні вимоги) |
| Вам потрібне white-label брендування, власні домени та контроль функцій для кожного орендаря | У вас менше 3 клієнтів — може бути достатньо простішого розгортання для кожного клієнта |
| Ціноутворення на основі використання або багаторівневе ціноутворення вимагає тарифікації для кожного орендаря | Продукт є споживчим застосунком з обліковими записами на рівні користувача, а не орендарями на рівні організації |
| Ви хочете один конвеєр розгортання, один стек моніторингу, одну ротацію чергувань | Орендарі мають принципово різні схеми або бізнес-логіку (а не лише конфігурацію) |
MW розглядає багатотенантність як наскрізну проблему, а не функцію. Ми реалізуємо поширення контексту орендаря на рівні middleware, тому код застосунку ніколи вручну не фільтрує за орендарем — це забезпечується фреймворком. Наші реалізації RLS включають автоматизовані набори тестів, які намагаються отримати доступ до даних між орендарями під час кожного запуску CI. Ми створили багатотенантні платформи, що обслуговують понад 500 орендарів на спільній інфраструктурі без жодних інцидентів витоку даних, і ми мігрували однотенантні моноліти на багатотенантні архітектури, використовуючи патерн strangler fig.
Моделі не працюють самі по собі. Конвеєр, що навчає, валідує, розгортає та моніторить ваші моделі, є фактичним продуктом — модель є лише одним артефактом.
Оптимальний вибір залежить від ваших вимог до ізоляції орендарів та масштабу. MicrocosmWorks зазвичай рекомендує підхід shared-database, separate-schema для більшості B2B SaaS продуктів, оскільки він збалансовує економічну ефективність з ізоляцією даних, хоча ми впроваджуємо database-per-tenant для клієнтів у регульованих галузях, таких як охорона здоров'я або фінанси, де вимагається сувора сегментація даних. Наші архітектори оцінюють ваші потреби у відповідності стандартам, очікувану кількість орендарів та патерни запитів, перш ніж рекомендувати правильну модель оренди.
MicrocosmWorks реалізує обмеження швидкості з урахуванням орендарів, пули з'єднань з квотами для кожного орендаря та ізоляцію ресурсів на обчислювальному рівні, щоб запобігти проблемам "галасливого сусіда". Ми використовуємо такі методи, як зважена справедлива черга та рівні кешування, специфічні для орендарів, щоб раптовий сплеск від одного клієнта не призводив до затримки для інших. Для орендарів корпоративного рівня ми можемо виділяти виділені обчислювальні розділи, зберігаючи при цьому спільну площину керування недоторканою.
MicrocosmWorks пропонує послуги з розробки та впровадження архітектури за консультаційними ставками від $15 до $45 за годину, залежно від складності та необхідного рівня досвіду команди. Типове залучення до розробки багатоорендної SaaS архітектури — що охоплює проєктування баз даних, ізоляцію орендарів, автентифікацію та конвеєри розгортання — триває 8-16 тижнів за участю міжфункціональної команди. Ми визначаємо обсяг кожного проєкту за допомогою фази відкриття з фіксованою ціною, щоб ви мали повну прозорість витрат перед тим, як взяти на себе зобов'язання щодо розробки.
MicrocosmWorks створює автоматизовані конвеєри забезпечення ресурсів для клієнтів, які обробляють створення схем, конфігурацію DNS, ініціалізацію функціональних прапорців та розгортання початкових даних протягом кількох хвилин після нової реєстрації. Ми використовуємо інструменти `infrastructure-as-code`, такі як Terraform або Pulumi, у поєднанні з керованими подіями робочими процесами, щоб кожен новий клієнт отримував повністю налаштоване середовище без ручного втручання. Цей підхід дозволяє нашим клієнтам масштабуватися від 10 до 10 000 клієнтів без зміни процесу адаптації.
MicrocosmWorks реалізує конфігураційно-керований шар налаштувань, використовуючи функціональні прапори, метадані, специфічні для орендарів, та плагінну архітектуру, яка дозволяє поведінку для кожного орендаря без розгалуження коду. Ми розробляємо точки розширення на рівнях темування інтерфейсу користувача (UI), механізму робочих процесів та інтеграції, щоб орендарі могли мати унікальний брендинг, бізнес-правила та сторонні підключення, які повністю керуються за допомогою конфігурації. Це дозволяє вашій інженерній команді підтримувати єдину кодову базу, підтримуючи при цьому різноманітні вимоги клієнтів.