Открыть сервис

Мультиарендность

Мультиарендность (от англ. multi-tenancy, букв. «многоквартирность») — это архитектурный принцип построения программного обеспечения, при котором один экземпляр приложения (серверная часть, база данных, вычислительные ресурсы) обслуживает множество независимых групп пользователей, называемых «арендаторами» (tenants). Каждый арендатор работает в изолированном логическом пространстве, воспринимая ресурсы как выделенные лично ему, но физически или виртуально разделяя их с другими арендаторами. Мультиарендность является ключевой технологией облачных вычислений (SaaS, PaaS, IaaS), позволяя поставщикам услуг экономить на инфраструктуре и упрощать развёртывание обновлений.

История и предпосылки

Концепция разделения вычислительных ресурсов между несколькими пользователями возникла задолго до появления термина «мультиарендность». В 1960–1970-х годах мейнфреймы (например, IBM System/360) использовали системы разделения времени (time-sharing), где множество пользователей через терминалы одновременно работали с одной машиной. Однако тогда изоляция была слабой, и каждый пользователь мог влиять на работу других.

Современная мультиарендность оформилась в конце 1990-х — начале 2000-х годов с развитием интернета и появлением модели «программное обеспечение как услуга» (SaaS). Пионерами в этой области стали компании Salesforce.com (основана в 1999 году) и NetSuite. Они предложили архитектуру, где одна кодовая база и одна база данных обслуживали тысячи клиентов, но данные каждого клиента были строго изолированы. Этот подход позволил радикально снизить стоимость владения для клиентов и ускорить вывод обновлений — вместо установки патчей на каждом отдельном сервере достаточно было обновить один центральный экземпляр.

Архитектурные модели мультиарендности

Существует несколько основных способов реализации мультиарендности, различающихся уровнем изоляции и эффективностью использования ресурсов.

Аренда на уровне базы данных (Database per Tenant)

Каждому арендатору выделяется отдельная база данных (или отдельная схема в одной СУБД). Это обеспечивает максимальную изоляцию: сбои или некорректные запросы одного арендатора не затрагивают других. Модель удобна для приложений с высокими требованиями к безопасности и для крупных клиентов, готовых платить за выделенные ресурсы. Недостаток — более высокие затраты на инфраструктуру и сложность горизонтального масштабирования при росте числа арендаторов.

Аренда на уровне таблиц (Shared Table / Shared Schema)

Все арендаторы используют одни и те же таблицы в одной базе данных. Для разграничения записей в каждую таблицу добавляется столбец-идентификатор арендатора (tenant_id). Это самая экономичная модель с точки зрения использования дискового пространства и оперативной памяти, но она же самая сложная в обеспечении изоляции. Ошибка в коде приложения может привести к утечке данных одного арендатора другому. Кроме того, при такой архитектуре сложно выполнять операции резервного копирования или восстановления для отдельного клиента — приходится восстанавливать всю базу целиком.

Аренда на уровне схемы (Schema per Tenant)

Промежуточный вариант: каждый арендатор получает собственную схему (набор таблиц) в одной общей базе данных. Это даёт лучшую изоляцию, чем общие таблицы, но позволяет использовать общий пул соединений и общие процедуры обслуживания. Такой подход часто применяется в корпоративных SaaS-решениях, где требуется баланс между стоимостью и безопасностью.

Гибридные и кастомные модели

Крупные платформы (например, Microsoft Azure, Amazon Web Services) часто комбинируют подходы: для небольших клиентов используют общие таблицы, для крупных — выделенные базы данных. Возможна также модель, когда данные арендатора хранятся в отдельном файле или объектном хранилище (blob storage), а метаданные о правах доступа — в общей базе.

Реализация и ключевые механизмы

Для корректной работы мультиарендной системы необходимы несколько базовых компонентов:

Преимущества и недостатки

Преимущества

Недостатки

Применение в различных сферах

Облачные SaaS-сервисы

Мультиарендность является стандартом де-факто для большинства SaaS-продуктов: CRM (Salesforce, HubSpot), офисные пакеты (Google Workspace, Microsoft 365), системы управления проектами (Jira, Asana), платформы электронной коммерции (Shopify). В России примером мультиарендного SaaS может служить сервис «Яндекс.360» (объединяет почту, диск, календарь и другие инструменты для бизнеса).

Облачные платформы (PaaS, IaaS)

Провайдеры облачной инфраструктуры (Amazon Web Services, Microsoft Azure, Яндекс.Облако, VK Cloud) также используют мультиарендность: виртуальные машины разных клиентов работают на одном физическом сервере, но изолированы гипервизором. Однако здесь термин чаще заменяется на «мультитенантность» (multi-tenancy) или «совместное размещение» (co-location).

Мобильные и веб-приложения

Социальные сети, мессенджеры, онлайн-игры — все они по сути мультиарендны: миллионы пользователей разделяют одну кодовую базу и базу данных, но видят только свои данные. Однако в этом контексте термин «арендатор» обычно не используется — говорят об «изоляции пользовательских данных».

Промышленность и IoT

В системах управления производством (MES) и интернете вещей мультиарендность позволяет одному экземпляру ПО обслуживать несколько заводов или несколько клиентов, каждый со своими устройствами и датчиками.

Критика и ограничения

Основные критические замечания касаются безопасности и сложности. В 2017 году исследователи из компании Rapid7 обнаружили уязвимость в популярной CRM-системе, позволявшую одному арендатору читать данные другого из-за ошибки в реализации row-level security. Подобные инциденты подрывают доверие к мультиарендным моделям, особенно в отраслях с жёсткими требованиями к конфиденциальности (медицина, финансы, государственные системы).

Кроме того, законодательство некоторых стран (например, GDPR в Европе, Федеральный закон № 152-ФЗ «О персональных данных» в России) требует локализации данных и строгого контроля доступа. Мультиарендная архитектура может усложнить выполнение этих требований, особенно если данные клиентов из разных юрисдикций хранятся в одной базе данных.

Альтернативы

Для организаций, которым мультиарендность не подходит из-за рисков или регуляторных ограничений, существуют альтернативные подходы:

Перспективы развития

С развитием технологий контейнеризации и оркестрации (Kubernetes) мультиарендность становится более гибкой. Появляются решения, позволяющие динамически перемещать арендаторов между узлами кластера без простоя. В области баз данных набирают популярность «облачные СУБД» (Snowflake, Amazon Redshift, Яндекс.Облако Managed Database), которые изначально проектируются как мультиарендные, с автоматическим управлением изоляцией и масштабированием.

Также развивается подход «мультиарендность на уровне функций» (function-level multi-tenancy), когда изоляция обеспечивается не на уровне базы данных, а на уровне бессерверных функций (serverless). Это позволяет ещё более эффективно утилизировать ресурсы, но предъявляет высокие требования к быстродействию и безопасности.

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →