В этой эталонной архитектуре описывается запуск рабочих нагрузок Java Spring Boot в Azure Spring Apps. В проекте используется избыточность зоны для обеспечения высокой доступности. Реализуйте эту структуру, чтобы предотвратить сбой приложения в случае сбоя во всех центрах обработки данных в зоне.
Эта архитектура поможет вам:
- Увеличьте доступность приложения по сравнению с развертыванием в одной зоне.
- Увеличьте общую устойчивость и цель уровня обслуживания (SLO) приложения.
Это решение представляет базовую стратегию развертывания Azure Spring Apps. Другие решения, которые создаются на этой архитектуре, см. в статье "Развертывание Azure Spring Apps в нескольких регионах " и azure Spring Apps, интегрированных с целевыми зонами.
Совет
Пример реализации, иллюстрирующий некоторые варианты проектирования этой архитектуры. Рассмотрим эту реализацию как первый шаг к рабочей среде.
Архитектура
На следующей схеме показана архитектура этого подхода:
Скачайте файл Visio для этой архитектуры.
Рабочий процесс
Этот рабочий процесс соответствует предыдущей схеме:
Пользователь обращается к приложению с помощью имени узла HTTP приложения, например
www.contoso.com
. Azure DNS используется для разрешения запроса на это имя узла в Шлюз приложений Azure общедоступной конечной точке.Шлюз приложений используется для проверки запроса. Он также используется для пересылки разрешенного трафика в IP-адрес подсистемы балансировки нагрузки, который находится в подготовленном экземпляре Azure Spring Apps. Шлюз приложений интегрирован с Azure Брандмауэр веб-приложений.
Внутренняя подсистема балансировки нагрузки используется для маршрутизации трафика в внутренние службы.
Во время обработки запроса приложение взаимодействует с другими службами 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, используемый в этой архитектуре, развертывается для хранения секретов для внутренних служб.
Масштабируемость
Масштабируемость указывает на возможность рабочей нагрузки эффективно соответствовать требованиям, которые пользователи размещают на нем. Подход с несколькими зонами лучше масштабируемости, чем развертывание в одной зоне, так как оно распределяет нагрузку между зонами доступности.
Эта архитектура содержит несколько компонентов, которые могут выполнять автомасштабирование на основе метрик:
Шлюз приложений поддерживает автоматическое масштабирование. Дополнительные сведения см. в разделе "Масштабирование" Шлюз приложений версии 2 и Брандмауэр веб-приложений версии 2.
Azure Spring Apps поддерживает автомасштабирование. Дополнительные сведения см. в разделе Настройка автомасштабирования для приложений.
В зависимости от настройки базы данных может возникнуть дополнительная задержка при синхронизации данных между зонами.
Безопасность сети
Защита приложения от несанкционированного доступа из Интернета, систем в частных сетях, других службах 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 в контексте этой архитектуры.
Надежность
Надежность гарантирует, что ваше приложение может выполнять обязательства, которые вы выполняете для клиентов. Дополнительные сведения см. в разделе "Обзор основы надежности".
Реализуйте следующие предложения для создания более надежного приложения:
Используйте сине-зеленое развертывание , чтобы упростить откат к предыдущему работоспособному состоянию, если возникают критические проблемы.
Настройте автомасштабирование для приложений , чтобы помочь приложению повысить эффективность при изменении спроса.
Включите корректное завершение работы в Интернете Spring Boot и настройте корректное завершение работы Azure Spring Apps для принудительного прекращения процессов, выполняемых в экземпляре приложения.
Безопасность
Безопасность обеспечивает гарантии от преднамеренного нападения и злоупотребления ценными данными и системами. Дополнительные сведения см. в разделе "Общие сведения о компоненте безопасности".
Реализуйте следующие предложения для создания более безопасного приложения:
Используйте зрелые решения для управления удостоверениями и доступом (IAM), например Идентификатор Microsoft Entra. Включите многофакторную проверку подлинности. Дополнительные сведения см. в разделе:
Избегайте использования паролей, когда это возможно. Дополнительные сведения см. в разделе:
Рекомендации по защите приложения Azure Spring см . в разделе "Базовые показатели безопасности Azure" для Azure Spring Apps.
Оптимизация затрат
Оптимизация затрат заключается в поиске способов уменьшения ненужных расходов и повышения эффективности работы. Дополнительные сведения см. в разделе Обзор критерия "Оптимизация затрат".
Для этой архитектуры требуется более высокая стоимость, так как вы развертываете компоненты в нескольких зонах. Вместо одного экземпляра Azure Spring Apps вы запускаете два или даже три экземпляра. Но нет дополнительных затрат на включение избыточности зоны в службе. Дополнительные сведения см. в разделе о ценах на Azure Spring Apps.
Рассмотрите следующие варианты реализации для решения затрат:
В одном экземпляре Azure Spring Apps можно развернуть несколько приложений разных типов. При развертывании нескольких приложений стоимость базовой инфраструктуры разделяется между приложениями.
Azure Spring Apps поддерживает автоматическое масштабирование приложений, активируемое метриками или расписаниями, что может повысить эффективность использования и затрат.
Вы можете использовать Аналитика приложений в Azure Monitor для снижения операционных затрат. Непрерывный мониторинг может помочь решить проблемы быстрее и повысить затраты и производительность.
Выберите лучшую ценовую категорию в зависимости от ваших требований:
Используйте автомасштабирование для приложений для увеличения и уменьшения масштаба на основе спроса.
Сведения о предполагаемой стоимости служб для этой архитектуры см. в калькуляторе цен Azure. Эта оценка использует разумные значения по умолчанию для небольшого масштабируемого приложения. Вы можете обновить оценку на основе ожидаемых значений пропускной способности для приложения.
Эффективность работы
Оперативное превосходство охватывает процессы операций, которые развертывают приложение и продолжают работать в рабочей среде. Дополнительные сведения см. в разделе "Общие сведения о принципах эффективности работы".
Помимо рекомендаций по мониторингу, описанных ранее, реализуйте следующие рекомендации, которые помогут вам развернуть и отслеживать приложение.
Автоматизация развертываний приложений с помощью Azure DevOps или GitHub Actions.
Мониторинг приложений Azure Spring Apps с помощью журналов, метрик и трассировки.
Отслеживайте метрики на База данных Azure для PostgreSQL с помощью гибкого сервера.
Используйте Управляемый Grafana Azure для просмотра и анализа данных телеметрии приложений и инфраструктуры в режиме реального времени.
Оптимизация производительности
Уровень производительности — это способность вашей рабочей нагрузки эффективно масштабироваться в соответствии с требованиями, предъявляемыми к ней пользователями. Дополнительные сведения см. в разделе "Общие сведения о принципах эффективности производительности".
Реализуйте следующие предложения для создания более эффективного приложения:
Масштабирование приложений вручную или автоматически.
Развертывание этого сценария
Чтобы развернуть эту архитектуру, выполните пошаговые инструкции в архитектуре эталонной архитектуры Azure Spring Apps с несколькими зонами. В развертывании используются шаблоны Terraform.
Соавторы
Эта статья поддерживается корпорацией Майкрософт. Первоначально он был написан следующими участник.
Автор субъекта:
- Gitte Vermeiren | FastTrack для инженера Azure
Чтобы просмотреть недоступные профили LinkedIn, войдите в LinkedIn.
Следующие шаги
- Краткое руководство. Развертывание первого веб-приложения в Azure Spring Apps
- Что такое управляемые удостоверения для ресурсов Azure?
Связанные ресурсы
- Azure Spring Apps, интегрированный с целевыми зонами
- Развертывание Azure Spring Apps в нескольких регионах
- Предоставление доступа к Azure Spring Apps через обратный прокси-сервер
- Высокодоступные сине-зеленые развертывания для приложений
- Управление удостоверениями и доступом для акселератора целевой зоны Azure Spring Apps