Базовая архитектура Azure Spring Apps

Шлюз приложений Azure
Azure Key Vault
Azure Spring Apps
База данных Azure для MySQL

В этой эталонной архитектуре описывается запуск рабочих нагрузок Java Spring Boot в Azure Spring Apps. В проекте используется избыточность зоны для обеспечения высокой доступности. Реализуйте эту структуру, чтобы предотвратить сбой приложения в случае сбоя во всех центрах обработки данных в зоне.

Эта архитектура поможет вам:

  • Увеличьте доступность приложения по сравнению с развертыванием в одной зоне.
  • Увеличьте общую устойчивость и цель уровня обслуживания (SLO) приложения.

Это решение представляет базовую стратегию развертывания Azure Spring Apps. Другие решения, которые создаются на этой архитектуре, см. в статье "Развертывание Azure Spring Apps в нескольких регионах " и azure Spring Apps, интегрированных с целевыми зонами.

Совет

Логотип GitHubПример реализации, иллюстрирующий некоторые варианты проектирования этой архитектуры. Рассмотрим эту реализацию как первый шаг к рабочей среде.

Архитектура

На следующей схеме показана архитектура этого подхода:

Схема с эталонной архитектурой Azure Spring Apps с несколькими регионами.Скачайте файл Visio для этой архитектуры.

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

Этот рабочий процесс соответствует предыдущей схеме:

  1. Пользователь обращается к приложению с помощью имени узла HTTP приложения, например www.contoso.com. Azure DNS используется для разрешения запроса на это имя узла в Шлюз приложений Azure общедоступной конечной точке.

  2. Шлюз приложений используется для проверки запроса. Он также используется для пересылки разрешенного трафика в IP-адрес подсистемы балансировки нагрузки, который находится в подготовленном экземпляре Azure Spring Apps. Шлюз приложений интегрирован с Azure Брандмауэр веб-приложений.

  3. Внутренняя подсистема балансировки нагрузки используется для маршрутизации трафика в внутренние службы.

  4. Во время обработки запроса приложение взаимодействует с другими службами Azure в виртуальной сети. Например, приложение может получать секреты из Azure Key Vault или состояния хранения из базы данных.

Компоненты

Следующие службы Azure — это компоненты в этой архитектуре:

  • Стандартная версия Azure Spring Apps используется для размещения примера приложения Java Spring Boot, реализованного как микрослужбы.

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

    Этот номер SKU Брандмауэр веб-приложений интегрирован для защиты веб-приложений от эксплойтов и уязвимостей. Брандмауэр веб-приложений в Шлюз приложений отслеживает эксплойты Open Web Application Security Project (OWASP).

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

  • База данных Azure для MySQL используется для хранения состояния в серверной реляционной базе данных.

  • Key Vault используется для хранения секретов и сертификатов приложений. Микрослужбы, выполняемые в Azure Spring Apps, используют секреты приложения. Azure Spring Apps и Шлюз приложений использовать сертификаты для сохранения имени узла.

Альтернативные варианты

База данных Azure для MySQL не единственный вариант для базы данных. Кроме того, можно использовать следующую команду:

Избыточность

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

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

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

В следующей таблице показаны типы устойчивости для служб в этой архитектуре:

Service Устойчивость
Azure DNS Доступные всегда
Шлюз приложений Избыточное между зонами
Azure Spring Apps Избыточное между зонами
База данных Azure для MySQL Избыточное между зонами
Key Vault Избыточное между зонами
Виртуальная сеть Azure Избыточное между зонами
Частные конечные точки Azure Избыточное между зонами

Azure Spring Apps поддерживает избыточность зоны. При избыточности зоны все базовые инфраструктуры службы распределяется по нескольким зонам доступности, что обеспечивает более высокую доступность для приложения. Приложения масштабируемые по горизонтали без изменений кода. Высокопроизводительная сеть подключает зоны доступности Azure. Подключение имеет задержку округления менее 2 миллисекунда (мс). Вам не нужно полагаться на асинхронную реплика tion для рабочих нагрузок данных, что часто вызывает проблемы проектирования.

Для Шлюз приложений настроено несколько зон доступности, включая общедоступный IP-адрес, который Шлюз приложений используется. Общедоступные IP-адреса с стандартными зонами доступности SKU.

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

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

Масштабируемость

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

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

В зависимости от настройки базы данных может возникнуть дополнительная задержка при синхронизации данных между зонами.

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

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

виртуальная сеть является основным стандартным блоком для частной сети в Azure. Эта архитектура использует виртуальную сеть для региона развертывания. Поместите компоненты в подсети, чтобы создать дополнительную изоляцию. Azure Spring Apps требует выделенной подсети для среды выполнения службы и отдельной подсети для приложений Java Spring Boot.

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

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

Частное подключение

Используйте частные конечные точки или сетевую интеграцию, чтобы обеспечить связь между Azure Spring Apps и поддержкой служб, таких как Key Vault и База данных Azure для MySQL.

Используйте частные конечные точки для управления доступом. Сетевые интерфейсы используют частные IP-адреса для передачи служб в виртуальную сеть. Эта архитектура использует службы Azure, которые автоматически настраивают частные конечные точки.

Разверните Azure Spring Apps в сети с помощью процесса внедрения виртуальной сети. Доступ к приложению осуществляется путем достижения частного IP-адреса.

База данных следует аналогичной модели. Режим развертывания гибкого сервера База данных Azure для MySQL поддерживает интеграцию виртуальной сети через выделенную подсеть.

Другие службы, такие как Key Vault, подключены к виртуальной сети через Приватный канал. Для Приватный канал необходимо включить частную конечную точку для отключения доступа к общедоступной сети. Дополнительные сведения см. в разделе "Интеграция Key Vault с Приватный канал".

Для частных конечных точек не требуется выделенная подсеть, но рекомендуется разместить их в отдельной подсети. Частные IP-адреса частным конечным точкам назначаются из этой подсети.

Частная конечная точка и сетевые подключения используют частную зону Azure DNS.

Элементы управления потоком трафика

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

Экземпляр Azure Spring Apps имеет внутреннюю подсистему балансировки нагрузки, которая направляет и распределяет трафик в внутренние службы. Подсистема балансировки нагрузки настроена для приема трафика только из Шлюз приложений.

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

Настройка обратного прокси-сервера

Это решение использует Шлюз приложений в качестве обратного прокси-сервера. Но вы можете использовать разные обратные прокси-серверы перед Azure Spring Apps. Вы можете объединить Шлюз приложений с Azure Front Door или использовать Azure Front Door вместо Шлюз приложений.

Сведения о сценариях обратного прокси-сервера, настройке и их безопасности см. в статье "Предоставление Azure Spring Apps через обратный прокси-сервер".

Управление удостоверениями и доступом

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

Приложение должно пройти проверку подлинности при подключении к внутренним службам, например, если приложение получает секреты из Key Vault. В приложении рекомендуется включить управляемые удостоверения Microsoft Entra для ресурсов Azure. Этот метод конфигурации назначает удостоверение приложению, чтобы он смог получить маркеры идентификатора Microsoft Entra, что снижает затраты на управление учетными данными.

Эта архитектура использует управляемые удостоверения , назначаемые системой, для нескольких взаимодействий.

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

Управление секретами

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

Наблюдение

Azure Monitor — это решение для мониторинга для сбора, анализа и реагирования на данные мониторинга из облачных и локальных сред.

Добавьте инструментирование в приложение для выдачи журналов и метрик на уровне кода. Рекомендуется включить распределенную трассировку для обеспечения наблюдаемости между службами в экземпляре Azure Spring Apps. Используйте средство управления производительностью приложений (APM) для сбора журналов и данных метрик. Агент Java Аналитика приложения для Azure Monitor — это хороший вариант для средства APM.

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

Рабочая область Azure Log Analytics — это приемник данных мониторинга, который собирает журналы и метрики из ресурсов Azure и приложения Аналитика. Это решение для ведения журнала обеспечивает видимость, которая помогает процессам автоматизации масштабировать компоненты в режиме реального времени. Анализ данных журнала также может выявить неэффективность в коде приложения, который можно решить для повышения затрат и производительности.

Рекомендации по мониторингу для приложений Spring App см. в разделе "Мониторинг приложений" и "Мониторинг" с помощью Dynatrace Java OneAgent.

Автоматизированное развертывание

Автоматизируйте развертывание инфраструктуры и развертывание кода приложения как можно больше.

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

Для приложений можно использовать голубую или канаровую стратегию развертывания.

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

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

Ниже приведены рекомендации по реализации основных компонентов платформы Azure Well-Architected Framework в контексте этой архитектуры.

Надежность

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

Реализуйте следующие предложения для создания более надежного приложения:

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

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

Реализуйте следующие предложения для создания более безопасного приложения:

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

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

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

Рассмотрите следующие варианты реализации для решения затрат:

  • В одном экземпляре Azure Spring Apps можно развернуть несколько приложений разных типов. При развертывании нескольких приложений стоимость базовой инфраструктуры разделяется между приложениями.

  • Azure Spring Apps поддерживает автоматическое масштабирование приложений, активируемое метриками или расписаниями, что может повысить эффективность использования и затрат.

  • Вы можете использовать Аналитика приложений в Azure Monitor для снижения операционных затрат. Непрерывный мониторинг может помочь решить проблемы быстрее и повысить затраты и производительность.

  • Выберите лучшую ценовую категорию в зависимости от ваших требований:

  • Используйте автомасштабирование для приложений для увеличения и уменьшения масштаба на основе спроса.

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

Эффективность работы

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

Помимо рекомендаций по мониторингу, описанных ранее, реализуйте следующие рекомендации, которые помогут вам развернуть и отслеживать приложение.

Оптимизация производительности

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

Реализуйте следующие предложения для создания более эффективного приложения:

Развертывание этого сценария

Чтобы развернуть эту архитектуру, выполните пошаговые инструкции в архитектуре эталонной архитектуры Azure Spring Apps с несколькими зонами. В развертывании используются шаблоны Terraform.

Соавторы

Эта статья поддерживается корпорацией Майкрософт. Первоначально он был написан следующими участник.

Автор субъекта:

Чтобы просмотреть недоступные профили LinkedIn, войдите в LinkedIn.

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