Поделиться через


Оценка приложения и кода службы "Миграция 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

Необходимые компоненты

Установка

Чтобы установить 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).

Сводка по анализу

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

Снимок экрана: сводный отчет appcat.

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

На панели мониторинга также отображаются точки истории. Точки истории — это абстрактная метрика, часто используемая в разработке программного обеспечения Agile для оценки уровня усилий, необходимых для реализации функции или изменения. appcat использует точки истории для выражения уровня усилий, необходимых для переноса конкретного приложения. Точки истории не обязательно переводятся в рабочие часы, но значение должно быть согласовано между задачами.

Снимок экрана: сводный отчет об инциденте AppCAT.

Отчет об оценке

В отчете об оценке представлены общие сведения о проблемах преобразования, которые необходимо решить для переноса приложения в Azure.

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

Снимок экрана: отчет об оценке AppCAT.

Подробные сведения о конкретной проблеме

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

Снимок экрана: отчет о проблеме AppCAT.

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

Снимок экрана: отчет о коде проблемы AppCAT.

Заметки о выпуске

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.

Общие обновления

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 — это бесплатное средство на основе открытый код.