Поделиться через


Архитектурные подходы для мультитенантного решения

Вы можете разрабатывать и создавать мультитенантные решения в Azure несколькими способами. В одном крайнем случае вы можете предоставить общий доступ к каждому ресурсу в решении среди всех клиентов. В другом крайнем случае можно развернуть изолированные ресурсы для каждого клиента. Может показаться простым развернуть отдельные ресурсы для каждого клиента, и это может работать для нескольких клиентов. Однако, как правило, она не имеет экономичности и затрудняет управление ресурсами. Несколько подходов находятся между этими крайностями. Каждый подход требует компромиссов между масштабированием, изоляцией, экономичностью, производительностью, сложностью реализации и управляемостью.

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

Шаблон меток развертывания (Deployment Stamps)

Мультитенантные решения часто используют шаблон меток развертывания. Этот шаблон развертывает выделенную инфраструктуру для клиента или группы клиентов. Один штамп может обслуживать нескольких арендаторов или только одного арендатора.

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

Метки с одним клиентом упрощают реализацию шаблона меток развертывания. Каждая метка функционирует независимо и не требует многotenантной логики или возможностей в прикладном уровне. Этот шаблон обеспечивает высокий уровень изоляции и помогает избежать шумной проблемы соседа. Он также предоставляет конфигурацию или настройку для клиентов в зависимости от конкретных требований, таких как целевой геополитический регион или потребности высокого уровня доступности.

Многотенантные штампы требуют дополнительных шаблонов для управления мультитенантностью в штампе, и проблема "шумного соседа" всё ещё может проявляться. Однако шаблон "Метки развертывания" обеспечивает дальнейшее масштабирование по мере роста вашего решения.

Основным недостатком использования шаблона "Deployment Stamps" для одного арендатора является стоимость инфраструктуры. Для каждого штампа требуется собственная выделенная инфраструктура, и эта инфраструктура не может быть предоставлена другим арендаторам. Кроме того, необходимо подготовить ресурсы для обработки пиковой нагрузки клиента. Убедитесь, что модель ценообразования компенсирует затраты на развертывание инфраструктуры клиента.

Метки с одним арендатором часто хорошо работают с несколькими арендаторами. По мере роста числа арендаторов управление флотом штампов для одного арендатора становится сложнее. Для примера см. "Запуск одного миллиона баз данных в Azure SQL для крупного провайдера". Вы также можете применить шаблон меток развертывания для создания многотенантных меток. Такой подход поддерживает общий доступ к ресурсам и снижает затраты на инфраструктуру.

Для реализации шаблона меток для развертывания используйте подходы к автоматическому развертыванию. В зависимости от стратегии развертывания вы можете управлять метками в конвейерах развертывания с помощью декларативной инфраструктуры в качестве кода, таких как файлы Bicep или шаблоны Terraform. Или можно создать пользовательский код для развертывания каждой метки и управления ими с помощью пакетов SDK Azure или другого средства.

Целевая аудитория

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