RMQ multi-tenancy
Зачем
- Бизнес требования
- Юристы: перекрестные соглашения между ЮЛ о владельце ис и разрешении на использование другим ЮЛ
- Если цель использования ПДН единая, то можно в одной БД хранить. Методика ПДН единая для ГК. 152 ФЗ п3 ст5.
- Но раздельное хранение упрощает процесс проверки
- отказоустойчивость Availability, Надежность Reliability
- Изоляция сбоев. Данные и сбои одного ЮЛ не влияют на другого
- Обеспечьте избыточность приложения, чтобы устранить все единые точки отказа.
- Изоляция данных, доступа
- Аутентификация
- Изоляция уязвимостей
- ПДН
- Разные подходы на разных уровнях слоях по
- Интерфейс пользователя
- Сценарии бизнеса controller
- Бизнес логика
- Инфраструктура: бд, шина, сетевой доступ
- Доступность (high availability),
- Масштабироварие ЮЛ раздельно. Бюджет на инфраструктуру раздельный.
- Различный уровень обслуживания необходимо предоставить SLA
- Требуется ли Заказчику более высокая производительность или более надежные гарантии, чем другие?
- Управляемость. Насколько тяжело управлять приложением, выполнять мониторинг, развертывать обновления
- Саппорт по ЮЛ разделен. Разные админы могут быть с ростом объёмов ЮЛ.
- Бизнес владельцы разные, стратегии развития. Продукты
- Развитие параллельно фич, уникальных.
- Есть ли у ваших клиентов необычные или особые требования?
- Стоимость владения ТСО
- Общая инфраструктура может использоваться несколькими клиентами, поэтому она дешевле.
- Рекомендации rmq
- Короткие очереди
- При получении запроса для определенного логического клиента необходимо сопоставить его с физическим развертыванием, которое содержит данные этого клиента
By Virtual host (VH)
- логическое разделение (namespace) можно сделать на уровне vhosts
- auth, разграничение доступа к данным
- масштабирование по юл,
- Export import config VH
- Http api создание, управление VH
- Минусы:
- изменения очередей и тп как накатывать на все ЮЛ?
- Config alter есть? Policy, генерация из кода
By topic
- topic pattern and Routing/binding key per customer is better than vhost due to resource consumption overhead (for us rabbitmq console is internal/not exposed to customers).
- direct, topic, headers and fanout
TODO
- Exchange to exchange binding