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