Anton Sidorov homepage

Bookmark this to keep an eye on my project updates!

Follow me on GitHub

RMQ multi-tenancy

Зачем

  • Бизнес требования
    • Юристы: перекрестные соглашения между ЮЛ о владельце ис и разрешении на использование другим ЮЛ
    • Если цель использования ПДН единая, то можно в одной БД хранить. Методика ПДН единая для ГК. 152 ФЗ п3 ст5.
    • Но раздельное хранение упрощает процесс проверки
  • отказоустойчивость Availability, Надежность Reliability
    • Изоляция сбоев. Данные и сбои одного ЮЛ не влияют на другого
    • Обеспечьте избыточность приложения, чтобы устранить все единые точки отказа.
  • Изоляция данных, доступа
    • Аутентификация
    • Изоляция уязвимостей
    • ПДН
  • Разные подходы на разных уровнях слоях по
    • Интерфейс пользователя
    • Сценарии бизнеса controller
    • Бизнес логика
    • Инфраструктура: бд, шина, сетевой доступ
  • Доступность (high availability),
    • Масштабироварие ЮЛ раздельно. Бюджет на инфраструктуру раздельный.
    • Различный уровень обслуживания необходимо предоставить SLA
      • Требуется ли Заказчику более высокая производительность или более надежные гарантии, чем другие?
  • Управляемость. Насколько тяжело управлять приложением, выполнять мониторинг, развертывать обновления
    • Саппорт по ЮЛ разделен. Разные админы могут быть с ростом объёмов ЮЛ.
    • Бизнес владельцы разные, стратегии развития. Продукты
  • Развитие параллельно фич, уникальных.
    • Есть ли у ваших клиентов необычные или особые требования?
  • Стоимость владения ТСО
    • Общая инфраструктура может использоваться несколькими клиентами, поэтому она дешевле.
  • Рекомендации rmq
    • Короткие очереди
  • При получении запроса для определенного логического клиента необходимо сопоставить его с физическим развертыванием, которое содержит данные этого клиента

By Virtual host (VH)

  • 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