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

Azure

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

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

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

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

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

При использовании меток с одним клиентом шаблон меток развертывания, как правило, прост в реализации, так как каждая метка, скорее всего, не знает о других, поэтому логику или возможности мультитенантности не нужно встраивать в уровень приложений. Если у каждого клиента есть собственная выделенная метка, этот шаблон обеспечивает самую высокую степень изоляции и устраняет проблему "Шумный сосед". Он также предоставляет возможность для клиентов настраиваться или настраиваться в соответствии с их собственными требованиями, например находиться в определенном геополитическом регионе или иметь определенные требования к высокой доступности.

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

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

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

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

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

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

Дальнейшие действия

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