Оценка приложения и кода службы "Миграция Azure" для Java
Примечание.
Мы выпустили новую версию приложения службы "Миграция Azure" и оценку кода для Java версии 7.x в предварительной версии на основе нового анализатора. Скачивание и эксперимент с новым ядром, доступное для Windows, Linux и macOS, см. в статье "Миграция Azure" и "Оценка кода" для Java версии 7
В этом руководстве описывается, как использовать средство оценки приложений и кода службы "Миграция Azure" для Java для оценки и повторной оплаты любого типа приложения Java. Это средство позволяет оценить готовность приложения к повторной подготовке и миграции в Azure. Это средство предоставляется в качестве интерфейса командной строки (интерфейс командной строки) и оценивает двоичные файлы приложений Java и исходный код для выявления возможностей реплатформирования и миграции для Azure. Это помогает модернизировать и переформатировать крупномасштабные приложения Java, определяя распространенные варианты использования и шаблоны кода и предлагая рекомендуемые изменения.
Средство обнаруживает использование технологий приложений с помощью статического анализа кода, обеспечивает оценку усилий и ускоряет переплатформирование кода, помогая вам определить приоритеты и переместить приложения Java в Azure. С помощью набора обработчиков и правил он может обнаруживать и оценивать различные технологии, такие как Java 11, Java 17, Jakarta EE, Spring, Hibernate, Служба сообщений Java (JMS) и многое другое. Затем он помогает переформатировать приложение Java для различных целевых объектов Azure (службы приложение Azure, Служба Azure Kubernetes и приложений контейнеров Azure) с определенными правилами переплатформирования Azure.
Это средство открытый код и основано на WindUp, проекте, созданном Red Hat и опубликованном в рамках общедоступной лицензии Eclipse.
Обзор
Это средство предназначено для того, чтобы организации модернизировали свои приложения Java таким образом, чтобы сократить затраты и ускорить инновации. Средство использует расширенные методы анализа для понимания структуры и зависимостей любого приложения Java и предоставляет рекомендации по рефакторингу и переносу приложений в Azure.
С его помощью можно выполнить следующие задачи:
- Обнаружение использования технологий: быстро узнать, какие технологии используются приложением. Обнаружение полезно, если у вас есть устаревшие приложения с не большой документацией и хотите знать, какие технологии они используют.
- Оцените код для определенного целевого объекта: оцените приложение для конкретного целевого объекта Azure. Проверьте усилия и изменения, которые необходимо выполнить для повторной регистрации приложений в Azure.
Поддерживаемые целевые объекты
Это средство содержит правила для повторной подготовки приложений для развертывания и использования различных служб Azure.
Правила, используемые приложением службы "Миграция Azure" и оценкой кода, группируются на основе целевого объекта. Целевой объект — это место или способ запуска приложения, а также общие потребности и ожидания. При оценке приложения можно выбрать несколько целевых объектов. В следующей таблице описываются доступные целевые объекты:
Назначение | Description | Идентификатор |
---|---|---|
Служба приложений Azure | Рекомендации по развертыванию приложения в службе приложение Azure. | azure-appservice |
Служба Azure Kubernetes | Рекомендации по развертыванию приложения в Служба Azure Kubernetes. | azure-aks |
Приложения-контейнеры Azure | Рекомендации по развертыванию приложения в приложениях контейнеров Azure. | azure-container-apps |
Готовность к работе в облаке | Общие рекомендации по подготовке облака приложений (Azure). | cloud-readiness |
Обнаружение | Определяет использование технологий, таких как библиотеки и платформы. | discovery |
Linux | Общие рекомендации по подготовке приложения Linux. | linux |
OpenJDK 11 | Общие рекомендации по запуску приложения Java 8 с Java 11. | openjdk11 |
OpenJDK 17 | Общие рекомендации по запуску приложения Java 11 с Java 17. | openjdk17 |
OpenJDK 21 | Общие рекомендации по запуску приложения Java 17 с Java 21. | openjdk21 |
Когда средство оценивает готовность облака и связанные службы Azure, оно также может сообщать полезные сведения о потенциальном использовании различных служб Azure. В следующем списке показаны некоторые службы, описанные ниже.
- Базы данных Azure
- Служебная шина Azure
- Хранилище Azure
- Сеть доставки содержимого Azure
- Центры событий Azure
- Azure Key Vault
- Azure Front Door
Загрузка
Чтобы использовать appcat
ИНТЕРФЕЙС командной строки, необходимо скачать ZIP-файл, описанный в следующем разделе, и установить на компьютере совместимую установку JDK 11 или JDK 17. appcat
Интерфейс командной строки выполняется в любой среде, совместимой с Java, например Windows, Linux или Mac, как для оборудования Intel, Arm и Apple Silicon. Мы рекомендуем использовать Microsoft Build of OpenJDK.
Скачайте оценку приложения и кода службы "Миграция Azure" для Java 6.3.9.0. Обновлено 2024-12-09.
Дополнительные сведения см. в разделе "Заметки о выпуске".
Известные проблемы
Некоторые правила могут не запускаться при анализе определенных лямбда-выражений. Дополнительные сведения см . в статье о проблеме с GitHub.
Выполнение appcat
в среде, отличной от юникода с сложными двойными байтами, приведет к повреждению. Сведения об обходных решениях см . в статье о проблеме с GitHub.
Предыдущие выпуски
Для скачивания также доступны следующие предыдущие выпуски:
- Оценка приложения и кода службы "Миграция Azure" для Java 6.3.0.9. Выпущено 2024 августа.
- Оценка приложения и кода службы "Миграция Azure" для Java 6.3.0.8. Выпущено 2024 марта.
- Оценка приложения и кода службы "Миграция Azure" для Java 6.3.0.7. Выпущено 2023 ноября.
Начало работы
Чтобы запустить appcat
, убедитесь, что установлен поддерживаемый JDK. Это средство поддерживает следующие JDK:
- Microsoft Build of OpenJDK 11
- Microsoft Build of OpenJDK 17
- Eclipse Temurin™ JDK 11
- Eclipse Temurin™ JDK 17
После установки допустимого JDK убедитесь, что его каталог установки правильно настроен в переменной JAVA_HOME
среды.
Чтобы продолжить, скачайте и распакуйте пакет в выбранной папке. Затем вы получите следующую структуру каталогов:
appcat-cli-<version> # APPCAT_HOME
├── README.md
├── bin
│ ├── appcat
│ └── appcat.bat
├── docs
│ └── appcat-guide.html
└── samples
├── airsonic.war
├── run-assessment
├── run-assessment-custom-rules
├── run-assessment-exclude-packages
├── run-assessment-no-code-report
├── run-assessment-openjdk21
├── run-assessment-zip-report
└── run-discovery
- docs: этот каталог содержит документацию
appcat
. - bin: этот каталог содержит
appcat
исполняемые файлы CLI (для Windows/Linux/Mac). - примеры. Этот каталог содержит пример приложения и несколько сценариев для запуска
appcat
в примере приложения.
Чтобы запустить средство, откройте сеанс терминала и введите следующую команду из каталога $APPCAT_HOME/bin :
./appcat --help
Чтобы запустить средство из любого места на компьютере, настройте каталог $APPCAT_HOME/bin в PATH
переменную среды, а затем перезапустите сеанс терминала.
Документация
В следующих руководствах приведена основная документация для appcat
Java:
Обнаружение использования технологий и готовность к облаку без использования службы Azure
Обнаружение технологий и целевых показателей готовности к облаку обеспечивает большую информацию о переплатформе приложений и модернизации в облаке. Средство сканирует приложение и его компоненты, чтобы получить полное представление о его структуре, архитектуре и зависимостях. Он также находит потенциальные проблемы, которые могут быть сложными в облачной среде. Целевой discovery
объект, в частности, используется для создания подробной инвентаризации приложения и его компонентов. Эта инвентаризация служит основой для дальнейшего анализа и планирования. Дополнительные сведения см. в разделе отчета об обнаружении.
Используйте следующую команду, чтобы инициировать обнаружение и готовность к облаку:
./appcat \
--input ./<my-application-source-path or my-application-jar-war-ear-file> \
--target discovery cloud-readiness
Этот тип отчета полезен, если у вас нет определенной службы Azure для развертывания приложения.
Средство всегда выполняет проверку того, discovery
включено ли это значение в --target
параметр.
Оценка приложения Java
Этап оценки заключается в том, что appcat
ИНТЕРФЕЙС командной строки анализирует приложение и его компоненты, чтобы определить его пригодность для переплатормирования и определить возможные проблемы или ограничения. Этот этап включает анализ кода приложения и проверку соответствия выбранным целевым объектам.
Вы можете выбрать несколько целевых объектов с помощью разделенного пробелом списка значений с аргументом --target
.
Чтобы проверить доступные целевые объекты, выполните следующую команду:
./appcat --listTargetTechnologies
Выходные данные этой команды выглядят примерно так:
Available target technologies:
azure-aks
azure-appservice
azure-container-apps
cloud-readiness
discovery
linux
openjdk11
openjdk17
openjdk21
Затем можно запустить appcat
с помощью одного или сочетания доступных целевых объектов, как показано в следующем примере:
./appcat \
--input ./<my-application-source-path or my-application-jar-war-ear-file> \
--target cloud-readiness linux azure-appservice
Можно также запустить appcat
с одним из доступных целевых объектов OpenJDK, как показано в следующем примере:
./appcat \
--input ./<my-application-source-path or my-application-jar-war-ear-file> \
--target openjdk11
Для целевых объектов OpenJDK (Java) рекомендуется выбрать только один раз.
Рекомендация по целевым объектам для оценки Azure
Каждый раз, когда вы оцениваете приложение для развертывания Azure, рекомендуется начать с следующих целевых объектов:
discovery
cloud-readiness
Кроме того, укажите службу Azure для развертывания, например azure-appservice
или azure-container-apps
.
Если вы планируете переместить приложение из среды Windows в виртуальную машину или контейнер Linux, рекомендуется также добавить целевой linux
объект.
Если вы планируете переместить приложение из более старой версии JDK в более новую версию, рекомендуется выбрать следующую основную версию по сравнению с предыдущей версией, используемой приложением. Например, используйте openjdk11
при развертывании приложения с помощью Java 8.
Получение результатов из appcat
Результатом этапов обнаружения и оценки является подробный отчет, который предоставляет план для переплатформирования и модернизации приложения Java, включая рекомендации по службе Azure и подходу к повторной обработке. Отчет служит основой для следующих этапов процесса реплатформирования. Он помогает организациям узнать о усилиях, необходимых для такого преобразования, и принимать решения о том, как модернизировать свои приложения для максимальной выгоды.
В отчете, созданном с помощью appcat
полного обзора приложения и его компонентов. Этот отчет можно использовать для получения аналитических сведений о структуре и зависимостях приложения, а также для определения его пригодности для повторной оплаты и модернизации.
В следующих разделах содержатся дополнительные сведения о отчете.
Сводка по анализу
Целевая страница отчета содержит все технологии, используемые в приложении. Панель мониторинга содержит сводку по анализу, включая количество инцидентов преобразования, категории инцидентов или точки истории.
При увеличении масштаба круговой диаграммы "Инциденты по категориям" можно увидеть количество инцидентов по категориям: обязательный, необязательный, потенциальный и информационный.
На панели мониторинга также отображаются точки истории. Точки истории — это абстрактная метрика, часто используемая в разработке программного обеспечения Agile для оценки уровня усилий, необходимых для реализации функции или изменения. appcat
использует точки истории для выражения уровня усилий, необходимых для переноса конкретного приложения. Точки истории не обязательно переводятся в рабочие часы, но значение должно быть согласовано между задачами.
Отчет об обнаружении
Отчет об обнаружении — это отчет, созданный на этапе обнаружения. В нем показан список технологий, используемых приложением в категории "Информация ". Этот отчет просто информирует вас об использовании технологий, appcat
обнаруженных.
Отчет об оценке
В отчете об оценке представлены общие сведения о проблемах преобразования, которые необходимо решить для переноса приложения в Azure.
Эти проблемы, также называемые инцидентами, имеют серьезность (обязательные, необязательные, потенциальные или информационные), уровень усилий и число, указывающее точки истории. Точки истории определяются путем вычисления количества инцидентов времени, необходимого для решения проблемы.
Подробные сведения о конкретной проблеме
Для каждого инцидента можно получить дополнительные сведения (сведения о проблеме, содержимое правила и т. д.), просто выбрав его. Вы также получите список всех файлов, затронутых этим инцидентом.
Затем для каждого файла или класса, затронутого инцидентом, можно перейти в исходный код, чтобы выделить строку кода, создавшего проблему.
Настраиваемые правила
Вы можете рассматривать appcat
как подсистему правил. Он использует правила для извлечения файлов из архивов Java, декомпилирует классы Java, сканирует и классифицирует типы файлов, анализирует эти файлы и создает отчеты. В appcat
этом случае правила определяются в виде набора правил. Набор правил — это коллекция отдельных правил, определяющих конкретные проблемы или шаблоны, которые appcat
могут обнаруживать во время анализа.
Эти правила определены в ФОРМАТЕ XML и используют следующий шаблон правила:
when (condition)
perform (action)
otherwise (action)
appcat
предоставляет полный набор стандартных правил миграции. Так как приложения могут содержать пользовательские библиотеки или компоненты, appcat
позволяет создавать собственные правила для определения использования компонентов или программного обеспечения, которые может охватывать существующий набор правил.
Для записи настраиваемого правила используется форматированный язык для конкретного домена (DLS), выраженный в XML. Например, предположим, что требуется правило, определяющее использование драйвера JDBC PostgreSQL в приложении Java и предполагающее использование гибкого сервера Azure PostgreSQL. Необходимо правило для поиска драйвера JDBC PostgreSQL, определенного в файле Maven pom.xml или файле Gradle, например зависимости, показанной в следующем примере:
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>runtime</scope>
</dependency>
Чтобы определить использование этой зависимости, правило использует следующие XML-теги:
ruleset
: уникальный идентификатор набора правил. Набор правил — это коллекция правил, связанных с определенной технологией.targetTechnology
: технология, предназначенная для правила. В этом случае правило предназначено для служб приложение Azure, Служба Azure Kubernetes (AKS) и приложений контейнеров Azure.rule
: корневой элемент одного правила.when
: условие, которое должно быть выполнено для активации правила.perform
: действие, которое необходимо выполнить при активации правила.hint
: сообщение, отображаемое в отчете, его категория (сведения, необязательные или обязательные) и усилия, необходимые для устранения проблемы, начиная от 1 (легко) до 13 (трудно).
В следующем XML-коде показано пользовательское определение правила:
<ruleset id="azure-postgre-flexible-server"
xmlns="http://windup.jboss.org/schema/jboss-ruleset"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://windup.jboss.org/schema/jboss-ruleset http://windup.jboss.org/schema/jboss-ruleset/windup-jboss-ruleset.xsd">
<metadata>
<description>Recommend Azure PostgreSQL Flexible Server.</description>
<dependencies>
<addon id="org.jboss.windup.rules,windup-rules-xml,3.0.0.Final"/>
</dependencies>
<targetTechnology id="azure-appservice"/>
<targetTechnology id="azure-aks"/>
<targetTechnology id="azure-container-apps"/>
</metadata>
<rules>
<rule id="azure-postgre-flexible-server">
<when>
<project>
<artifact groupId="org.postgresql" artifactId="postgresql"/>
</project>
</when>
<perform>
<hint title="Azure PostgreSQL Flexible Server" category-id="mandatory" effort="7">
<message>The application uses PostgreSQL. It is recommended to use Azure PostgreSQL Flexible Server instead.</message>
<link title="Azure PostgreSQL Flexible Server documentation" href="https://learn.microsoft.com/azure/postgresql/flexible-server/overview"/>
</hint>
</perform>
</rule>
</rules>
</ruleset>
После выполнения этого правила appcat
повторно выполните анализ, чтобы просмотреть созданный отчет. Как и в случае с другими инцидентами, в отчете об оценке перечислены выявленные проблемы и затронутые файлы, связанные с этим правилом.
Полное руководство по разработке правил доступно на azure.github.io/appcat-docs/rules-development-guide.
Заметки о выпуске
6.3.9.0
Этот выпуск содержит следующие исправления и включает набор новых правил. Дополнительные сведения см. в описании параметра ниже.
Общие обновления
- Интегрированные изменения из вышестоящего репозитория Windup (выпуск 6.3.9.Final).
- Устранены неработающие ссылки в описаниях правил и текст справки.
Правила
- Очередь сообщений Azure: обновлены и добавлены новые правила для azure-message-queue-rabbitmq и azure-message-queue-amqp.
- Служебная шина Azure: введено правило обнаружения для Служебная шина Azure.
- MySQL и PostgreSQL: уточнены правила обнаружения зависимостей.
- Правила Azure-AWS: улучшены и улучшены существующие правила.
- S3 Spring Starter: добавлено правило обнаружения для S3 Spring Starter.
- RabbitMQ Spring JMS: добавлено правило обнаружения для RabbitMQ Spring JMS.
- Правила ведения журнала: обновлены и уточнены правила, связанные с ведением журнала.
- Правило локального хранилища: обновлено и обновлено локальное правило хранения.
- Правило файловой системы Azure: обновлено и обновлено правило файловой системы Azure.
Библиотеки
- Обновлены библиотеки для устранения уязвимостей безопасности.
6.3.0.9
Этот выпуск содержит следующие исправления и включает набор новых правил. Дополнительные сведения см. в описании параметра ниже.
- Устранена проблема с правилом
localhost-java-00001
. - Введены новые правила для выявления таких технологий, как AWS S3, AWS SQS, Alibaba Cloud OSS, Alibaba Cloud SMS, Alibaba Scheduler X, Alibaba Cloud Seata и Alibaba Rocket MQ.
- Обновлена
azure-file-system-02000
поддержка расширений XML-файлов. - Обновлены различные библиотеки для устранения уязвимостей безопасности.
6.3.0.8
Ранее набор целевых объектов был включен по умолчанию, что затрудняет оценку больших приложений с слишком большим количеством инцидентов, связанных с менее критическими проблемами. Чтобы уменьшить шум в отчетах, теперь пользователи должны указать несколько целевых объектов с параметром --target
при выполнении appcat
, предоставляя им возможность выбрать только целевые объекты, которые имеют значение.
6.3.0.7
Выпуск общедоступной версии приложения службы "Миграция Azure" и оценки кода.
Лицензия
Оценка приложений и кода службы "Миграция Azure" для Java — это бесплатное средство открытый код без затрат и лицензированное по той же лицензии, что и вышестоящий проект WindUp.
Часто задаваемые вопросы
Вопрос. Где можно скачать последнюю версию приложения службы "Миграция Azure" и оценку кода для Java?
Вы можете скачать appcat
из aka.ms/appcat/azure-appcat-cli-latest.zip.
Вопрос. Где можно найти дополнительные сведения об оценке приложения и кода службы "Миграция Azure" для Java?
При скачивании appcat
вы получите каталог документов со всеми сведениями , которые необходимо приступить к работе.
Вопрос. Где можно найти определенные правила Azure?
Все правила Azure доступны в репозитории правил appcat GitHub.
Вопрос. Где можно найти дополнительные сведения о создании пользовательских правил?
См. руководство по разработке правил для приложения и оценки кода службы "Миграция Azure" для Java.
Вопрос. Где можно получить помощь при создании пользовательских правил?
Лучший способ получить справку — создать проблему в репозитории GitHub для наборов правил appcat.