Evaluación de aplicaciones y código de Azure Migrate para Java
Nota:
Hemos publicado una nueva versión de Evaluación de aplicaciones y códigos Azure Migrate para Java, versión 7.x en versión preliminar, basada en un nuevo motor de analizador. Para descargar y experimentar con el nuevo motor, disponible para Windows, Linux y macOS, vea Evaluación de aplicaciones y códigos Azure Migrate para Java, versión 7
En esta guía se describe cómo usar la herramienta de evaluación de aplicaciones y códigos de Azure Migrate para Java para evaluar y replanificar cualquier tipo de aplicación Java. La herramienta le permite evaluar la preparación de la aplicación para la migración y la replanificación a Azure. Esta herramienta se ofrece como una CLI (interfaz de línea de comandos) y evalúa los archivos binarios de la aplicación Java y el código fuente para identificar las oportunidades de migración y expansión para Azure. Le ayuda a modernizar y replanificar aplicaciones Java a gran escala mediante la identificación de casos de uso comunes y patrones de código y la propuesta de cambios recomendados.
La herramienta detecta el uso de la tecnología de la aplicación a través del análisis estático de código, proporciona estimación de esfuerzo y acelera la expansión del código, lo que le ayuda a priorizar y mover aplicaciones Java a Azure. Con un conjunto de motores y reglas, puede detectar y evaluar diferentes tecnologías como Java 11, Java 17, Jakarta EE, Spring, Hibernate, Java Message Service (JMS) y mucho más. A continuación, le ayuda a replanificar la aplicación Java a diferentes destinos de Azure (Azure App Service, Azure Kubernetes Service y Azure Container Apps) con reglas específicas de replanificación. de Azure.
Esta herramienta es de código abierto y se basa en WindUp, un proyecto creado por Red Hat y publicado en bajo la licencia pública de Eclipse.
Información general
La herramienta está diseñada para ayudar a las organizaciones a modernizar sus aplicaciones Java de forma que reduzca los costos y permita una innovación más rápida. La herramienta usa técnicas de análisis avanzadas para comprender la estructura y las dependencias de cualquier aplicación de Java y proporciona instrucciones sobre cómo refactorizar y migrar las aplicaciones a Azure.
Con ella, podrá realizar las siguientes tareas:
- Detectar el uso de la tecnología: vea rápidamente qué tecnologías usa una aplicación. La detección es útil si tiene aplicaciones heredadas con poca documentación y quiere saber qué tecnologías usan.
- Evaluar el código para un destino específico: evalúe una aplicación para un destino específico de Azure. Compruebe el esfuerzo y las modificaciones que debe realizar para cambiar la plataforma de sus aplicaciones a Azure.
Destinos admitidos
La herramienta contiene reglas que le ayudarán a cambiar la plataforma de sus aplicaciones para que pueda implementarlas y usar diferentes servicios de Azure.
Las reglas utilizadas por la evaluación de códigos y aplicaciones de Azure Migrate se agrupan según un destino. Un destino es dónde o cómo se ejecuta la aplicación, y las necesidades y expectativas generales. Al evaluar una aplicación, puede elegir varios destinos. En la tabla siguiente se describen los destinos disponibles:
Destino | Descripción | ID |
---|---|---|
Azure App Service | Procedimientos recomendados para implementar una aplicación en Azure App Service. | azure-appservice |
Azure Kubernetes Service | Procedimientos recomendados para implementar una aplicación en Azure Kubernetes Service. | azure-aks |
Azure Container Apps | Procedimientos recomendados para implementar una aplicación en Azure Container Apps. | azure-container-apps |
Preparación para la nube | Procedimientos recomendados generales para preparar una aplicación en la nube (Azure). | cloud-readiness |
Detección | Identifica el uso de la tecnología, como bibliotecas y marcos. | discovery |
Linux | Procedimientos recomendados generales para preparar una aplicación para Linux. | linux |
OpenJDK 11 | Procedimientos recomendados generales para ejecutar una aplicación de Java 8 con Java 11. | openjdk11 |
OpenJDK 17 | Procedimientos recomendados generales para ejecutar una aplicación de Java 11 con Java 17. | openjdk17 |
OpenJDK 21 | Procedimientos recomendados generales para ejecutar una aplicación de Java 17 con Java 21. | openjdk21 |
Cuando la herramienta evalúa la preparación para la nube y los servicios de Azure relacionados, también puede notificar información útil para el posible uso de diferentes servicios de Azure. En la lista siguiente se muestran algunos de los servicios cubiertos:
- Bases de datos de Azure
- Azure Service Bus
- Azure Storage
- Azure Content Delivery Network
- Azure Event Hubs
- Azure Key Vault
- Azure Front Door
Descargar
Para usar la CLI de appcat
, debe descargar el archivo ZIP descrito en la sección siguiente y tener una instalación de JDK 11 o JDK 17 compatible en el equipo. La CLI de appcat
se ejecuta en cualquier entorno compatible con Java, como Windows, Linux o Mac, tanto para hardware Intel, Arm y Apple Silicon. Se recomienda usar el Microsoft Build de OpenJDK.
Descargar la aplicación y la evaluación de código de Azure Migrate para Java 6.3.9.0. Actualizado el 12-09-2024.
Para más información, consulte la sección notas de la versión.
Problemas conocidos
Es posible que algunas reglas no se desencadenen al analizar expresiones Lambda específicas. Para obtener más información, consulte el problema de GitHub.
La ejecución appcat
en un entorno que no sea unicode con caracteres complejos de doble byte provocará daños. Para obtener soluciones alternativas, consulte el problemade GitHub.
Versiones anteriores
Las siguientes versiones anteriores también están disponibles para descarga:
- Aplicación y evaluación de código de Azure Migrate para Java 6.3.0.9. Publicado el mes de agosto de 2024.
- Evaluación de aplicaciones y código de Azure Migrate para Java 6.3.0.8. Publicada en marzo de 2024.
- Evaluación de aplicaciones y código de Azure Migrate para Java 6.3.0.7. Publicada en noviembre de 2023.
Introducción
Para ejecutar appcat
, asegúrese de que tiene instalado un JDK compatible. La herramienta admite los siguientes JDK:
- Compilación de Microsoft de OpenJDK 11
- Compilación de Microsoft de OpenJDK 17
- JDK 11 de Eclipse Temurin™
- JDK 17 de Eclipse Temurin™
Después de tener instalado un JDK válido, asegúrese de que su directorio de instalación esté configurado correctamente en la variable de entorno JAVA_HOME
.
Para continuar, descargue y descomprima el paquete en una carpeta de su elección. A continuación, obtendrá la siguiente estructura de directorios:
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: este directorio contiene la documentación de
appcat
. -
bin: este directorio contiene los ejecutables de la CLI de
appcat
(para Windows/Linux/Mac). -
samples: este directorio contiene una aplicación de ejemplo y varios scripts para ejecutar
appcat
en la aplicación de ejemplo.
Para ejecutar la herramienta, abra una sesión de terminal y escriba el siguiente comando desde el directorio $APPCAT_HOME/bin:
./appcat --help
Para ejecutar la herramienta desde cualquier lugar del equipo, configure el directorio $APPCAT_HOME/bin en la variable de entorno PATH
y reinicie la sesión de terminal.
Documentación
En las siguientes guías se proporciona la documentación principal de appcat
para Java:
Detección del uso de la tecnología y la preparación de la nube sin un servicio de Azure en mente
La detección de tecnologías y objetivos de preparación para la nube proporcionan una gran información sobre la plataforma de aplicaciones y la modernización en la nube. La herramienta examina la aplicación y sus componentes para obtener una comprensión completa de su estructura, arquitectura y dependencias. También encuentra posibles problemas que podrían ser difíciles en un entorno de nube. El destino discovery
en particular se usa para crear un inventario detallado de la aplicación y sus componentes. Este inventario sirve como base para un análisis y planificación adicionales. Para obtener más información, consulte la sección Informe de detección.
Use el siguiente comando para iniciar la detección y la preparación para la nube:
./appcat \
--input ./<my-application-source-path or my-application-jar-war-ear-file> \
--target discovery cloud-readiness
Este tipo de informe es útil cuando no tiene un servicio de Azure específico en mente para implementar la aplicación.
La herramienta siempre realiza discovery
si se incluye o no ese valor en el parámetro --target
.
Evaluar de una aplicación Java
La fase de evaluación es donde la CLI de appcat
analiza la aplicación y sus componentes para determinar su idoneidad para la remodelación e identificar posibles desafíos o limitaciones. Esta fase implica analizar el código de la aplicación y comprobar su cumplimiento con los destinos seleccionados.
Puede seleccionar varios destinos mediante una lista delimitada por espacios de valores con el argumento --target
.
Para comprobar los destinos disponibles, ejecute el siguiente comando:
./appcat --listTargetTechnologies
Esto genera una salida similar a la del siguiente ejemplo:
Available target technologies:
azure-aks
azure-appservice
azure-container-apps
cloud-readiness
discovery
linux
openjdk11
openjdk17
openjdk21
A continuación, puede ejecutar appcat
mediante una o una combinación de destinos disponibles, como se muestra en el ejemplo siguiente:
./appcat \
--input ./<my-application-source-path or my-application-jar-war-ear-file> \
--target cloud-readiness linux azure-appservice
También puede ejecutar appcat
con uno de los destinos OpenJDK disponibles, como se muestra en el ejemplo siguiente:
./appcat \
--input ./<my-application-source-path or my-application-jar-war-ear-file> \
--target openjdk11
En el caso de los destinos de OpenJDK (Java), se recomienda elegir solo uno a uno.
Recomendación de destinos para la evaluación de Azure
Siempre que evalúe una aplicación para la implementación de Azure, se recomienda empezar con los siguientes destinos:
discovery
cloud-readiness
Además, especifique un servicio de Azure para la implementación, como azure-appservice
o azure-container-apps
.
Si piensa mover una aplicación de un entorno de Windows a una máquina virtual o contenedor Linux, se recomienda agregar también el destino de linux
.
Si tiene previsto mover una aplicación de una versión anterior de JDK a una versión más reciente, se recomienda elegir la siguiente versión principal en comparación con la versión anterior en uso por la aplicación. Por ejemplo, use openjdk11
cuando la aplicación esté implementada actualmente con Java 8.
Obtención de resultados de appcat
El resultado de las fases de detección y evaluación es un informe detallado que proporciona un mapa de ruta para la replanificación y modernización de la aplicación Java, incluidas las recomendaciones para el servicio de Azure y el enfoque de replanificación. El informe sirve como base para las siguientes fases del proceso de replanificación. Ayuda a las organizaciones a obtener información sobre el esfuerzo necesario para esta transformación y a tomar decisiones sobre cómo modernizar sus aplicaciones para obtener las máximas ventajas.
El informe generado por appcat
proporciona una visión general completa de la aplicación y sus componentes. Puede usar este informe para obtener información sobre la estructura y las dependencias de la aplicación, así como para determinar su idoneidad para la expansión y modernización.
En las secciones siguientes se proporciona más información sobre el informe.
Resumen del análisis
La página de aterrizaje del informe enumera todas las tecnologías que se usan en la aplicación. El panel proporciona un resumen del análisis, incluido el número de incidentes de transformación, las categorías de incidentes o los grados de dificultad del caso.
Al acercar el gráfico circular Incidentes por categoría, puede ver el número de incidentes por categoría: Obligatorio, Opcional, Potenciale Información.
El panel también muestra los grados de dificultad del caso. Los grados de dificultad del caso son una métrica abstracta que se usa habitualmente en Agile Software Development para calcular el nivel de esfuerzo necesario para implementar una característica o un cambio.
appcat
usa grados de dificultad del caso para expresar el nivel de esfuerzo necesario para migrar una aplicación determinada. Los grados de dificultad del caso no se traducen necesariamente en horas de trabajo, pero el valor debe ser coherente en todas las tareas.
Informe de detección
El informe de detección es un informe generado durante la Fase de detección. Muestra la lista de tecnologías usadas por la aplicación en la categoría Información. Este informe solo le informa sobre el uso de la tecnología que appcat
detectó.
Informe de evaluación
El informe de valoración proporciona información general sobre los problemas de transformación que tendrían que resolverse para migrar la aplicación a Azure.
Estos problemas, también denominados Incidentes, tienen una gravedad (Obligatoria,Opcional, Potencial o de Información), un nivel de esfuerzo y un número que indica los grados de dificultad del caso. Los grados de dificultad del caso se determinan calculando el número de incidentes durante el esfuerzo necesario para solucionar el problema.
Información detallada de un problema específico
Para cada incidente, puede obtener más información (el detalle del problema, el contenido de la regla, etc.) simplemente seleccionándolo. También obtendrá la lista de todos los archivos afectados por este incidente.
A continuación, para cada archivo o clase afectado por el incidente, puede saltar al código fuente para resaltar la línea de código que creó el problema.
Reglas personalizadas
Puede considerarse como un motor de reglas de appcat
. Usa reglas para extraer archivos de niveles de archivo de Java, descompilar clases de Java, examinar y clasificar tipos de archivo, analizar estos archivos y compilar los informes. En appcat
, las reglas se definen en forma de conjunto de reglas. Un conjunto de reglas es una colección de reglas individuales que definen problemas o patrones específicos que appcat
pueden detectar durante el análisis.
Estas reglas se definen en XML y usan el siguiente patrón de regla:
when (condition)
perform (action)
otherwise (action)
appcat
proporciona un conjunto completo de reglas de migración estándar. Dado que las aplicaciones pueden contener bibliotecas o componentes personalizados, appcat
le permite escribir sus propias reglas para identificar el uso de componentes o software que puede cubrir el conjunto de reglas existente.
Para escribir una regla personalizada, use un lenguaje específico de dominio enriquecido (DLS) expresado en XML. Por ejemplo, supongamos que quiere una regla que identifique el uso del controlador JDBC de PostgreSQL en una aplicación Java y sugiere el uso del Servidor flexible de Azure PostgreSQL en su lugar. Necesita una regla para buscar el controlador JDBC de PostgreSQL definido en un archivo de Maven pom.xml o un archivo de Gradle, como la dependencia que se muestra en el ejemplo siguiente:
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>runtime</scope>
</dependency>
Para detectar el uso de esta dependencia, la regla usa las siguientes etiquetas XML:
-
ruleset
: identificador único del conjunto de reglas. Un conjunto de reglas es una colección de reglas relacionadas con una tecnología específica. -
targetTechnology
: la tecnología a la que se dirige la regla. En este caso, la regla tiene como destino Azure App Services, Azure Kubernetes Service (AKS) y Azure Container Apps. -
rule
: elemento raíz de una sola regla. -
when
: condición que se debe cumplir para que se desencadene la regla. -
perform
: la acción que se va a realizar cuando se desencadena la regla. -
hint
: el mensaje que se va a mostrar en el informe, su categoría (Información, Opcional u Obligatoria) y el esfuerzo necesario para corregir el problema, que va de 1 (fácil) a 13 (difícil).
El siguiente XML muestra la definición de regla personalizada:
<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>
Después de ejecutar esta regla a través de appcat
, vuelva a ejecutar el análisis para revisar el informe generado. Al igual que con otros incidentes, el informe de evaluación enumera los problemas identificados y los archivos afectados relacionados con esta regla.
La guía completa para el desarrollo de reglas está disponible en azure.github.io/appcat-docs/rules-development-guide.
Notas de la versión
6.3.9.0
Esta versión contiene las siguientes correcciones e incluye un conjunto de reglas nuevas. Para obtener más información, consulte más adelante.
Actualizaciones generales
- Cambios integrados del repositorio ascendente de Windup (versión 6.3.9.Final).
- Vínculos rotos resueltos en descripciones de reglas y texto de ayuda.
Reglas
- Cola de mensajes de Azure: se han actualizado y agregado nuevas reglas para azure-message-queue-rabbitmq y azure-message-queue-amqp.
- Azure Service Bus: introdujo una regla de detección para Azure Service Bus.
- MySQL y PostgreSQL: reglas de detección de dependencias refinadas.
- Reglas de Azure-AWS: reglas existentes mejoradas y mejoradas.
- S3 Spring Starter: se ha agregado una regla de detección para S3 Spring Starter.
- RabbitMQ Spring JMS: se ha agregado una regla de detección para RabbitMQ Spring JMS.
- Reglas de registro: reglas actualizadas y refinadas relacionadas con el registro.
- Regla de almacenamiento local: se ha actualizado y refinado la regla de almacenamiento local.
- Regla del sistema de archivos de Azure: se ha actualizado y refinado la regla del sistema de archivos de Azure.
Bibliotecas
- Se han actualizado las bibliotecas para abordar las vulnerabilidades de seguridad.
6.3.0.9
Esta versión contiene las siguientes correcciones e incluye un conjunto de reglas nuevas. Para obtener más información, consulte más adelante.
- Se ha resuelto un problema con la regla
localhost-java-00001
. - Se introdujeron nuevas reglas para identificar tecnologías como AWS S3, AWS SQS, Alibaba Cloud OSS, Alibaba Cloud SMS, Alibaba Scheduler X, Alibaba Cloud Seata y Alibaba Rocket MQ.
- Se ha actualizado el
azure-file-system-02000
para que ahora admita extensiones de archivo xml. - Se han actualizado varias bibliotecas para abordar las vulnerabilidades de seguridad.
6.3.0.8
Anteriormente, un conjunto de destinos se habilitaba de forma predeterminada, lo que dificultaba que determinados clientes evaluaran aplicaciones grandes con demasiados incidentes relacionados con problemas menos críticos. Para reducir el ruido en los informes, los usuarios ahora deben especificar varios destinos, con el parámetro --target
, al ejecutar appcat
, lo que les da la opción de seleccionar solo los destinos que importan.
6.3.0.7
Versión de disponibilidad general (disponible con carácter general) de la evaluación de código y la aplicación de Azure Migrate.
Licencia
La evaluación de aplicaciones y códigos de Azure Migrate para Java es una herramienta gratuita de código abierto sin costo alguno y con licencia bajo la misma licencia que el proyecto WindUp ascendente.
Preguntas más frecuentes
P: ¿Dónde puedo descargar la versión más reciente de la evaluación de aplicaciones y códigos de Azure Migrate para Java?
Puede descargar appcat
desde aka.ms/appcat/azure-appcat-cli-latest.zip.
P: ¿Dónde puedo encontrar más información sobre la evaluación de código y la aplicación de Azure Migrate para Java?
Al descargar appcat
, obtendrá un directorio de documentos con toda la información que necesita para empezar.
P: ¿Dónde puedo encontrar las reglas específicas de Azure?
Todas las reglas de Azure están disponibles en el repositorio de GitHub de conjuntos de reglas de appcat.
P: ¿Dónde puedo encontrar más información sobre cómo crear reglas personalizadas?
Consulte la Guía de desarrollo de reglas para la evaluación de aplicaciones y códigos de Azure Migrate para Java.
P: ¿Dónde puedo obtener ayuda al crear reglas personalizadas?
La mejor manera de obtener ayuda es crear un problema en el repositorio de GitHub de conjuntos de reglas de appcat.