Перенос приложений Spring Cloud в Azure Spring Apps

Примечание.

Azure Spring Apps — это новое название службы Azure Spring Cloud. Старое название будет еще некоторое время встречаться в наших материалах, пока мы не обновим ресурсы, такие как снимки экрана, видео и схемы.

В этом руководстве описывается, что следует учитывать при переносе существующего приложения Spring Cloud для запуска в Azure Spring Apps.

Подготовка к миграции

Чтобы обеспечить успешную миграцию, перед ее началом выполните шаги оценки и инвентаризации, описанные в следующих разделах.

Если вы не можете выполнить какие-либо требования для подготовки к миграции, ознакомьтесь со следующими дополнительными руководствами по переносу:

  • Перенос приложений на базе исполняемых JAR-файлов в контейнеры в Службе Azure Kubernetes (руководство ожидается)
  • Перенос приложений на базе исполняемых JAR-файлов в Виртуальные машины Azure (руководство ожидается)

Проверка компонентов приложения

Определение того, используется ли файловая система и как именно она используется

Найдите все экземпляры, из которых выполняется чтение и (или) запись в локальной файловой системе. Найдите все фрагменты, из которых записываются и считываются временные файлы, файлы с коротким и длительным сроком хранения.

Примечание.

Azure Spring Apps предоставляет 5 ГБ временного хранилища для экземпляра Azure Spring Apps, подключенного в /tmp. Если объемы записи временных файлов превысят этот лимит или файлы сохраняются в другом расположении, придется изменить соответствующий код.

Статическое содержимое только для чтения

Если ваше приложение сейчас обслуживает статическое содержимое, вам потребуется альтернативное расположение для этого статического содержимого. Вы можете переместить статическое содержимое в хранилище BLOB-объектов Azure и включить Azure CDN для быстрого скачивания в глобальном масштабе. Дополнительные сведения см. в статье "Размещение статических веб-сайтов" в служба хранилища Azure и кратком руководстве. Интеграция учетной записи хранения Azure с Azure CDN.

Динамически опубликованное статическое содержимое

Если приложение допускает использование статического содержимого, которое передается или создается приложением и после этого становится неизменяемым, вы можете использовать хранилище BLOB-объектов Azure и Azure CDN, как описано выше, с Функциями Azure для выполнения отправки и обновления CDN. Практический пример реализации см. в руководстве по отправке и предварительной загрузке статического содержимого CDN с помощью Функций Azure.

Определение того, содержат ли службы код, зависящий от ОС

Если приложение содержит код, зависящий от ОС узла, вам нужно выполнить рефакторинг кода для удаления этих зависимостей. Например, вам нужно заменить все символы / или \, используемые в путях файловой системы, на File.Separator или Paths.get.

Переход на поддерживаемую платформу

Azure Spring Apps предлагает определенные версии Java и определенные версии Spring Boot и Spring Cloud. Чтобы обеспечить совместимость, сначала перенесите приложение в одну из поддерживаемых версий Java в текущей среде, прежде чем переходить к другим задачам по переносу. Обязательно полностью протестируйте готовую конфигурацию. Используйте в этих тестах последний стабильный выпуск дистрибутива Linux.

Примечание.

Эта проверка особенно важна, если на текущем сервере используется неподдерживаемая версия JDK (например, Oracle JDK или IBM OpenJ9).

Чтобы получить текущую версию Java, войдите на сервер в рабочей среде и выполните следующую команду:

java -version

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

Определение версий Spring Boot

Изучите зависимости каждого переносимого приложения, чтобы определить его версию Spring Boot.

Maven

В проектах Maven версию Spring Boot обычно можно узнать в элементе <parent> файл POM:

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.10</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
Gradle

В проектах Gradle версию Spring Boot обычно можно узнать в элементе в разделе plugins. Она указана в качестве версии подключаемого модуля org.springframework.boot.

plugins {
  id 'org.springframework.boot' version '2.7.10'
  id 'io.spring.dependency-management' version '1.0.15.RELEASE'
  id 'java'
}

Для всех приложений, которые используют Spring Boot 1.x, выполните инструкции из руководства по переходу на Spring Boot 2.0, чтобы обновить их до поддерживаемой версии Spring Boot. Поддерживаемые версии см. в разделе "Версия Spring Boot и Spring Cloud " статьи "Подготовка приложения для развертывания в Azure Spring Apps".

Определение версий Spring Cloud

Изучите все зависимости каждого из переносимых приложений, чтобы определить используемые в них версии компонентов Spring Cloud.

Maven

В проектах Maven версия Spring Cloud обычно указывается в свойстве spring-cloud.version:

  <properties>
    <java.version>1.8</java.version>
    <spring-cloud.version>2021.0.6</spring-cloud.version>
  </properties>
Gradle

В проектах Gradle версия Spring Cloud обычно задается в блоке дополнительных свойств:

ext {
  set('springCloudVersion', "2021.0.6")
}

Необходимо обновить все приложения для использования поддерживаемых версий Spring Cloud. Список поддерживаемых версий см. в разделе "Версия Spring Boot и Spring Cloud" статьи "Подготовка приложения для развертывания в Azure Spring Apps".

Определение решений по объединению журналов

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

Определение агентов управления производительностью приложений

Определите все агенты мониторинга производительности приложений, используемые в приложениях. Azure Spring Apps поддерживает интеграцию с приложением Аналитика, New Relic, Elastic APM, Dynatrace и AppDynamics. Если приложение использует поддерживаемый APM, настройте интеграцию в миграции. Если приложение не использует поддерживаемый APM, рассмотрите возможность использования приложения Аналитика. Дополнительные сведения см. в разделе "Миграция ".

Выявление зависимостей Zipkin

Определите, имеет ли приложение зависимости от Zipkin. Обновите приложение, чтобы использовать Аналитика приложения. Дополнительные сведения см. в разделе "Использование агента java in-Process Agent Аналитика Java" в Azure Spring Apps и раздела "После миграции".

Проверка внешних ресурсов

Определите внешние ресурсы, в том числе источники данных, брокеры сообщений JMS и URL-адреса других служб. В приложениях Spring Cloud конфигурацию для таких ресурсов обычно можно найти в одном из следующих расположений:

  • В каталоге src/main/directory, обычно в файле с именем application.properties или application.yml.
  • В репозитории конфигурации Spring Cloud, который вы определили на предыдущем шаге.

Databases

Определите строки подключения ко всем базам данных SQL.

Для приложений Spring Boot строки подключения обычно хранятся в файлах конфигурации.

Вот пример из файла application.properties:

spring.datasource.url=jdbc:mysql://localhost:3306/mysql_db
spring.datasource.username=dbuser
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

Вот пример из файла application.yml:

spring:
  data:
    mongodb:
      uri: mongodb://mongouser:deepsecret@mongoserver.contoso.com:27017

Дополнительные сценарии настройки см. в документации по Spring Data.

Брокеры сообщений JMS

Определите брокер или брокеры, которые используются, изучив в манифесте сборки (обычно это файл pom.xml или build.gradle) соответствующие зависимости.

Например, в приложении Spring Boot, в котором используется ActiveMQ, в файле pom.xml обычно присутствует следующая зависимость:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-activemq</artifactId>
</dependency>

Приложения Spring Boot, использующие коммерческие брокеры, обычно содержат зависимости непосредственно от библиотек драйверов JMS брокеров. Вот пример из файла build.gradle:

    dependencies {
      ...
      compile("com.ibm.mq:com.ibm.mq.allclient:9.0.4.0")
      ...
    }

Когда вы найдете один или несколько используемых брокеров, получите их параметры. В приложениях Spring Cloud они обычно размещаются в файле application.properties или application.yml в каталоге приложения либо в репозитории сервера конфигурации Spring Cloud.

Вот пример ActiveMQ из файла application.properties:

spring.activemq.brokerurl=broker:(tcp://localhost:61616,network:static:tcp://remotehost:61616)?persistent=false&useJmx=true
spring.activemq.user=admin
spring.activemq.password=tryandguess

Дополнительные сведения о конфигурации ActiveMQ см. в документации по сообщениям Spring Boot.

Вот пример IBM MQ из файла application.yaml:

ibm:
  mq:
    queueManager: qm1
    channel: dev.ORDERS
    connName: localhost(14)
    user: admin
    password: big$ecr3t

Дополнительные сведения о конфигурации IBM MQ см. в документации по компонентам Spring для IBM MQ.

Определение внешних кэшей

Определите все используемые внешние кэши. Redis часто используется через Spring Data Redis. Сведения о конфигурации см. в документации по Spring Data Redis.

Определите, кэшируются ли данные сеанса с помощью Spring Session путем поиска соответствующей конфигурации (в Java или XML).

Поставщики удостоверений

Идентифицируйте всех поставщиков удостоверений и все приложения Spring Cloud, которые требуют проверки подлинности и (или) авторизации. Сведения о настройке поставщиков удостоверений см. в следующих ресурсах:

Ресурсы, настроенные с помощью службы VMware Tanzu Application Service (TAS) (ранее — Pivotal Cloud Foundry)

Для приложений, управляемых через TAS, внешние ресурсы (включая описанные выше) часто настраиваются с помощью привязок службы TAS. Чтобы проверить конфигурацию таких ресурсов, с помощью TAS (Cloud Foundry) CLI узнайте значение переменной VCAP_SERVICES для приложения.

# Log into TAS, if needed (enter credentials when prompted)
cf login -a <API endpoint>

# Set the organization and space containing the application, if not already selected during login.
cf target org <organization name>
cf target space <space name>

# Display variables for the application
cf env <Application Name>

В переменной VCAP_SERVICES размещаются параметры конфигурации внешних служб, привязанных к приложению. См. сведения в документации по TAS (Cloud Foundry).

Другие связанные внешние ресурсы

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

Источники и секреты конфигурации инвентаризации

Пароли и защищенные строки инвентаризации

Проверьте наличие секретных строк и паролей во всех свойствах и файлах конфигурации, а также всех переменных среды в рабочих развертываниях. В приложении Spring Cloud такие строки обычно размещаются в файле application.properties или application.yml в отдельных службах или в репозитории конфигурации Spring Cloud.

Проверка сертификатов

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

keytool -list -v -keystore <path to keystore>

Определение используемого хранилища Spring Cloud

Если для хранения и вызова секретов вы используете хранилище Spring Cloud, укажите резервное хранилище (например, HashiCorp или CredHub). Затем укажите все секреты, которые используются в коде приложения.

Определение сервера с данными о конфигурации

Если приложение использует сервер конфигурации Spring Cloud, найдите место хранения конфигурации. Обычно этот параметр настраивается в файле bootstrap.yml или bootstrap.properties, реже в файле application.yml или application.properties Он указывается так, как показано в примере ниже.

spring.cloud.config.server.git.uri: file://${user.home}/spring-cloud-config-repo

Чаще всего в качестве резервного хранилища данных для конфигурации Spring Cloud используется Git, как показано выше, но вместо этого может использоваться и любая другая из поддерживаемых серверных технологий. Дополнительные сведения о других серверных компонентах, таких как реляционная база данных (JDBC), SVN или локальная файловая система, см. в документации по конфигурации Spring Cloud.

Примечание.

Если данные сервера конфигурации хранятся в локальной среде, например GitHub Enterprise, необходимо сделать его доступным для Azure Spring Apps через репозиторий Git.

Инспекция архитектуры развертывания

Документирование требований к оборудованию для каждой службы

Для каждой службы Spring Cloud (не включая сервер конфигурации, реестр или шлюз) задокументируйте следующие сведения:

  • Количество выполняемых экземпляров.
  • Количество ЦП, выделенных для каждого экземпляра.
  • Объем RAM, выделенный для каждого экземпляра.

Документирование георепликации и распространения

Определите, распределены ли приложения Spring Boot между несколькими регионами или центрами обработки данных. Задокументируйте требования к бесперебойной работе или соглашение об уровне обслуживания для приложений, которые вы переносите.

Выявление клиентов, которые обходят реестр службы

Определите все клиентские приложения, которые вызывают любую службу, которую нужно перенести, не используя при этом реестр службы Spring Cloud. После миграции такие вызовы станут невозможны. Перед миграцией настройте такие клиенты на использование Spring Cloud OpenFeign.

Миграция

Удаление ограниченных конфигураций

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

  • eureka.client.service-url.defaultZone
  • eureka.client.tls.keystore
  • eureka.instance.preferIpAddress
  • eureka.instance.instance-id
  • server.port
  • spring.cloud.config.tls.keystore
  • spring.config.import
  • spring.application.name
  • spring.jmx.enabled
  • management.endpoints.jmx.exposure.include

Создание экземпляра и приложений Azure Spring Apps

Подготовка экземпляра Azure Spring Apps в подписке Azure. Теперь подготовьте приложение для каждой переносимой службы. Не включайте в них реестр и серверы конфигурации Spring Cloud. Вместо этого добавьте службу шлюза Spring Cloud. Инструкции см . в кратком руководстве. Развертывание первого приложения в Azure Spring Apps.

Подготовка сервера конфигурации Spring Cloud

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

Примечание.

Если текущий репозиторий конфигурации Spring Cloud находится в локальной файловой системе или локальной среде, сначала необходимо перенести или реплика перенести файлы конфигурации в частный облачный репозиторий, например GitHub, Azure Repos или BitBucket.

Настройка записи журналов в консоль и параметров диагностики

Настройте ведение журналов так, чтобы все они выводили данные в консоль, а не в файлы.

После развертывания приложения в Azure Spring Apps добавьте параметр диагностики, чтобы сделать зарегистрированные события доступными для использования, например с помощью Azure Monitor Log Analytics.

Стек LogStash/ELK

Если вы используете стек LogStash/ELK для объединения журналов, настройте параметр диагностики для потоковой передачи выходных данных консоли в концентратор событий Azure. Затем настройте подключаемый модуль LogStash EventHub для приема регистрируемых событий в LogStash.

Splunk

Если вы используете стек Splunk для объединения журналов, настройте потоковый вывод диагностики для передачи выходных данных консоли в хранилище BLOB-объектов Azure. Затем примените надстройку Splunk для облачных служб (Майкрософт) для приема событий в Splunk.

Настройка постоянного хранилища

Если какая либо часть приложения выполняет чтение или запись в локальную файловую систему, ее необходимо заменить, настроив постоянное хранилище. Дополнительные сведения см. в статье "Использование встроенного постоянного хранилища в Azure Spring Apps".

Все временные файлы должны быть в каталоге /tmp. Узнать его расположение в любой ОС можно с помощью System.getProperty("java.io.tmpdir"). Для создания временных файлов можно также использовать java.nio.Files::createTempFile.

Компоненты VMware Tanzu

На уровне Enterprise служба конфигурации приложений для VMware Tanzu® предоставляется для поддержки внешней конфигурации для приложений. Управляемый сервер конфигурации Spring Cloud недоступен на уровне Enterprise и доступен только на уровне "Стандартный" и "Базовый" в Azure Spring Apps.

Служба конфигурации приложений для Tanzu

Служба конфигурации приложений для Tanzu — один из коммерческих компонентов VMware Tanzu. Служба конфигурации приложений для Tanzu — это собственный код Kubernetes и отличается от сервера конфигурации Spring Cloud. Служба конфигурации приложений для Tanzu позволяет управлять собственными ресурсами ConfigMap Kubernetes, которые заполняются свойствами, заданными в одном или нескольких репозиториях Git.

На уровне «Корпоративный» отсутствует сервер конфигурации Spring Cloud, но вы можете использовать службу конфигурации приложений для Tanzu, чтобы управлять централизованными конфигурациями. Дополнительные сведения см. в статье Использование службы конфигурации приложений для Tanzu

Чтобы использовать службу конфигурации приложений для Tanzu, выполните следующие действия для каждого приложения:

  1. Добавьте явную привязку приложения, чтобы объявить, что приложению необходимо использовать службу конфигурации приложений для Tanzu.

    Примечание.

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

  2. Задайте шаблоны файлов конфигурации. Шаблоны файлов конфигурации позволяют выбрать приложение и профилировать его. Дополнительные сведения см. в разделе Шаблонслужбы «Использование службы конфигурации приложений для Tanzu».

    Другой вариант — установить шаблоны файлов конфигурации одновременно с развертыванием приложения, как показано в следующем примере:

    az spring app deploy \
        --name <app-name> \
        --artifact-path <path-to-your-JAR-file> \
        --config-file-pattern <config-file-pattern>
    

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

  • Если у вас уже есть репозиторий Git для хранения внешней конфигурации, вы можете настроить Spring Cloud Config Server локально в качестве централизованной конфигурации для приложения. После запуска сервера конфигурации он клонирует репозиторий Git и предоставляет содержимое репозитория через его веб-контроллер. Дополнительные сведения см. в документации по Spring Cloud . Это spring-cloud-config-client позволяет приложению автоматически собирать внешнюю конфигурацию с сервера конфигурации.

  • Если у вас нет репозитория Git или вы не хотите настроить сервер конфигурации локально, вы можете использовать файл конфигурации непосредственно в проекте. Рекомендуется использовать профиль для изоляции файла конфигурации, чтобы он использовался только в среде разработки. Например, используйте dev в качестве профиля. Затем можно создать файл application-dev.yml в папке src/main/resource для хранения конфигурации. Чтобы приложение использовало эту конфигурацию, запустите приложение локально --spring.profiles.active=dev.

Реестр служб Tanzu

Реестр служб VMware Tanzu® является одним из коммерческих компонентов VMware Tanzu. Реестр служб Tanzu предоставляет приложения уровня Enterprise с реализацией шаблона обнаружения служб, одним из ключевых элементов архитектуры на основе микрослужб. Приложения могут использовать Реестр служб Tanzu для динамического обнаружения и вызова зарегистрированных служб. Использование реестра служб Tanzu предпочтительнее вручную настраивать каждого клиента службы, что может быть сложно или принять определенную форму соглашения о доступе, что может быть хрупким в рабочей среде. Дополнительные сведения см. в статье Использование реестра служб Tanzu.

Миграция секретов из хранилища Spring Cloud в Azure Key Vault

Вы можете внедрять секреты прямо в приложения через Spring, используя начальный набор Spring Boot для Azure Key Vault. Дополнительные сведения см. в статье Как использовать начальное приложение Spring Boot Starter с Azure Key Vault.

Примечание.

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

Перенос всех сертификатов в Key Vault

Azure Spring Apps не предоставляет доступ к хранилищу ключей JRE, поэтому необходимо перенести сертификаты в Azure KeyVault и изменить код приложения для доступа к сертификатам в KeyVault. Дополнительные сведения см. в статьях Начало работы с сертификатами Key Vault и Клиентская библиотека сертификатов Azure Key Vault для Java.

Настройка интеграции управления производительностью приложений (APM)

Azure Spring Apps предлагает следующие интеграции APM. Следуйте ссылкам, чтобы включить необходимый APM:

Если приложение не использует поддерживаемый APM, попробуйте использовать приложение Аналитика. Azure Spring Apps обеспечивает глубокую интеграцию с приложением Аналитика для управления производительностью и реагирования в режиме реального времени на аберрация.

Отключение клиентов и конечных точек метрик в приложениях

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

Развертывание служб

Разверните все перенесенные приложения Spring (не включая серверы конфигурации Spring Cloud и реестра), как описано в кратком руководстве. Развертывание первого приложения в Azure Spring Apps.

Настройка секретов и внешних параметров для каждой службы

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

  1. Перейдите к экземпляру Azure Spring Apps и выберите "Приложения".
  2. Выберите службу для настройки.
  3. Выберите Конфигурация.
  4. Введите переменные для настройки.
  5. Выберите Сохранить.

Spring Cloud App Configuration Settings

Миграция и включение поставщика удостоверений

Если какому-то из приложений Spring Cloud требуется проверка подлинности или авторизация, не забудьте настроить для них доступ к поставщику удостоверений:

  • Если поставщик удостоверений является идентификатором Microsoft Entra, изменения не должны быть необходимы.
  • Если поставщик удостоверений является лесом локальная служба Active Directory, рассмотрите возможность реализации решения гибридного удостоверения с идентификатором Microsoft Entra. Инструкции для этого есть в документации по гибридной идентификации.
  • Если поставщик удостоверений является другим локальным решением, например PingFederate, обратитесь к разделу "Настраиваемая установка Microsoft Entra Подключение", чтобы настроить федерацию с идентификатором Microsoft Entra. Кроме того, вы можете применить Spring Security для работы с поставщиком удостоверений через OAuth2 и OpenID Connect или SAML.

Обновление клиентских приложений

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

После миграции

  • Обдумайте возможность добавить конвейер развертывания для автоматизации и обеспечения согласованности этого процесса. Для этого существуют инструкции по настройке Azure Pipelines, GitHub Actions и Jenkins.

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

  • Обдумайте возможность добавить привязки служб для подключения приложения к поддерживаемым базам данных Azure. Такие привязки служб избавляют от необходимости предоставлять сведения о подключении, включая учетные данные, для приложений Spring Cloud.

  • Рассмотрите возможность использования приложение Azure Аналитика для мониторинга производительности и взаимодействия приложений. Дополнительные сведения см. в статье Использование внутрипроцессного агента Java Application Insights в Azure Spring Apps

  • Рассмотрите возможность добавить правила генерации оповещений и группы действий Azure Monitor для быстрого обнаружения и устранения отклонений от обязательных условий. Дополнительные сведения см. в руководстве по мониторингу ресурсов Spring Cloud с помощью оповещений и групп действий.

  • Рассмотрите возможность реплика развертывания Azure Spring Apps в другом регионе для снижения задержки и повышения надежности и отказоустойчивости. Примените Диспетчер трафика Azure для балансировки нагрузки между развертываниями или Azure Front Door для добавления разгрузки SSL и брандмауэра веб-приложения с защитой от атак DDoS.

  • Если георепликация не требуется, попробуйте добавить Шлюз приложений Azure для добавления разгрузки SSL и брандмауэра веб-приложения с защитой от атак DDoS.

  • Если приложения используют устаревшие компоненты Spring Cloud Netflix, попробуйте заменить их более современными альтернативами.

    Устарело Текущие
    Spring Cloud Eureka Реестр службы Spring Cloud
    Spring Cloud Netflix Zuul Spring Cloud Gateway
    Spring Cloud Netflix Archaius Сервер конфигурации Spring Cloud
    Spring Cloud Netflix Ribbon Spring Cloud Load Balancer (подсистема балансировки нагрузки на стороне клиента)
    Spring Cloud Hystrix Spring Cloud Circuit Breaker и Resilience4J
    Spring Cloud Netflix Turbine Micrometer и Prometheus