Мультитенантность программного обеспечения — это архитектура программного обеспечения , в которой один экземпляр программного обеспечения работает на сервере и обслуживает несколько клиентов. Системы, спроектированные таким образом, являются «совместными» (а не «выделенными» или «изолированными»). Арендатор — это группа пользователей, которые имеют общий доступ с определенными привилегиями к экземпляру программного обеспечения. В мультитенантной архитектуре программное приложение предназначено для предоставления каждому арендатору выделенной доли экземпляра, включая его данные, конфигурацию, управление пользователями, индивидуальные функции арендатора и нефункциональные свойства . Мультиарендность отличается от многоэкземплярных архитектур, в которых отдельные экземпляры программного обеспечения работают от имени разных арендаторов. [1]
Некоторые комментаторы считают мультиарендность важной особенностью облачных вычислений . [2] [3]
Мультитенантные приложения произошли от трех типов сервисов и объединили в себе некоторые их характеристики:
В мультиарендной среде несколько клиентов используют одно и то же приложение, работающее в одной операционной системе, на одном и том же оборудовании и с одним и тем же механизмом хранения данных. Различие между клиентами достигается во время разработки приложения, поэтому клиенты не делятся и не видят данные друг друга. Сравните это с виртуализацией , при которой компоненты трансформируются, позволяя каждому клиентскому приложению работать на отдельной виртуальной машине. [5]
Некоторые компании активно продвигают принцип мультиарендности и используют его как источник конкурентной дифференциации. Использование мультиарендности растет с каждым днем. [6]
Мультиарендность позволяет сэкономить средства сверх базовой экономии за счет масштаба , достижимой за счет консолидации ИТ-ресурсов в рамках единой операции. [7] Экземпляр приложения обычно требует определенного объема памяти и накладных расходов на обработку, которые могут быть существенными, если умножить их на множество клиентов, особенно если клиентов мало. Мультиарендность снижает эти накладные расходы, распределяя их между многими клиентами. Дополнительная экономия средств может быть достигнута за счет затрат на лицензирование базового программного обеспечения (например, операционных систем и систем управления базами данных). Грубо говоря, если вы можете запустить все на одном экземпляре программного обеспечения, вам нужно купить только одну лицензию на программное обеспечение . Экономия средств может затмиться сложностью масштабирования отдельного экземпляра по мере роста спроса — повысить производительность экземпляра на одном сервере можно только за счет покупки более быстрого оборудования, такого как быстрые процессоры, больший объем памяти и более быстрые дисковые системы. и обычно эти затраты растут быстрее, чем если бы нагрузка была разделена между несколькими серверами примерно с одинаковой совокупной мощностью. [ нужна ссылка ] Кроме того, разработка мультитенантных систем [8] является более сложной, а тестирование безопасности более строгим из-за того, что данные нескольких клиентов объединяются.
Одной из наиболее убедительных причин, по которой поставщики/ независимые поставщики программного обеспечения используют мультиарендность, являются присущие ей преимущества агрегирования данных . Вместо сбора данных из нескольких источников данных с потенциально разными схемами баз данных все данные для всех клиентов хранятся в одной схеме базы данных. Таким образом, выполнять запросы к клиентам, анализировать данные и искать тенденции становится намного проще. Эта причина, вероятно, преувеличена, поскольку одним из основных требований мультиарендности является необходимость предотвращения доступа поставщика услуг к информации о клиентах (арендаторах). Кроме того, принято отделять операционную базу данных от базы данных майнинга (обычно из-за разных характеристик рабочей нагрузки), что еще больше ослабляет аргумент.
Из-за дополнительной сложности настройки и необходимости поддерживать метаданные для каждого клиента мультитенантные приложения требуют больших усилий по разработке. Необходимо учитывать такие факторы, как векторное упорядочение данных, инфраструктура шифруемых алгоритмов и виртуализированные интерфейсы управления. [9]
Мультиарендность упрощает процесс управления релизами. В традиционном процессе управления выпусками пакеты, содержащие изменения кода и базы данных, распространяются на клиентские настольные компьютеры и/или серверные машины; в случае с одним экземпляром это будет один серверный компьютер на каждого клиента. Эти пакеты затем необходимо установить на каждую отдельную машину. В мультитенантной модели пакет обычно необходимо установить только на одном сервере. Это значительно упрощает процесс управления релизами, а масштаб больше не зависит от количества клиентов.
В то же время мультиарендность увеличивает риски и последствия, связанные с применением новой версии выпуска. Поскольку существует один экземпляр программного обеспечения, обслуживающий несколько клиентов, обновление этого экземпляра может привести к простою всех клиентов, даже если обновление запрошено и полезно только для одного клиента. Кроме того, некоторые ошибки и проблемы, возникшие в результате применения новой версии, могут проявиться в персонализированном представлении приложения другими арендаторами. Из-за возможного простоя момент применения релиза может быть ограничен в зависимости от графика использования времени более чем одним арендатором.
Мультитенантные приложения обычно должны обеспечивать высокую степень настройки для поддержки потребностей каждой целевой организации. Кастомизация обычно включает в себя следующие аспекты:
Ожидается, что мультитенантные приложения будут обеспечивать адекватную безопасность , надежность и производительность [10] между несколькими арендаторами, что обеспечивается уровнями ниже приложения в случае многоэкземплярных приложений.
Затраты на перепроектирование приложений для мультиарендности могут быть значительными, особенно для поставщиков программного обеспечения, которые продолжают предлагать локальную одноарендную версию своего продукта. В конечном итоге они вынуждены поддерживать два разных продукта со всеми вытекающими отсюда затратами.
Все более жизнеспособным альтернативным путем к мультиарендности, который устраняет необходимость значительных архитектурных изменений, является использование технологии виртуализации для размещения нескольких изолированных экземпляров приложения на одном или нескольких серверах. Действительно, когда приложения переупаковываются в виртуальные устройства, один и тот же образ устройства может быть развернут на хостах независимых поставщиков программного обеспечения, локально или в доверенных сторонних местах и даже со временем перенесен с одного места развертывания на другое.
Мульти аренды. Совместное использование единого, объединенного в пул рабочего экземпляра всей инфраструктуры сверху вниз — это больше, чем просто удобство поставщика; это единственный способ действительно добиться масштабирования облака.
В облаке мультитенантные сервисы являются стандартными: сервисы данных, сервисы DNS, оборудование для виртуальных машин, балансировщики нагрузки, управление идентификацией и т. д.