Многоарендная облачная инфраструктура
Многоарендная облачная инфраструктура (мультитенантная архитектура, от англ. multi-tenancy) — это архитектурный подход в облачных вычислениях, при котором один экземпляр программного обеспечения или физическая инфраструктура (серверы, системы хранения данных, сети) обслуживает несколько независимых клиентов (арендаторов), обеспечивая при этом изоляцию их данных, конфигураций и производительности. Каждый арендатор воспринимает используемые ресурсы как выделенные и защищённые от других, хотя технически они разделяют общую платформу.
История и развитие
Концепция многоарендности возникла как эволюция моделей разделения ресурсов в вычислительной технике. В 1960-х годах мейнфреймы использовали технологию виртуализации для одновременной работы нескольких пользовательских сессий, что можно считать ранней формой мультитенантности. С развитием клиент-серверной архитектуры в 1980-х и 1990-х годах разделение ресурсов стало более сложным, но изоляция данных оставалась проблемой.
Настоящий прорыв произошёл в начале 2000-х годов с появлением облачных вычислений и модели «программное обеспечение как услуга» (SaaS). Компания Salesforce стала одним из пионеров, внедрив многоарендную архитектуру в свою CRM-систему. В 2006 году Amazon Web Services (AWS) запустила сервис Elastic Compute Cloud (EC2), который предоставил виртуальные серверы с мультитенантным разделением физических ресурсов. С тех пор многоарендность стала стандартом для большинства публичных облачных платформ, включая Microsoft Azure, Google Cloud Platform и Яндекс.Облако.
Принципы работы
Основная идея многоарендной инфраструктуры заключается в эффективном использовании ресурсов за счёт их совместного использования. В отличие от одноарендной модели, где каждому клиенту выделяется отдельный экземпляр программного обеспечения или физический сервер, мультитенантная архитектура позволяет одному экземпляру приложения или одному серверу обслуживать множество клиентов.
Изоляция арендаторов
Ключевым требованием является обеспечение изоляции между арендаторами. Изоляция реализуется на нескольких уровнях:
- На уровне данных: каждый арендатор имеет доступ только к своим данным, которые могут храниться в отдельных базах данных, отдельных схемах в общей базе данных или маркироваться уникальным идентификатором арендатора в общей таблице.
- На уровне приложений: код приложения проверяет принадлежность запроса к конкретному арендатору и блокирует несанкционированный доступ.
- На уровне инфраструктуры: виртуализация, контейнеризация и программно-определяемые сети (SDN) создают изолированные виртуальные среды для каждого арендатора.
Управление ресурсами
Платформа многоарендной инфраструктуры динамически распределяет вычислительные мощности, память, дисковое пространство и сетевую пропускную способность между арендаторами. Для этого используются механизмы планировщиков задач (например, Kubernetes), балансировщиков нагрузки и систем мониторинга. Важной задачей является предотвращение «шумных соседей» — ситуации, когда один арендатор потребляет непропорционально много ресурсов, ухудшая производительность других.
Типы многоарендной архитектуры
Существует несколько моделей реализации многоарендности, различающихся степенью изоляции и эффективностью использования ресурсов.
Модели на уровне базы данных
- Отдельная база данных для каждого арендатора: наиболее изолированный вариант, но требующий больших ресурсов. Подходит для клиентов с высокими требованиями к безопасности и регуляторным соответствием (например, в финансовом секторе).
- Общая база данных с отдельными схемами: каждый арендатор использует свою схему (namespace) в общей базе данных. Обеспечивает баланс между изоляцией и экономией ресурсов.
- Общая база данных с общей схемой: все арендаторы хранят данные в одних и тех же таблицах, а принадлежность к арендатору определяется столбцом-идентификатором. Наиболее экономичная, но наименее изолированная модель.
Модели на уровне приложений
- Одно приложение, множество арендаторов: один экземпляр кода обслуживает всех клиентов. Требует тщательной реализации логики изоляции.
- Множество экземпляров приложения: каждый арендатор имеет свой экземпляр приложения, но все они работают на общей инфраструктуре. Часто используется в контейнерных средах (Docker, Kubernetes).
Модели на уровне инфраструктуры
- Виртуальные машины: каждому арендатору выделяется отдельная виртуальная машина (VM) на общем гипервизоре. Обеспечивает сильную изоляцию, но с накладными расходами.
- Контейнеры: арендаторы работают в изолированных контейнерах, которые разделяют ядро операционной системы хоста. Более лёгкая альтернатива VM.
- Безсерверные вычисления (Serverless): функции обрабатываются в изолированных средах выполнения, а арендаторы оплачивают только фактическое потребление ресурсов.
Преимущества и недостатки
Преимущества
- Экономическая эффективность: провайдеры могут обслуживать множество клиентов на одной инфраструктуре, снижая затраты на оборудование, электроэнергию и обслуживание. Это позволяет предлагать услуги по более низким ценам.
- Масштабируемость: добавление новых арендаторов не требует развёртывания новых физических серверов. Ресурсы могут динамически перераспределяться.
- Упрощённое обновление: обновление программного обеспечения или исправление уязвимостей происходит один раз для всех арендаторов, что снижает нагрузку на администраторов.
- Гибкость и настройка: арендаторы могут настраивать интерфейс, функциональность и параметры безопасности в рамках предоставленных возможностей.
Недостатки
- Риски безопасности: несмотря на изоляцию, ошибки в коде или конфигурации могут привести к утечке данных между арендаторами. Примером является уязвимость «Meltdown» и «Spectre» (2018), которые затронули процессоры Intel и могли быть использованы для доступа к данным других виртуальных машин.
- Проблема «шумных соседей»: один арендатор с высокой нагрузкой может замедлить работу других, если система не имеет эффективных механизмов квотирования и приоритезации.
- Сложность управления: реализация надёжной изоляции, мониторинга и биллинга для множества арендаторов требует сложного программного обеспечения и высокой квалификации инженеров.
- Ограничения на кастомизацию: арендаторы не могут модифицировать базовое программное обеспечение, что может не подходить для специфических бизнес-требований.
Применение
Многоарендная инфраструктура широко используется в различных сферах:
- Публичные облачные провайдеры: AWS, Microsoft Azure, Google Cloud, Яндекс.Облако, VK Cloud. Все они предоставляют виртуальные серверы, базы данных и другие сервисы на основе мультитенантности.
- SaaS-приложения: Salesforce, Microsoft 365, Google Workspace, Slack, Zoom. Каждое приложение обслуживает тысячи компаний с изоляцией их данных.
- Платформы электронной коммерции: Shopify, Magento Commerce позволяют магазинам работать на общей платформе.
- Банковские и финансовые системы: некоторые банки используют мультитенантные платформы для обслуживания различных подразделений или дочерних компаний.
- Государственные информационные системы: в России, например, Единая система межведомственного электронного взаимодействия (СМЭВ) использует многоарендную архитектуру для взаимодействия различных ведомств.
Интересные факты
- Термин «арендатор» (tenant) пришёл из юридической сферы, где означает лицо, арендующее недвижимость. В облачных вычислениях он символизирует аренду вычислительных ресурсов.
- Крупнейшие облачные провайдеры управляют миллионами арендаторов. Например, AWS обслуживает более миллиона активных клиентов, многие из которых являются арендаторами.
- В 2020 году исследователи из Университета Северной Каролины продемонстрировали атаку «CloudBleed», которая позволяла извлекать данные других арендаторов в облачных средах через уязвимости в балансировщиках нагрузки.
- Многоарендность является основой для концепции «облачного суверенитета», когда данные арендаторов должны храниться в определённой юрисдикции (например, в России в соответствии с Федеральным законом № 152-ФЗ «О персональных данных»).
Источники
- Microsoft Azure Architecture Center. «Multi-tenant SaaS patterns».
- Amazon Web Services. «Multi-Tenant Isolation Patterns».
- Google Cloud Architecture Framework. «Tenancy models».
- Salesforce. «Multi-Tenant Architecture».
- NIST Special Publication 800-145. «The NIST Definition of Cloud Computing».
- Федеральный закон от 27.07.2006 № 152-ФЗ «О персональных данных».
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →