Мультитенантное решение SaaS в Azure

Microsoft Entra ID
Служба приложений Azure
Azure DNS
Azure Front Door
Служба Azure Kubernetes (AKS)

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

Архитектура

Схема, на которой показана мультитенантная архитектура SaaS, настроенная в Azure в двух разных регионах.

Скачайте файл Visio для этой архитектуры.

Рабочий процесс

Набор технологий Azure обеспечивает безопасность и балансировку нагрузки трафика.

  1. Microsoft Azure Front Door обрабатывает несколько начальных задач:

    • Обработка первоначального запроса

    • Балансировка нагрузки между регионами

    • Завершение и разгрузка SSL(HTTPS)

    • Отработка отказа при возникновении регионального сбоя

  2. Azure DNS управляет записями DNS и обеспечивает маршрутизацию в правильную конечную точку Azure Front Door.

  3. Архитектура использует идентификатор Microsoft Entra в качестве поставщика удостоверений для проверки подлинности.

  4. После маршрутизации в соответствующий регион Шлюз приложений маршруты и баланс нагрузки направляет запросы в соответствующую службу приложение Azure.

  5. В этой архитектуре Служба приложений является предпочтительной службой для:

    • работы любого приложения на основе HTTP;

    • обслуживания веб-содержимого;

    • предоставления API-интерфейсов RESTFUL;

    • реализации бизнес-логики интерфейсного приложения.

    Для Службы приложений можно настроить автоматическое увеличение и уменьшение масштаба. В этом случае Служба приложений будет оптимальным решением для масштабирования множества HTTP-запросов клиента по требованию.

  6. Службы уровня доступа к данным также масштабируются независимо на основе нагрузки. Службы данных управляют моделями данных, клиентами подключений и драйверами. Службы также предоставляют согласованный интерфейс данных для всех служб более высокого уровня, которые будут использовать данные в приложении. Эти службы данных можно развернуть и масштабировать с помощью Службы Azure Kubernetes (AKS). Каждый кластер AKS отвечает за набор связанных функций на уровне. AKS может реализовать архитектуру микрослужб, содержащую ряд контейнеров, каждый из которых инкапсулирует конкретные функциональные возможности в кластере. Это позволяет обеспечить высокую степень абстракции и отмены взаимодействия в коде. Кроме того, кластеры можно масштабировать по отдельности, чтобы учитывать повышенную нагрузку от нескольких клиентов. При увеличении нагрузки каждый кластер может вертикально увеличивать масштаб своих ресурсов. Вертикальное увеличение масштаба не влияет на другие кластеры в группе ресурсов, если нагрузка на них не увеличивается в той же степени.

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

Компоненты

Основные компоненты — это предлагаемые компоненты для архитектуры в этом решении. Если какой-то основной компонент не подходит, изучите список альтернативных компонентов.

Основные компоненты

  • Azure Front Door — региональная подсистема балансировки нагрузки, которая направляет трафик клиента в правильный регион. Он может выполнить отработку отказа во втором регионе, если произошел региональный сбой, и он может защитить точку входа в Интернет через Azure Брандмауэр веб-приложений.

  • Идентификатор Microsoft Entra: выступает в качестве поставщика удостоверений для всего приложения, принудительной проверки подлинности и сквозной авторизации запроса в приложении.

  • Azure DNS — служба размещения в Azure для разрешения доменных имен. В мультитенантном решении несколько клиентов обращаются к решению через собственные отдельные домены. Используйте Azure DNS для настройки и разрешения клиентских запросов к правильному стеку приложений.

  • Шлюз приложений — направляет и распределяет нагрузку трафика внутри приложения между различными службами, которые удовлетворяют бизнес-потребности клиента. Хотя Azure Front Door распределяет нагрузку между регионами высокого уровня, Шлюз приложений этой службы осведомлен о нагрузке на отдельные службы в группе. Вместе Azure Front Door и Шлюз приложений обеспечивают комплексную балансировку нагрузки на всех уровнях в мультитенантном решении. Дополнительные сведения о вариантах балансировки нагрузки в Azure см. в этой статье с обзором балансировки нагрузки Azure.

  • Служба приложений — это основная служба Azure для веб-приложений и веб-API. Безопасность интегрируется со службами, такими как Идентификатор Microsoft Entra и Azure Key Vault. Вы можете настроить автоматическое масштабирование. Кроме того, объем ресурсов, доступных для масштабирования, гибкий между различными планами Служба приложений, в которых приложение может выполняться. Служба приложений также может использовать интегрированные возможности DevOps для непрерывной интеграции и развертывания в нескольких средах. Эти и другие вспомогательные функции платформы Azure позволяют разработчикам сосредоточиться на разработке своих приложений.

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

    • Моделирование данных

    • Подключение к источнику данных

    • Извлечение, преобразование и загрузка (ETL)

    • Импорт и экспорт

    Разработка этих небольших компонентов в виде микрослужб на основе контейнеров является идеальным сценарием для развертывания в кластер AKS. Средства автомасштабирования, балансировки нагрузки и возможности обновления встроены в платформу. AKS легко интегрируется со стратегией непрерывной интеграции и непрерывной поставки (CI/CD) с помощью доступных функций DevOps и Реестра контейнеров Azure.

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

  • Когнитивный поиск Azure (прежнее название — Поиск Azure) — служба, которая привносит в приложение мощный механизм индексирования и обработки запросов. Она предоставляет клиентам доступ к функциональным возможностям запросов. Она может также использовать возможности искусственного интеллекта Azure для обогащения и улучшения функциональности запросов. Когнитивный поиск Azure может учитывать мультитенантность, используя стратегию "индекс на клиента" или "служба на клиента".

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

Альтернативные компоненты

  • Azure Масштабируемые наборы виртуальных машин. Позволяет развертывать службы в среде виртуальной машины, которая масштабируется и увеличивается автоматически при необходимости. Масштабируемые наборы виртуальных машин хорошо интегрируются с Load Balancer или Шлюз приложений для автоматической балансировки нагрузки по мере увеличения масштабируемого набора. Масштабируемые наборы виртуальных машин обеспечивают уровень масштабируемости, необходимый для этого решения. Однако во многих случаях управлять всей средой виртуальных машин не требуется, поэтому этот уровень стека можно передать Службе приложений или AKS.

  • База данных SQL Azure — поддерживает реализацию в виде отдельных выделенных экземпляры в качестве замены Эластичных пулов. Использование Базы данных SQL Azure увеличивает накладные расходы на непосредственное управление экземпляром и способствует увеличению затрат на выделенные ресурсы. Тем не менее, это приемлемая альтернатива для использования в случае, когда клиенту требуется выделенный сервер. В частности, клиенту может потребоваться больше контроля над экземпляром и выделенными доступными ресурсами. Клиенты, требующие выделенного SQL Server, могут существовать параллельно с клиентами в конфигурации эластичного пула. Вы можете сделать уровень баз данных SQL одним из вариантов ценообразования, доступным клиентам при покупке лицензий на SaaS.

  • SQL Server на виртуальных машинах — это еще один вариант развертывания баз данных SQL. Клиент может иметь существующую ИТ-инфраструктуру и существующие серверы SQL Server в локальной среде. В этом случае клиент может использовать текущие лицензии либо в качестве полной миграции, либо в гибридном сценарии. Из-за отсутствия связей в SaaS уровень данных приложения может применяться к любым Базам данных SQL с помощью конфигурации.

Подробности сценария

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

Azure предлагает ряд служб для управления программным решением, которое:

  • гибко управляет базами данных для всех клиентов;

  • масштабирует уровень бизнес-операций и логики для предотвращения появления узких мест на вычислительном уровне;

  • интегрирует доступность и региональную отработку отказа;

  • обеспечивает комплексную безопасность на всех уровнях решения.

Потенциальные варианты использования

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

  • Разработка решения по управлению отношениями с клиентами (CRM), которое клиенты могут вывести на рынок и продать заказчикам.

  • Реализация системы управления содержимым (CMS) и ее доставка нескольким пользователям с помощью этой архитектуры.

Рекомендации

Эти рекомендации реализуют основные принципы платформы Azure Well-Architected Framework, которая является набором руководящих принципов, которые можно использовать для улучшения качества рабочей нагрузки. Дополнительные сведения см. в статье Microsoft Azure Well-Architected Framework.

Мультитенантный режим

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

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

Вы управляете клиентскими базами данных аналогичным образом вне стека вычислений, так как запрос клиента может поступать из любого из региональных стеков. Многие клиентские базы данных могут существовать в одном Эластичном пуле, изолированном и защищенном с помощью прозрачного шифрования данных (TDE). Вы можете настроить каждую базу данных для шифрования данных с помощью ключа, управляемого клиентом, и расшифровать данные только вовремя (JIT). JIT-расшифровка защищает клиентские данные от разработчика и других клиентов. Система использует эластичные пулы для предоставления ресурсов по требованию клиентам, назначенным ему, при этом сохраняя затраты на вас низкими. Каждому Эластичному пулу можно назначить политики репликации, чтобы обеспечить резервное копирование и отработку отказа для клиентских данных. По мере подключения к системе новых клиентов переводите дополнительные Эластичные пулы в сетевой режим.

Дополнительные сведения о мультитенантных решениях см. в статье "Архитектор мультитенантных решений" в Azure.

Надежность

Надежность гарантирует, что ваше приложение позволит вам выполнить ваши обязательства перед клиентами. Дополнительные сведения см. в разделе "Обзор основы надежности".

Доступность и масштабируемость

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

Безопасность

Безопасность обеспечивает гарантии от преднамеренного нападения и злоупотребления ценными данными и системами. Дополнительные сведения см. в разделе "Общие сведения о компоненте безопасности".

Система обеспечивает общую безопасность на каждом уровне приложения.

  • Azure Front Door предоставляет встроенную поддержку HTTPS для своих доменов. Это означает, что система может шифровать весь трафик в приложение SaaS. Azure Front Door также реализует Брандмауэр веб-приложений Azure, защищая стек SaaS от атак на границе, прежде чем система направит запросы в приложение.

  • Каждый стек приложений в каждом регионе находится в виртуальной сети Azure. Система ограничивает передачу трафика в виртуальную сеть, принимая запросы от Azure Front Door, защищая все службы приложений от внешнего трафика. Находясь внутри защищенного брандмауэра, Шлюз приложений может завершать SSL-подключение и обеспечивать эффективную балансировку нагрузки и маршрутизацию внутри приложения.

  • Вы можете безопасно управлять всеми учетными данными, секретами и строка подключения с помощью Azure Key Vault. Управляя этими конфиденциальными данными в качестве секретов, разработчики могут внедрять учетные данные в приложение во время развертывания. Это гарантирует, что конфиденциальная информация не попадет в код. Благодаря использованию секретов доступ к базам данных будет защищен от нарушений в коде или атаки типа "злоумышленник в середине".

  • В этом сценарии данные нескольких клиентов могут существовать параллельно на одном сервере базы данных, если не одна и та же база данных. TDE и JIT-расшифровка защищают данные в базе данных. Система шифрует все неактивные данные в базе данных и расшифровывает их только по запросу клиента. Клиенты могут предоставлять собственные ключи, которое можно хранить Azure Key Vault для управления шифрованием для нескольких клиентов. Он защищает конечные клиентские данные, предотвращает у разработчика доступ к данным клиента, изолирует данные между клиентами и помогает соответствовать требованиям к безопасности и данным.

Оптимизация затрат

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

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

AKS предоставляет экономически эффективную службу контейнеров. Плата за узлы AKS взимается только при их использовании, поэтому вы платите только за:

  • виртуальные машины;

  • потребленные ресурсы хранилища и сети;

  • масштабирование, непосредственно связанное с использованием.

Использование AKS в качестве службы уровня данных идеально подходит, если вы хотите сократить затраты. Для оценки стоимости уровня экземпляров AKS воспользуйтесь Калькулятором цен на Службы Kubernetes.

Эластичный пул SQL Azure является в высшей степени рентабельным решением для мультитенантного сценария. Базы данных клиентов в Эластичном пуле будут совместно использовать доступные ресурсы. По мере изменения спроса между клиентами с течением времени объем ресурсов также будет меняться. Эластичный пул SQL Azure предоставляет максимум доступных ресурсов для запрошенных баз данных без дополнительных затрат на ресурсы для всех баз данных. Служба поддерживает низкий уровень расходов для разработчика SaaS и клиентов. Воспользуйтесь Калькулятором цен на Базу данных SQL Azure, чтобы рассчитать цены и определить уровень и количество ресурсов, необходимых для обслуживания клиентов и их данных.

  • Модель ценообразования на основе виртуальных ядер обеспечивает большую гибкость при масштабировании в соответствии с требуемыми ресурсами. Кроме того, вам будет доступно Преимущество гибридного использования Azure Существующие лицензии на SQL Server предоставляют скидку на ресурсы SQL с виртуальными ядрами в облаке. Таким образом, в экземпляре, когда локальные серверы уже являются частью инфраструктуры разработчика, вы можете управлять затратами еще больше с помощью этих скидок. Вы можете оценить потенциальную экономию с помощью калькулятора экономии Преимущество гибридного использования Azure.

  • Кроме того, сократить затраты на ресурсы SQL Server можно при покупке зарезервированной емкости Базы данных SQL Azure. Приобретение зарезервированной емкости означает приверженность долгосрочной База данных SQL использования. Срок использования обычно составляет от одного года до трех лет. Взамен вы получаете скидки на вычислительную стоимость резервируемых ресурсов. Например, вы можете зарезервировать 32 виртуальных ядер общего назначения в течение года, что снижает стоимость этих 32 виртуальных ядер в течение этого года. Наличие нескольких клиентов, приобретающих лицензии для SaaS, является сильным показателем того, что использование зарезервированной емкости соответствует решению, и идеальное экономию затрат в этой рабочей нагрузке.

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

Цены Azure Front Door зависят от объема передачи данных и выхода из службы. Для исходящих данных цены зависят от зоны. В разных регионах будут действовать разные цены. Если вы столкнулись с разницей в ценах, оцените затраты отдельно. Цена включает в себя некоторую маршрутизацию и емкость домена, но система несет затраты за последние начальные ограничения. Azure Брандмауэр веб-приложений взимает небольшую дополнительную плату за политику или правило. Сведения о ценах на Azure Front Door можно найти на этой странице.

Ценообразование для Когнитивного поиска Azure представляет собой многоуровневую систему. Для разработки и тестирования доступен уровень "Бесплатный". Затем на каждом уровне взимается почасовая плата за каждый выделенный экземпляр Когнитивного поиска. При увеличении уровней также растет общий объем хранилища, количество индексов и пределы горизонтального увеличения масштаба. Когнитивный поиск Azure позволяет извлекать изображения как услугу по одному тарифу на всех платных уровнях.

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