Мультитенантность#
В основе этого подхода лежат два критерия:
Разделение физических и логических ресурсов.
Изоляция:
Ресурсы, доступные тенанту, не могут быть использованы другими тенантами.
Ресурсы, выделяемые в рамках тенанта, должны учитывать общие доступные ресурсы в рамках компонента.
В мультитенантной архитектуре программные приложения работают одновременно с несколькими конфигурациями и наборами данных нескольких организаций, а каждая организация-клиент работает со своим экземпляром приложения, видя только свою конфигурацию и свой набор данных.
Основные принципы построения мультитенантности в Platform V Monitor:
Перед началом работы с системой, в системе должен быть создан проект (тенант) и выданы квоты на соответствующие объекты.
Сущность проекта обслуживается централизованно отдельно от объектов.
Любой объект создаваемый в системе должен быть привязан к централизованному проекту.
Для каждого объекта должны быть доступны CRUD операции.
При наличии квотирования объекта в системе, система обязана проверять возможность создать объект основываясь на квоте выданной на проект.
При наличии квотирования объекта в системе, компонент ответственный за обслуживание данных объектов обязан предоставлять API по изменению и получению заданной квоты на проект.
При наличии квотирования объекта в системе, компонент ответственный за обслуживание данных объектов обязан обеспечить соблюдение заданных квот.
Все API компонентов PVM должны строиться с учетом мультитенантности.
При любом вызове API неотъемлемой его частью должно быть использование ID проекта (RN) в URI параметрах вызова (например: project/{project}/someOperation).
Важно! Как и любая другая подсистема Platform V Monitor, аудит является мультитенантным. Это значит, что сбор событий аудита, работа с метамоделями и поиск - осуществляются в рамках проекта (тенанта).
Ограничения: Невозможно выполнять сквозной поиск между несколькими тенантами.
Варианты использования#
Рассмотрим варианты реализации мультитенантности на примере вымыленной компании All Inc. — компания производитель пищевых продуктов длительного хранения. Основные торговые марки — "Ромашка", "Лютик", "Барсик", "Бобик" и другие.

№ |
Вариант 1 |
Вариант 2 |
|---|---|---|
Подразделение "Животные" - общий тенант включающий в себя функциональные подразделения "Барсик" и "Бобик". |
||
1 |
Создаются 2 изолированных друг от друга Проекта (Тенанта): "Ромашка", "Лютик". |
Создается 1 обобщающий Проект (Тенант): "Животные" ("Барсик" и "Бобик"), объединяющий в себе 2 области. |
2 |
Устанавливается квота отдельно на проект "Ромашка", отдельно на "Лютик". |
Устанавливается общая квота на проект "Животные". |
3 |
Администрирование проектов происходит независимо друг от друга, даже если Администратору даны права на администрирование обоих проектов. |
Администрирование проекта происходит централизовано в зависимости от прав на администрирование объектов в проекте. |
4 |
Создаются объекты (топики, индексы [оперативные, архивные, аналитические], справочники, трейсы, обработки, дашборды, каналы нотификаций, правила уведомлений, osiris проверки, дашборды и другие) в каждом из проектов. |
Создаются объекты в проекте "Животные", с признаком области в названии или обобщающие, как показано на схеме: барсик_metrics, бобик_metrics, животные_metrics. |
5 |
Доступ к объектам проекта изолированный в каждом из проектов (независимо от настроек в ролевой модели): |
Доступ к объектам проекта можно настраивать в проекте: |
пользователь "Ромашка" может просматривать только объекты проекта "Ромашка". |
пользователь "Барсик" может просматривать все объекты проекта, т.е. и "Барсик", и "Бобик", и общие, а может быть настроен так, чтобы видеть только объекты "Барсик". |
|
пользователь "Лютик" может просматривать только объекты проекта "Лютик". |
пользователь "Бобик" может просматривать все объекты проекта, т.е. и "Барсик", и "Бобик", и общие, а может быть настроен так, чтобы видеть только объекты "Бобик". |
|
дежурный "Цветы" может редактировать отдельно объекты проекта "Ромашка" и отдельно "Лютик". |
дежурный "Животные" может редактировать все объекты проекта, т.е. и "Барсик", и "Бобик", и общие, а может быть настроен так, чтобы видеть только общие объекты. |