Оценка приложения и кода службы "Миграция Azure" для Java версии 7 (предварительная версия)
Примечание.
Эта статья предназначена для следующего поколения оценки приложения и кода службы "Миграция Azure" для Java версии 7.x. Эта версия доступна в предварительной версии. Для предыдущей стабильной версии версии 6.x см. оценку приложения и кода службы "Миграция Azure" для Java.
В этой статье показано, как использовать средство оценки приложений и кода службы "Миграция Azure" для Java для оценки и повторной оплаты любого типа приложения Java. Это средство позволяет оценить готовность приложения к повторной подготовке и миграции в Azure. Это средство предлагается в качестве интерфейса командной строки (CLI), а также оценивает двоичные файлы приложений Java и исходный код для выявления возможностей реплатформирования и миграции для Azure. Это помогает модернизировать и переформатировать крупномасштабные приложения Java, определяя распространенные варианты использования и шаблоны кода и предлагая рекомендуемые изменения.
Средство обнаруживает использование технологии приложений с помощью статического анализа кода, обеспечивает оценку усилий и ускоряет переплатформирование кода. Эта оценка помогает определить приоритеты и переместить приложения Java в Azure. С помощью набора подсистем и правил средство может обнаруживать и оценивать различные технологии, такие как Java 11, Java 17, Jakarta EE, Spring, Hibernate, Служба сообщений Java (JMS) и многое другое. Затем это средство помогает переформировать приложение Java для различных целевых объектов Azure — службы приложение Azure, Служба Azure Kubernetes и приложений контейнеров Azure с определенными правилами реплатформирования Azure.
Это средство основано на наборе компонентов в проекте Cloud Native Computing Foundation Konveyor, созданном и возглавляемом Red Hat.
Обзор
Это средство предназначено для того, чтобы организации модернизировали свои приложения 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 |
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
интерфейс командной строки, необходимо скачать пакет, характерный для вашей среды, и иметь необходимые зависимости в вашей среде.
appcat
Интерфейс командной строки выполняется в любой среде, такой как Windows, Linux или Mac, с помощью оборудования Intel, Arm или Apple Silicon.
Для требования JDK рекомендуется использовать Microsoft Build of OpenJDK.
ОС | Архитектура | Ссылка для скачивания | Другие файлы |
---|---|---|---|
x64 | |||
Windows | x64 | Скачать | sha256 / sig |
macOS | x64 | Скачать | sha256 / sig |
Linux | x64 | Скачать | sha256 / sig |
AArch64 | |||
Windows | AArch64 / ARM64 | Скачать | sha256 / sig |
macOS | Apple Silicon | Скачать | sha256 / sig |
Linux | AArch64 / ARM64 | Скачать | sha256 / sig |
Необходимые компоненты
- Скачайте и установите Microsoft Build openJDK 17. Убедитесь, что задана переменная среды JAVA_HOME .
-
Скачайте Apache Maven и установите локально. Убедитесь, что двоичный файл
mvn
Maven () доступен с помощьюPATH
переменной среды. - Скачайте и установите Python 3.
Установка
Чтобы установить appcat
, скачайте соответствующий ZIP-файл для платформы. После скачивания файла в зависимости от операционной системы необходимо найти .tar.gz (Linux/macOS) или файл .zip (Windows).
Извлеките двоичный файл из скачаированного файла. Вы увидите следующую структуру папок:
/azure-migrate-appcat-for-java-cli-<OS>-<architecture>-<release-version>-preview/
├── appcat.exe (Windows) / appcat (Linux/macOS)
├── samples/
├── fernflower.jar
├── LICENSE
├── NOTICE.txt
├── maven.default.index
├── jdtls/
├── static-report/
├── rulesets/
├── readme.md
└── readme.html
Запуск инструмента
Вариант 1. Запуск appcat из скачаной папки
Измените каталог на извлеченную папку:
cd /azure-migrate-appcat-for-java-cli-<OS>-<architecture>-<release-version>-preview/
./appcat --help
Примечание.
Двоичный appcat
файл сначала ищет свои зависимости в текущем каталоге, где он выполняется, и возвращается к следующему сценарию, если они не найдены.
Вариант 2. Добавление двоичного пути appcat к $PATH
Переместите содержимое папки в папку APPCAT в домашнем каталоге пользователя— $HOME/.appcat в Linux/Mac и %USERPROFILE%/.appcat в Windows.
Добавьте папку PATH
APPCAT в переменную среды, чтобы можно было запустить средство из любой папки в терминале.
mv <path-to-extracted>/azure-migrate-appcat-for-java-cli-<OS>-<architecture>-<release-version>-preview/ $HOME/.appcat
Примечание.
В этом контексте, когда appcat
двоичный файл вызывается из другой папки, отличной от того, где он установлен, он ищет свои зависимости в папке APPCAT в домашнем каталоге пользователя.
Использование
Подкоманды
AppCAT предоставляет два подкоманда для использования:
-
analyze
: выполните анализ исходного кода для входного исходного кода или двоичного файла. -
transform
: преобразуйте xml-правила из предыдущих версий (6 и более ранних версий) в формат YAML, используемый этой версией.
Примечание.
Для пользователей macOS: если при попытке запустить приложение возникла ошибка с сообщением "Apple не удалось проверить", эту ошибку можно устранить с помощью следующей команды:
xattr -d -r com.apple.quarantine /path/to/appcat_binary
Например:
xattr -d -r com.apple.quarantine $HOME/.appcat/appcat
Анализ подкоманда
analyze
Подкоманда позволяет выполнять исходный код и двоичный анализ.
Чтобы проанализировать исходный код приложения, выполните следующую команду:
./appcat analyze --input=<path-to-source-code> --output=<path-to-output-directory> --target=azure-appservice --overwrite
Флаг --input
должен указывать на каталог исходного кода или двоичный файл, и --output
должен указывать на каталог для хранения результатов анализа.
Дополнительные сведения о флагах анализа выполните следующую команду:
./appcat analyze --help
Чтобы проверить доступные целевые объекты для AppCAT, выполните следующую команду:
./appcat analyze --list-targets
Эта команда выдает следующий результат:
available target technologies:
azure-aks
azure-appservice
azure-container-apps
azure-spring-apps
cloud-readiness
linux
openjdk11
openjdk17
openjdk21
Анализ нескольких приложений
AppCAT предназначен для анализа одного приложения на выполнение команд, но если вы используете --bulk
этот параметр, можно проанализировать несколько приложений в одном выполнении. Этот параметр создает один статический отчет в выходном каталоге, который содержит результаты для всех приложений.
Чтобы проанализировать несколько приложений, выполните следующую команду:
./appcat analyze --bulk --input=<path-to-source-A> --output=<path-to-output-ABC> --target=<targetname>
./appcat analyze --bulk --input=<path-to-source-B> --output=<path-to-output-ABC> --target=<targetname>
./appcat analyze --bulk --input=<path-to-source-C> --output=<path-to-output-ABC> --target=<targetname>
Преобразование подкоманда
transform
Подкоманда позволяет преобразовать предыдущие appcat
xml-правила, используемые в версии 6.x, в новый формат YAML, используемый этой версией 7.x.
Чтобы преобразовать правила, выполните следующую команду:
./appcat transform rules --input=<path-to-xml-rules> --output=<path-to-output-directory>
Флаг --input
должен указывать на файл или каталог, содержащий правила XML, и --output
флаг должен указывать на выходной каталог для преобразованных правил YAML.
Примеры
Примечание.
Убедитесь, что для скриптов в извлеченной папке заданы разрешения на выполнение.
В папке примеров можно найти пример веб-приложения с именем airsonic.war. Airsonic — это веб-медиапоток, предоставляющий доступ к вашей музыке и позволяя вам поделиться им с друзьями. Дополнительные сведения о Airsonic см. в статье Airsonic.
В каталоге примеров можно найти следующие скрипты для выполнения различных типов анализа:
- Оценка выполнения. Предоставляет отчет с оценкой кода и этапами миграции Airsonic в приложение Azure Service в Tomcat.
- правила run-assessment-transform-rules: преобразует правила Windup XML в правила YAML, совместимые с анализатором lsp.
- run-assessment-custom-rules: предоставляет отчет об оценке кода с помощью пользовательских правил (преобразование XML в YAML).
- run-assessment-openjdk21: создает отчет с оценкой кода и этапами миграции Airsonic в OpenJDK 21.
- только для выполнения оценки пакета: создает отчет, оценивая определенные пакеты.
В зависимости от операционной системы запустите соответствующий сценарий, как показано в следующем примере:
./samples/run-assessment
Отчеты создаются автоматически и запускаются. Отчеты можно найти в разделе .. /samples/report-* (Linux/macOS) или .. \samples\report-* (Windows).
Сводка по анализу
Целевая страница отчета содержит все технологии, используемые в приложении. Панель мониторинга содержит сводку по анализу, включая количество инцидентов преобразования, категории инцидентов или точки истории.
При увеличении масштаба круговой диаграммы "Инциденты по категориям " можно увидеть количество инцидентов по категориям: обязательный, необязательный и потенциальный.
На панели мониторинга также отображаются точки истории. Точки истории — это абстрактная метрика, часто используемая в разработке программного обеспечения Agile для оценки уровня усилий, необходимых для реализации функции или изменения.
appcat
использует точки истории для выражения уровня усилий, необходимых для переноса конкретного приложения. Точки истории не обязательно переводятся в рабочие часы, но значение должно быть согласовано между задачами.
Отчет об оценке
В отчете об оценке представлены общие сведения о проблемах преобразования, которые необходимо решить для переноса приложения в Azure.
Эти проблемы, также называемые инцидентами, имеют серьезность (обязательный, необязательный или потенциальный), уровень усилий и число, указывающее точки истории. Точки истории определяются путем вычисления количества инцидентов времени, необходимого для решения проблемы.
Подробные сведения о конкретной проблеме
Для каждого инцидента можно получить дополнительные сведения (сведения о проблеме, содержимое правила и т. д.), просто выбрав его. Вы также получите список всех файлов, затронутых этим инцидентом.
Затем для каждого файла или класса, затронутого инцидентом, можно перейти в исходный код, чтобы выделить строку кода, создавшего проблему.
Заметки о выпуске
7.6.0.1
Этот выпуск содержит следующие исправления и улучшения.
-
--analyze-known-libraries
флаг. Теперь работает в Windows. - Очистка каталога. Дополнительные каталоги, созданные во время анализа в Windows, теперь автоматически очищаются.
-
--json-output
флаг: теперь работает. - Ошибка синтаксического анализа правил: устранена ошибка
unable to parse all the rules for ruleset
. - Описания вкладок аналитики: добавлены отсутствующие описания правил.
- Зависимость подключения к Интернету: анализ больше не завершается без подключения к Интернету.
-
--context-lines
флаг: теперь работает должным образом, если задано значение 0. - Удалено требование Python для запуска средства.
7.6.0.0
Этот выпуск основан на другом наборе компонентов проекта Konveyor.
Общие обновления
- Новый модуль на основе проекта LSP анализатора Konveyor с интерфейсом командной строки на основе проекта Konveyor Kantra.
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" и оценки кода.
Известные проблемы
7.6.0.1
- Флаг
--overrideProviderSettings
не поддерживается. - Проблемы с правилами:
-
azure-system-config-01000
java-removals-00150
,http-session-01000
правила не активируются. -
FileSystem - Java IO
правило не активируется.
-
- Анализ ФАЙЛОВ WAR в Windows приводит к следующей ошибке:
Failed to Move Decompiled File
Ошибка при анализе WAR-файлов в Windows, которая отвечает за несколько избыточных инцидентов, созданных в ОС Windows. - Ошибка в канале ошибок наблюдателя в Windows:
Windows system assumed buffer larger than it is, events have likely been missed
Это сообщение об ошибке отображается в командной строке во время длительных заданий в Windows. - Ctrl+C не удается остановить текущий анализ. Чтобы обойти работу, вручную завершите процесс путем явного убийства процесса.
- В отчетах двоичного анализа заголовок фрагмента кода отображает неправильный или несуществующий путь к файлу.
7.6.0.0
- Флаг
--analyze-known-libraries
не работает в Windows. - В Windows во время анализа создаются следующие дополнительные папки, но не удаляются автоматически после завершения. Вы можете удалить эти дополнительные папки после завершения анализа.
- metadata.
- org.eclipse.osgi
- org.eclipse.equinox.app
- org.eclipse.core.runtime
- org.eclipse.equinox.launcher
- Флаг
--overrideProviderSettings
не поддерживается. - Флаг
--json-output
не поддерживается. В будущем выпуске он создает выходные данные JSON для выходных файлов output.yaml и dependency.yaml . - Проблемы с правилами:
-
azure-system-config-01000
java-removals-00150
,http-session-01000
правила не активируются. -
FileSystem - Java IO
правило не активируется. - Ошибка
unable to parse all the rules for ruleset
при выполнении анализа. Эта ошибка возникает во время анализа, когда средство не сможет проанализировать все правила в наборе правил.
-
- Анализ ФАЙЛОВ WAR в Windows приводит к следующей ошибке:
Failed to Move Decompiled File
Ошибка при анализе WAR-файлов в Windows, которая отвечает за несколько избыточных инцидентов, созданных в ОС Windows. - Отсутствующие описания для некоторых правил на вкладке "Аналитика ". Некоторые правила тегов отсутствуют в описаниях, что приводит к пустым заголовкам, отображаемым на вкладке "Аналитика " отчета.
- Ошибка в канале ошибок наблюдателя в Windows:
Windows system assumed buffer larger than it is, events have likely been missed
Это сообщение об ошибке отображается в командной строке во время длительных заданий в Windows. - Для этого выпуска требуется активное подключение к Интернету для анализа зависимостей.
- Ctrl+C не удается остановить текущий анализ. Чтобы обойти работу, вручную завершите процесс путем явного убийства процесса.
- Если флаг
--context-lines
имеет значение 0, он не работает должным образом. Этот флаг позволяет пользователю ограничить объем исходного кода в отчете. Значение 0 может не работать должным образом.
Лицензия
Служба "Миграция Azure" и оценка кода для Java — это бесплатное средство на основе открытый код.