Мультитенантность#

В основе этого подхода лежат два критерия:

  1. Разделение физических и логических ресурсов.

  2. Изоляция:

  • Ресурсы, доступные тенанту, не могут быть использованы другими тенантами.

  • Ресурсы, выделяемые в рамках тенанта, должны учитывать общие доступные ресурсы в рамках компонента.

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

Основные принципы построения мультитенантности в Platform V Monitor:

  1. Перед началом работы с системой, в системе должен быть создан проект (тенант) и выданы квоты на соответствующие объекты.

  2. Сущность проекта обслуживается централизованно отдельно от объектов.

  3. Любой объект создаваемый в системе должен быть привязан к централизованному проекту.

  4. Для каждого объекта должны быть доступны CRUD операции.

  5. При наличии квотирования объекта в системе, система обязана проверять возможность создать объект основываясь на квоте выданной на проект.

  6. При наличии квотирования объекта в системе, компонент ответственный за обслуживание данных объектов обязан предоставлять API по изменению и получению заданной квоты на проект.

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

  8. Все API компонентов PVM должны строиться с учетом мультитенантности.

  9. При любом вызове 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

Доступ к объектам проекта изолированный в каждом из проектов (независимо от настроек в ролевой модели):

Доступ к объектам проекта можно настраивать в проекте:

пользователь "Ромашка" может просматривать только объекты проекта "Ромашка".

пользователь "Барсик" может просматривать все объекты проекта, т.е. и "Барсик", и "Бобик", и общие, а может быть настроен так, чтобы видеть только объекты "Барсик".

пользователь "Лютик" может просматривать только объекты проекта "Лютик".

пользователь "Бобик" может просматривать все объекты проекта, т.е. и "Барсик", и "Бобик", и общие, а может быть настроен так, чтобы видеть только объекты "Бобик".

дежурный "Цветы" может редактировать отдельно объекты проекта "Ромашка" и отдельно "Лютик".

дежурный "Животные" может редактировать все объекты проекта, т.е. и "Барсик", и "Бобик", и общие, а может быть настроен так, чтобы видеть только общие объекты.