Оценка приложения и кода службы "Миграция Azure" для Java

В этом руководстве описывается, как использовать средство оценки приложений и кода службы "Миграция Azure" для Java для оценки и повторной оплаты любого типа приложения Java. Это средство позволяет оценить готовность приложения к повторной подготовке и миграции в Azure.

appcat — это средство командной строки из службы "Миграция Azure" для оценки двоичных файлов приложений Java и исходного кода для выявления возможностей повторной подготовки и миграции для Azure. Это помогает модернизировать и переформатировать крупномасштабные приложения Java, определяя распространенные варианты использования и шаблоны кода и предлагая рекомендуемые изменения.

appcat обнаруживает использование технологий приложений с помощью статического анализа кода, поддерживает оценку усилий и ускоряет переплатформирование кода, помогая перемещать приложения Java в Azure. С помощью набора подсистем и правил он может обнаруживать и оценивать различные технологии, такие как Java 11, Java 17, Jakarta EE 10, Quarkus, Spring и т. д. Затем он помогает переформатировать приложение Java на разные целевые объекты Azure (службы приложение Azure, Служба Azure Kubernetes, приложений контейнеров Azure и Azure Spring Apps) с определенными правилами повторной формы Azure.

appcatоткрытый код и основан на WindUp, проекте, созданном Red Hat и опубликованном в рамках общедоступной лицензии Eclipse.

Когда следует использовать оценку приложения и кода службы "Миграция Azure"?

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

С помощью appcatэтого приложения можно выполнить следующие задачи:

  • Обнаружение использования технологий: быстро узнать, какие технологии используются приложением. Обнаружение полезно, если у вас есть устаревшие приложения с не большой документацией и хотите знать, какие технологии они используют.
  • Оцените код для определенного целевого объекта: оцените приложение для конкретного целевого объекта Azure. Проверьте усилия и изменения, которые необходимо выполнить для повторной регистрации приложений в Azure.

Поддерживаемые целевые объекты Azure

Это средство содержит правила для повторной оплаты приложений, чтобы можно было развернуть и использовать следующие службы Azure.

В качестве целевых объектов развертывания можно использовать следующие службы:

  • Служба приложений Azure
  • Azure Spring Apps
  • Служба Azure Kubernetes
  • Приложения-контейнеры Azure
  • готовность к облаку
  • обнаружение
  • linux
  • openjdk11
  • openjdk17
  • openjdk21

В качестве служб ресурсов можно использовать следующие службы:

  • Базы данных Azure
  • Служебная шина Azure
  • Хранилище Azure
  • Azure CDN
  • Центры событий Azure
  • Azure Key Vault

Использование оценки приложений и кода службы "Миграция Azure" для Java

Чтобы использовать appcat, необходимо скачать ZIP-файл, описанный в следующем разделе, и установить совместимый JDK 11+ на компьютере. appcat работает в Windows, Linux или Mac для оборудования Intel, Arm и Apple Silicon. Для запуска можно использовать Microsoft Build of OpenJDK.appcat

Загрузка

appcat Интерфейс командной строки доступен для скачивания в виде ZIP-файла из aka.ms/appcat/azure-appcat-cli-latest.zip.

Запуск appcat

Распакуйте ZIP-файл в выбранной папке. Затем вы получите следующую структуру каталогов:

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

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

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

./appcat \
    --input ./<my-application-source-path or my-application-jar-war-ear-file> \
    --target discovery

Этап обнаружения полезен, если у вас нет определенного целевого объекта Azure. appcat В противном случае выполняется обнаружение неявно для любого целевого объекта Azure.

Оценка приложения Java для конкретного целевого объекта

Этап оценки заключается в appcat анализе приложения и его компонентов, чтобы определить его пригодность для повторной оплаты и определить возможные проблемы или ограничения. Этот этап включает анализ кода приложения и проверка его соответствие выбранному целевому объекту Azure или целевому объекту OpenJDK.

Чтобы проверка доступных целевых объектов, выполните следующую команду:

./appcat --listTargetTechnologies

Выходные данные этой команды выглядят примерно так:

Available target technologies:
    azure-aks
    azure-appservice
    azure-container-apps
    azure-spring-apps
    cloud-readiness
    discovery
    linux
    openjdk11
    openjdk17
    openjdk21

Затем можно запустить appcat один из доступных целевых объектов Azure, как показано в следующем примере:

./appcat \
    --input ./<my-application-source-path or my-application-jar-war-ear-file> \
    --target azure-appservice

Вы можете запустить appcat один из доступных целевых объектов OpenJDK, как показано в следующем примере:

./appcat \
    --input ./<my-application-source-path or my-application-jar-war-ear-file> \
    --target openjdk11

Получение результатов из appcat

Результатом этапов обнаружения и оценки является подробный отчет, который предоставляет план для переплатформирования и модернизации приложения Java, включая рекомендации по службе Azure и подходу к повторной обработке. Отчет служит основой для следующих этапов процесса реплатформирования. Он помогает организациям узнать о усилиях, необходимых для такого преобразования, и принимать решения о том, как модернизировать свои приложения для максимальной выгоды.

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

В следующих разделах содержатся дополнительные сведения о отчете.

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

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

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

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

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

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

Отчет об обнаружении

Отчет об обнаружении — это отчет, созданный на этапе обнаружения. В нем показан список технологий, используемых приложением в категории "Информация ". Этот отчет просто сообщает вам о технологии, appcat обнаруженной.

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

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

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

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

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

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

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

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

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

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

Настраиваемые правила

Вы можете рассматривать 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 Spring Apps и приложений контейнеров 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"/>
        <targetTechnology id="azure-spring-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.

Лицензия

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

Следующие шаги