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

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

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

История

Идея разделения вычислительных ресурсов между несколькими пользователями восходит к эпохе мейнфреймов 1960-х годов, когда системы с разделением времени (time-sharing) позволяли множеству пользователей одновременно работать с одним компьютером через терминалы. Однако современная концепция мультитенантности сформировалась в конце 1990-х — начале 2000-х годов с развитием веб-приложений и SaaS-модели (Software as a Service). Первыми крупными коммерческими реализациями стали Salesforce.com (запущен в 1999 году) и NetSuite. Именно эти компании доказали, что можно эффективно обслуживать тысячи клиентов на одной кодовой базе, обеспечивая при этом строгую изоляцию данных.

Принципы и архитектура

Основные характеристики

Мультитенантная среда строится на трёх базовых принципах:

Модели развёртывания

Выделяют три основные архитектурные модели мультитенантности:

  1. Один экземпляр — одна база данных на тенанта (Database per Tenant). Каждому клиенту выделяется отдельная база данных, но приложение остаётся общим. Это обеспечивает высокую изоляцию, но увеличивает стоимость управления базами данных.
  2. Один экземпляр — одна схема на тенанта (Schema per Tenant). Все тенанты используют одну базу данных, но каждый имеет собственную схему (набор таблиц). Компромисс между изоляцией и эффективностью.
  3. Один экземпляр — общая база данных с идентификатором тенанта (Shared Database, Shared Schema). Все данные хранятся в одних и тех же таблицах, а принадлежность записи к тенанту определяется специальным полем (tenant_id). Наиболее экономичная, но самая сложная в реализации модель с точки зрения безопасности.

Идентификация и маршрутизация

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

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

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

Недостатки и риски

Применение

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

Мультитенантность — стандарт для большинства современных SaaS-продуктов: CRM-системы (Salesforce, HubSpot), офисные пакеты (Google Workspace, Microsoft 365), платформы для управления проектами (Jira, Asana), сервисы электронной почты (Gmail, Outlook). В России мультитенантную архитектуру используют, например, платформа «1С:Предприятие» в облачной версии (1С:Fresh) и сервис «Яндекс.Облако».

Платформы для разработки

PaaS-решения (Platform as a Service) также реализуют мультитенантность. Например, Heroku, Google App Engine, Microsoft Azure App Service позволяют разработчикам запускать приложения в общем кластере, изолируя их друг от друга.

Базы данных

Многие современные СУБД поддерживают мультитенантность на уровне архитектуры. PostgreSQL, Oracle, MySQL предлагают механизмы для создания изолированных схем или баз данных. Специализированные облачные базы данных, такие как Amazon Aurora, Snowflake, также построены на принципах мультитенантности.

Корпоративные системы

В крупных организациях мультитенантная среда используется для разделения доступа между отделами, филиалами или дочерними компаниями. Например, ERP-системы (SAP, Oracle E-Business Suite) могут быть развёрнуты в мультитенантном режиме, чтобы каждая бизнес-единица имела своё изолированное пространство.

Критика и проблемы

Основные претензии к мультитенантной архитектуре связаны с безопасностью и производительностью. В 2019 году исследователи из компании Wiz обнаружили уязвимость в мультитенантной среде Microsoft Azure, позволявшую получить доступ к данным других клиентов через неправильно настроенные контейнеры. В 2021 году в сервисе Google Workspace была выявлена проблема с изоляцией метаданных. Такие инциденты подчёркивают, что мультитенантность требует тщательного проектирования на уровне как приложения, так и инфраструктуры.

Кроме того, мультитенантность может быть невыгодна для клиентов с жёсткими требованиями к соответствию (compliance), например, в финансовом секторе или государственных учреждениях. В таких случаях предпочтительнее выделенная инфраструктура (single-tenant).

Интересные факты

Источники

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

На главную BFOmetr →