Мультитенантность: как изолировать данные разных клиентов
Три подхода к разделению данных в SaaS и как выбрать подходящий для вашего продукта.
Мультитенантность — это когда один экземпляр приложения обслуживает множество клиентов (tenant). Ключевой вопрос: как хранить данные так, чтобы клиент A не видел данные клиента B. Есть три подхода: отдельная база для каждого клиента, отдельная схема в общей базе, общие таблицы с полем tenant_id.
Отдельная база — максимальная изоляция, но дорогая в обслуживании при большом числе клиентов. Общие таблицы — дешевле, но требуют дисциплины на уровне кода: каждый запрос должен фильтровать по tenant_id. Пропуск этого фильтра — критическая уязвимость. Для стартового SaaS MVP обычно подходит третий подход с тщательным code review.
Архитектурный выбор принимается до написания первой строки кода — переход между подходами после запуска очень дорог. Поэтому при проектировании SaaS важно зафиксировать ожидаемое число клиентов, требования к изоляции и бюджет на инфраструктуру.