Выбор варианта вычислений Azure для микрослужб
Термин вычислительная служба означает модель размещения вычислительных ресурсов, которые используются для выполнения приложения. В этой статье приведены инструкции по выбору вычислительной платформы для микрослужб. Выбор вычислительной платформы микрослужб может зависеть от более подробных требований.
Для архитектуры микрослужб используются следующие подходы:
- Развертывание микрослужб на выделенных вычислительных платформах обычно с помощью оркестратора микрослужб.
- Развертывание микрослужб на бессерверной платформе.
Хотя эти варианты не являются единственными, они оба проверенных подхода к созданию микрослужб. В приложение могут быть включены оба эти подхода.
Скачайте файл Visio для этой архитектуры.
Использование бессерверной платформы
Бессерверные платформы можно использовать для развертывания микрослужб в приложениях контейнеров Azure или Функции Azure. Приложения контейнеров и функции предоставляют бессерверные вычислительные параметры, которые выставляются на основе объема запросов, а не вычислительных ресурсов. Обе платформы также предоставляют возможность размещения рабочих нагрузок в выделенной емкости.
Развертывание микрослужб на основе кода
Если вы хотите развернуть микрослужбы в виде кода вместо их контейнеризации, может потребоваться использовать Функции Azure. Дополнительные сведения см. в списке языков программирования и сценариев, поддерживаемых функциями. Для микрослужб, которые вы разрабатываете на других языках, может потребоваться реализовать пользовательский обработчик в Функциях или рассмотреть возможность контейнеризации приложения.
Использование модели GPU
Если для микрослужбы требуется емкость GPU, например для выполнения задач машинного обучения, рассмотрите возможность выбора приложений контейнеров или Служба Azure Kubernetes (AKS) для вашей платформы. AKS может использовать любые модели GPU в Azure, а контейнерные приложения — подмножество моделей GPU для выбора.
Использование оркестраторов служб
Оркестратор обрабатывает задачи, связанные с развертыванием и управлением набором служб. К этим задачам относятся размещение служб на узлах, мониторинг состояния работоспособности служб, перезапуск неработоспособных служб, балансировка нагрузки сетевого трафика между экземплярами службы, обнаружение служб, масштабирование количества экземпляров службы и применение обновления конфигурации. Популярные оркестраторы включают Kubernetes, Azure Service Fabric, DC/OS и Docker Swarm.
Для платформы Azure мы рекомендуем рассмотреть следующие варианты:
Azure Kubernetes Service (AKS) — это управляемая служба Kubernetes. AKS подготавливает Kubernetes и предоставляет конечные точки API Kubernetes, узлы и управляет плоскостью управления Kubernetes и выполняет автоматическое обновление, автоматическое исправление, автомасштабирование и другие задачи управления. AKS предоставляет прямой доступ к API Kubernetes.
Приложения-контейнеры — это управляемая служба, основанная на Kubernetes, которая абстрагирует сложности оркестрации контейнеров и других задач управления. Контейнерные приложения упрощают развертывание и управление контейнерными приложениями и микрослужбами в бессерверной среде, предоставляя функции Kubernetes. Приложения-контейнеры идеально подходят для сценариев, когда прямой доступ к API Kubernetes не требуется.
Service Fabric — это платформа распределенных систем для упаковки и развертывания микрослужб, а также управления ими. Микрослужбы можно развертывать в Service Fabric как контейнеры, как двоичные исполняемые файлы или как надежные службы. С помощью модели программирования Reliable Services службы могут напрямую использовать API программирования Service Fabric для запроса системы, отчета о работоспособности, получения уведомлений о изменениях конфигурации и кода и обнаружения других служб.
Используйте Azure Red Hat OpenShift для развертывания полностью управляемых кластеров OpenShift . Azure Red Hat OpenShift расширяет платформу Kubernetes. Azure Red Hat OpenShift совместно работает, управляется и поддерживается Red Hat и Корпорацией Майкрософт.
Другие варианты, такие как Docker выпуск Enterprise, могут выполняться в облачной вычислительной среде в Azure. Шаблоны развертывания можно найти в Azure Marketplace.
Использование API Kubernetes
Доступ к API Kubernetes часто является фактором принятия решений при выборе параметра вычислений. AKS предоставляет прямой доступ к API Kubernetes, но приложения-контейнеры не предоставляются. Контейнерные приложения скрывают сложности Kubernetes и упрощают развертывание контейнеров. Если вы разрабатываете развертывание микрослужб для прямого взаимодействия с API Kubernetes, AKS может быть правильным выбором.
Другие факторы принятия решений
Могут возникнуть другие факторы, влияющие на выбор платформы вычислений микрослужбы. Эти факторы включают параметры сетки служб, масштабируемость платформы и наборы навыков, которые могут использоваться в организации.
Рекомендации
Эти рекомендации реализуют основные принципы платформы Azure Well-Architected Framework, которая является набором руководящих принципов, которые можно использовать для улучшения качества рабочей нагрузки. Дополнительные сведения см. в статье Microsoft Azure Well-Architected Framework.
Надежность
Надежность гарантирует, что ваше приложение позволит вам выполнить ваши обязательства перед клиентами. Дополнительные сведения см . в контрольном списке проверки конструктора для обеспечения надежности.
Одним из ключевых принципов надежности является устойчивость. Цель устойчивости — вернуть рабочую нагрузку в полное состояние после сбоя.
Если вы выбираете Функции Azure в качестве платформы вычислений микрослужб, рассмотрите возможность развертывания плана "Функции Премиум" или приложение Azure плана службы в конфигурации, избыточной в зонах. Дополнительные сведения см. в разделе "Надежность" в функциях.
Если вы выбрали AKS в качестве платформы вычислений микрослужб, вы можете повысить надежность микрослужб, развернув кластер AKS, использующий зоны доступности, с помощью уровня "Стандартный" или "Премиум" для кластеров Azure Kubernetes и увеличив минимальное количество модулей pod и узлов. Дополнительные сведения см. в рекомендациях по обеспечению надежности развертывания и кластера для AKS.
Если в качестве вычислительной платформы микрослужб выбраны приложения-контейнеры, вы можете повысить надежность с помощью зон доступности. Дополнительные сведения см. в разделе "Надежность" в приложениях контейнеров.
Безопасность
Безопасность обеспечивает гарантии от преднамеренного нападения и злоупотребления ценными данными и системами. Дополнительные сведения см. в контрольном списке проверки конструктора для безопасности.
Если вы выбираете Функции Azure в качестве вычислительной платформы для развертывания микрослужб, принципы защиты Функции Azure также применяются к микрослужбам.
Если вы выбрали AKS в качестве вычислительной платформы для развертывания микрослужб, архитектура базовых показателей безопасности AKS предоставляет рекомендации по защите вычислительной платформы. Рекомендации по обеспечению безопасности микрослужб в AKS см. в статье "Расширенная архитектура микрослужб AKS".
Если вы выбираете контейнерные приложения в качестве вычислительной платформы для развертывания микрослужб, ознакомьтесь с базовыми показателями безопасности для приложений-контейнеров для рекомендаций по обеспечению безопасности.
Оптимизация затрат
Оптимизация затрат заключается в том, чтобы подумать о способах сокращения ненужных расходов и повышения эффективности работы. Дополнительные сведения см . в контрольном списке проверки конструктора для оптимизации затрат.
При использовании оркестратора вы платите за виртуальные машины, выполняемые в кластере. При использовании бессерверного приложения вы платите только за фактические вычислительные ресурсы, которые вы используете. В обоих случаях необходимо учитывать стоимость любых дополнительных служб, таких как хранилище, базы данных и службы обмена сообщениями.
Функции Azure, приложения контейнеров и AKS предоставляют параметры автомасштабирования. Контейнерные приложения и функции предоставляют бессерверные платформы, в которых затраты основаны на потреблении и могут быть нулевыми. AKS предоставляет только выделенные параметры вычислений.
Если вы выбрали AKS в качестве вычислительной платформы для развертывания микрослужб, необходимо понять рекомендации по оптимизации затрат. Дополнительные сведения см. в разделе "Оптимизация затрат" в Служба Azure Kubernetes.
Если вы выбираете контейнерные приложения в качестве вычислительной платформы микрослужб, необходимо понять различные модели выставления счетов и решить модель развертывания микрослужб на основе требований рабочей нагрузки. Дополнительные сведения см. в разделе "Выставление счетов в приложениях контейнеров".
Если вы выбираете Функции Azure в качестве вычислительной платформы микрослужб, необходимо понять различные модели выставления счетов и решить план функций на основе требований рабочей нагрузки. Дополнительные сведения см. в разделе "Оценка затрат на основе потребления" и сведения о плане Функции Azure.
Эффективность работы
Операционное превосходство охватывает процессы, которые развертывают приложение и продолжают работать в рабочей среде. Дополнительные сведения см . в контрольном списке проверки конструктора для повышения эффективности работы.
Вы можете развернуть все варианты вычислений микрослужб, которые описаны в этой статье автоматически с помощью Terraform, Bicep и других языков сценариев. С помощью Application Insights, Azure Monitor и других решений мониторинга можно отслеживать эти вычислительные платформы и микрослужбы.
При выборе между подходом оркестратора и бессерверным подходом следует учитывать следующие факторы:
Гибкость и управление. Оркестратор позволяет управлять настройкой служб и кластером и управлять ими. Компромисс более сложный. При использовании бессерверной архитектуры вы теряете некоторую часть контроля, так как эти детали абстрагированы.
Переносимость: все оркестраторы, перечисленные в этой статье, включая Kubernetes, DC/OS, Docker Swarm и Service Fabric, могут выполняться локально или в нескольких общедоступных облаках.
Интеграция приложений: сложно создать сложное приложение, использующее бессерверную архитектуру, так как необходимо координировать, развертывать и управлять множеством небольших независимых функций. Одним из вариантов в Azure является использование Azure Logic Apps для координации набора функций Azure. Пример этого подхода см. в статье "Создание функции, которая интегрируется с Logic Apps".