Что такое мультитенантное приложение?

15

Согласно определению, доступному онлайн, « Многопользовательский режим - это архитектура, в которой один экземпляр программного приложения обслуживает нескольких клиентов ». Это означает, что у меня есть веб-сайт ресторана или школы, и я предоставляю доступ к другому ресторану или школе, чтобы использовать мое приложение со своими данными, используя свои учетные данные, которые я предоставляю, когда они приобретают мой продукт управления школой. Мой веб-сайт похож на schoolmanagement.com, и я предоставляю разные дочерние домены разным школьным клиентам, таким как school1.schoolmanagement.com & school2.schoolmanagement.com, но код этих двух поддоменов одинаков. Обе школы имеют различную функциональность или тема зависит от их отдельной базы данных. Так что мне нужно предоставитьschoolmanagement.com для входа в систему и после входа в систему моего клиента на основании их учетных данных, я перенаправляю на соответствующий URL-адрес, например school1.schoolmanagement.com .

Это мое понимание мультитенантного приложения. Правильно ли мое понимание? Есть ли какое-нибудь онлайн-приложение мультитенанта, через которое я могу пройти.

Номи Али
источник
1
Что вы подразумеваете под "Есть ли какое-нибудь онлайн-приложение мультитенанта, через которое я могу пройти"? Вы хотите получить исходный код, или попробовать в качестве арендатора, или запустить в качестве хоста? Как вы заметили, хостинг доменов является распространенным мультитенантным примером как для крупных, так и для небольших хостинговых компаний. Google Apps для бизнеса (или какой-либо другой бренд) также является довольно распространенным мультитенантным приложением.
Кристиан Х,
1
Пока вы на правильном пути. Мультитенантность относится к владению данными. Данные сегментированы арендаторами (владельцами). Использование приложения должно быть одинаковым по простой причине: экономия от масштаба. Хранение данных также может быть одинаковым или различным для каждого клиента. Данные не являются общедоступными для арендаторов (или, как я знаю, обычно нет).
Laiv
@KristianH спасибо за пример хостинга доменов, я понял.
Номи Али
@Laiv Так что мы можем иметь разные базы данных для каждого клиента с их отдельной конфигурацией?
Номи Али
2
Да. Это (ИМО) предпочтительный способ. Но это также и дорогой. Когда я говорю о разных базах данных, это могут быть: а) разные схемы или экземпляры БД в одной и той же РСУБД или б) совершенно разные РСУБД.
Laiv

Ответы:

9

Да это оно. Но определение в Википедии недостаточно общее. Он не касается многоуровневых архитектур или более новых форм архитектуры, таких как SOA или микросервисы.

Мульти-аренда - это программные системы и изоляция данных . Некоторые примеры:

  • Многоуровневая система с уникальной базой данных может быть мультитенантной. Пример: система SAP состоит из базы данных и нескольких серверов веб-приложений, которые предоставляют масштабируемые веб-сервисы. Это мультитенант: вы можете добавить нового клиента, не меняя работающую установку программного обеспечения, и несколько клиентов могут использовать систему, даже не зная друг о друге. Данные полностью изолированы (запатентованная технология).
  • Ваша система состоит из одного или нескольких процессов, на которых выполняются веб-сервисы, которые предоставляются различным клиентам через разные доменные имена (но это все те же процессы, которые запускают его на сервере). Изоляция данных достигается с помощью отдельных баз данных. Это определенно мультитенант.
  • Микросервисная система может аналогичным образом запускать несколько слабо связанных наборов веб-сервисов, каждый из которых использует собственную микробазу. При необходимости, чтобы увеличить масштаб, вы можете запустить новые клоны тех же микросервисов, и они через некоторую функцию регистрации найдут своих пиров и автоматически подключатся к ним, предлагая пользователю поведение одного приложения. Тогда возможны два сценария:
    • если, когда вы хотите обслуживать нового клиента, вам нужно запустить новый отдельный набор микросервисов и организовать, чтобы микросервисы для одного покупателя подключались только к микросервисам, относящимся к одному и тому же покупателю, то это один клиент.
    • но если бы вы могли обслуживать новых клиентов, используя запущенные экземпляры (а новые микросервисы были бы необходимы только для производительности), то это мультитенант
Christophe
источник
1

Я бы сказал, да, ваше понимание в основном верно. Приложение совместно используют несколько клиентов, а также данные каждого клиента заносятся в базу данных. Совместное использование одного и того же кода без размещения данных разных клиентов в одной базе данных, вероятно, не будет считаться мультитенантным.

Энди
источник
2
@NomiAli Нет, я бы не стал рассматривать этот мультитенант. Это исключает отдельную среду для каждого клиента. Одним из преимуществ мультитенанта является то, что база данных и программное обеспечение обновляются для всех клиентов одновременно. Одно развертывание, и все на последней версии. То, о чем вы говорите, это то, что у каждого клиента есть отдельная установка. Я полагаю, у вас может быть общая кодовая база, но разные базы данных, но это было бы глупо, поскольку вам нужно быть очень осторожным с изменениями вашей БД, делая ее более дорогой, что противоречит цели мультитенантности.
Энди
1
@NomiAli Схема для каждого клиента будет иметь даже больше недостатков, чем база данных для каждого клиента, управлять ею будет еще сложнее, потому что вам приходится запускать одни и те же сценарии, просто меняя имена схем. Опять же, это не невозможно, но цель многопользовательского приложения состоит в том, чтобы снизить затраты для поставщика программного обеспечения; вещи, о которых вы спрашиваете, толкают их обратно.
Энди
2
Так что, если моя одинокая база данных, в которой хранятся все хранилища, выйдет из строя или будет скомпрометирована ... Куда идет снижение затрат? И что происходит, когда каждый тенан имеет разные потребности в ресурсах и производительности? Что если они хотят получить доступ к хранилищу данных? ... Да. Разные хранилища данных на один клиент и разные схемы - это мультитенасность. Здесь бизнес-стратегия и услуги, которые мы хотим предоставить клиенту, важнее деталей реализации. Мульти-аренда - это особенность, дифференциальная стоимость. Чем ближе к потребностям клиентов, тем лучше.
Laiv
2
Это может вас заинтересовать softwareengineering.stackexchange.com/q/340531/222996
Laiv
4
Вы немного преувеличиваете аспект нескольких баз данных. Несколько баз данных - это просто дизайнерское решение; Вы можете иметь несколько баз данных, использующих одну и ту же схему, и использовать скрипт для их одновременного обновления. Все мультитенантные приложения должны отделять данные каждого клиента от других клиентов; механизм, с помощью которого это делается, является деталью реализации и зависит от таких факторов, как желаемая степень изоляции и т. д.
Роберт Харви,
0

Мульти-аренда - это архитектура, в которой один экземпляр программного приложения обслуживает нескольких клиентов. Каждый клиент называется арендатором. Арендаторам может быть предоставлена ​​возможность настраивать некоторые части приложения, такие как цвет пользовательского интерфейса (UI) или бизнес-правила, но они не могут настраивать код приложения.

В мультитенантной архитектуре несколько экземпляров приложения работают в общей среде. Эта архитектура способна работать, потому что каждый арендатор физически интегрирован, но логически разделен; Это означает, что один экземпляр программного обеспечения будет работать на одном сервере, а затем обслуживать нескольких арендаторов. Таким образом, программное приложение в мультитенантной архитектуре может совместно использовать выделенный экземпляр конфигураций, данных, управления пользователями и других свойств.

Пожалуйста, обратитесь к https://whatis.techtarget.com/definition/multi-tenancy для получения дополнительной информации ..

Как и в вашем случае, каждый участник школы, подписывающийся на ваш сайт, будет авторизован на основании ролей и разрешений для арендаторов и получит доступ к своим соответствующим базам данных через одно и то же приложение. Одно приложение, которое связано с несколькими базами данных. Если вы создаете дочерние домены для каждой школы, это приводит к тому, что они возвращаются к единой модели единой аренды.

Надеюсь, это ответит на ваш вопрос.

Сурадж Гаурайе
источник
1
Добро пожаловать в Software Engineering ! Пожалуйста, отредактируйте свой ответ, чтобы включить ссылку на его источник ; сейчас это случай плагиата .
Глорфиндель