Как сделать из не тенантного приложения мультитенантное

14 января в 15:30

image

Не буду давать определение мультитенантности, об этом уже несколько раз писали тут и тут. А лучше напрямик перейдем к теме статьи и начнем с таких вопросов:

Почему приложение не делают сразу мультитенантным?

Бывает, что приложение изначально разрабатывают для инсталляции только на стороне клиента. Можно назвать такое приложение коробочным или software as a product. Клиент покупает коробку и разворачивает приложение на своих серверах (примеров таких приложений много).

Но со временем компания разработчик может задуматься, что хорошо бы разместить приложение в облаке, чтобы его арендовали (software as a service). Этот способ развертывания имеет плюсы и для клиентов, и для компании разработчика. Клиенты могут быстро получить работающую систему и не задумываться о развертывании и администрировании. При аренде приложение не требуется больших единовременных капиталовложений.

А компания разработчик получит новых клиентов, а так же новые задачи: развертывание приложения в облаке, администрирование, обновление на новые версии, миграцию данных при обновлении, бэкап данных, мониторинг скорости работы и ошибок, исправление проблем в случае их появления.

Почему приложение в облаке должно быть мультитенантным?

Чтобы разместить приложение в облаке необязательно делать его мультитенантным. Но тогда будет следующая проблема: для каждого клиента придется развернуть выделенный стенд в облаке с арендуемым приложением, а это уже затратно, как с точки зрения потребления ресурсов облачного стенда, так и с точки зрения администрирования. Выгоднее реализовать в приложении мультитенантность, чтобы один экземпляр мог обслуживать нескольких клиентов (организаций).

Если приложение тянет 1000 одновременно работающих пользователей, то выгодно сгруппировать клиентов (организации) так, чтобы суммарно они дали желаемую нагрузку в 1000 пользователей на один экземпляр приложения. И тогда будет самое оптимальное потребление облачных ресурсов.

Предположим, что приложение арендует организация для работы 20 пользователей (сотрудники организации). Тогда нужно сгруппировать 50 таких организаций, чтобы выйти на нужную нагрузку. При этом важно изолировать организации друг от друга. Организация арендует приложение, пускает туда только своих сотрудников, хранит только свои данные, и не видит, что другие организации тоже обслуживаются этим же приложением.

Реализация мультитенантности не означает, что приложение больше нельзя развернуть локально на сервере организации. Можно поддерживать два способа развертывания одновременно:

  • мультитенантное приложение в облаке;
  • однотенантное приложение на сервере клиента.

Наше приложение прошло подобный путь: от не тенантного к мультитенантному. И в этой статье я поделюсь некоторыми подходами в разработке мультитенантности.

Как реализовать мультитенантность в приложении, которое спроектировано как не тенантное? - читай в продолжении на Хабр.

DIRECTUM | Тесты визуальной регрессии. Перезагрузка

Тесты визуальной регрессии. Перезагрузка

21 декабря 2019 в 14:00

Мы сами написали тесты визуальной регрессии на Gemini, а потом сами столкнулись с их несовершенством и поменяли движок.
Что из этого получилось.

Читать