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

Azure

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

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

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

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

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

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

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

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

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

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

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

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

Следующие шаги

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