Funcionamiento del flujo de trabajo de modernización

Completado

La modernización de aplicaciones copilot de GitHub sigue un flujo de trabajo estructurado y de varias fases. Los pasos exactos varían ligeramente entre Java y .NET, pero el enfoque general es coherente.

Interactúa con el agente de modernización de forma diferente en función del IDE:

  • Visual Studio Code (Java). Abra la barra lateral de la extensión de modernización de aplicaciones. Seleccione tareas predefinidas o personalizadas en la lista de tareas. El agente se ejecuta en la ventana de chat de del agente de Copilot, mostrando el progreso y solicitando confirmación en los pasos clave.
  • Visual Studio (.NET). Haga clic con el botón derecho en un proyecto en el Explorador de soluciones y seleccione "Modernizar", o abra la ventana Chat de Copilot y escriba @modernize seguido de la solicitud. El agente ejecuta un flujo de trabajo de tres fases (evaluación, planeación, ejecución), escribiendo archivos markdown en .github/upgrades para su revisión.
  • CLI de Copilot. Ejecute mensajes de lenguaje natural en el terminal, como "Actualice este proyecto a JDK 21 y Spring Boot 3.2" o "Migre esta aplicación de S3 a Azure Blob Storage".
  • Agente en la nube de Copilot. Delegar las tareas de modernización a través de incidencias de GitHub o solicitudes de incorporación de cambios. El agente se ejecuta en la nube, trabajando de forma independiente como un desarrollador humano.

Las fases de modernización son las siguientes:

  1. Evaluación. El agente analiza el código, la configuración y las dependencias del proyecto. Genera un informe de evaluación que identifica cambios importantes, problemas de compatibilidad, patrones en desuso, problemas de preparación de la nube y ámbito de actualización. En escenarios de migración, evalúa la preparación de Azure y recomienda los servicios de Azure de destino.
  2. Planificación. En función de la evaluación, el agente crea un plan de modernización detallado. Para las actualizaciones, esto incluye qué API necesitan reemplazo, qué dependencias necesitan actualizar y una lista de tareas secuenciada. En el caso de las migraciones, asigna los componentes de la aplicación a los servicios de Azure y genera una hoja de ruta de corrección.
  3. Transformación de código. El agente aplica cambios de código mediante una combinación de transformaciones con tecnología de IA y herramientas de código abierto como OpenRewrite. Reemplaza las API en desuso, actualiza las versiones de dependencia, vuelve a escribir los archivos de configuración y aplica patrones de código específicos de Azure a partir de tareas predefinidas.
  4. Validación de compilación y análisis de CVE. Después de aplicar transformaciones, el agente compila automáticamente el proyecto y resuelve los errores de compilación. Examina los CV y aplica correcciones de seguridad. Migra o genera pruebas unitarias para validar que se conserva el comportamiento de la aplicación.
  5. Contenedorización y despliegue. El agente genera Dockerfiles, archivos de Infraestructura como Código y configuraciones de canalización de CI/CD para la implementación en Azure App Service, Azure Container Apps, AKS o AKS Automatic.

Una vez completadas todas las fases, el agente genera un informe de resumen que documenta los resultados del proceso de modernización. Este informe incluye información del proyecto, el número de líneas de código modificadas, una lista de dependencias actualizadas, un resumen de los cambios de código aplicados, cualquier problema de seguridad cve que se corrigió y cualquier problema secundario sin resolver que requiera seguimiento manual. El informe de resumen proporciona un registro completo de la actualización que puede usar durante la revisión del código, compartir con las partes interesadas o conservar con fines de cumplimiento y auditoría.

Tareas predefinidas

Las tareas predefinidas son patrones de migración codificados por expertos para escenarios comunes de Azure. Codifican los procedimientos recomendados y los aplican de forma coherente en todos los proyectos. Entre los ejemplos de tareas predefinidas se incluyen:

Las tareas predefinidas de Java incluyen:

  • Cambie de la autenticación basada en contraseña a las identidades administradas.
  • Migración de Amazon S3 a Azure Blob Storage.
  • Pase de las colas de mensajes locales a Azure Service Bus.
  • Migración de la configuración a Azure App Configuration.

Las tareas predefinidas de .NET incluyen:

  • Migración a bases de datos basadas en identidades administradas en Azure (Azure SQL DB, Azure SQL MI, Azure PostgreSQL).
  • Migrar la E/S de archivos a Azure File Storage o Azure Blob Storage.
  • Realice la transición de la autenticación a Microsoft Entra ID.
  • Reemplace las credenciales de texto no cifrado por Identidad administrada y Azure Key Vault.
  • Pasar de colas de mensajes heredadas (MSMQ, RabbitMQ, Amazon SQS) a Azure Service Bus.
  • Reemplace el correo electrónico SMTP por Azure Communication Service.
  • Transición a OpenTelemetry en Azure para registrar y observar.
  • Migre a Azure Cache for Redis con identidad administrada.
  • Migración a Confluent Cloud o Azure Event Hubs para Apache Kafka.

Tareas personalizadas

Las empresas suelen tener patrones de migración únicos. La modernización de aplicaciones copilot de GitHub genera automáticamente tareas personalizadas mediante el análisis de confirmaciones de código de aplicaciones migradas previamente. Estas tareas sirven como guías de corrección para problemas similares en otras aplicaciones, lo que permite al agente de modernización de aplicaciones de Copilot de GitHub aplicar patrones probados en varios código base. Con cada migración correcta, la base de conocimiento se expande, acelera las correcciones futuras y reduce el esfuerzo manual.

Para crear una tarea personalizada, abra la barra lateral de extensión de modernización de aplicaciones copilot de GitHub en Visual Studio Code, mantenga el puntero sobre la sección Tareas y seleccione Crear una tarea personalizada. Se abre un archivo task.md en el que se proporciona un nombre de tarea, un mensaje que describe el patrón de migración y una o varias referencias. Las referencias pueden incluir confirmaciones de Git desde una aplicación migrada previamente, vínculos externos o archivos de texto que ilustran la transformación deseada. Por ejemplo, si el equipo ya ha migrado un proyecto de RabbitMQ a Azure Service Bus, puede apuntar la tarea personalizada en la confirmación de Git que contiene esos cambios y el agente usará esa confirmación como patrón para aplicar cambios similares en otros código base. Una vez guardada, la tarea personalizada aparece en la sección Mis tareas de la barra lateral de extensión y se puede ejecutar como cualquier tarea predefinida. Las tareas personalizadas también se pueden compartir con otros miembros del equipo copiando la carpeta de tareas en el directorio .github/appmod/custom-tasks del proyecto del destinatario.

Generación de pruebas unitarias

La modernización de aplicaciones copilot de GitHub puede generar pruebas unitarias como una funcionalidad independiente, independientemente de un flujo de trabajo completo de actualización o migración. Esto resulta útil cuando los código base heredados tienen una cobertura de prueba baja o ninguna, que es común en las aplicaciones que son candidatas para la modernización.

Puede pedir al agente que genere pruebas unitarias antes de iniciar una actualización, lo que le proporciona una línea base para comprobar que el comportamiento de la aplicación se conserva después de la modernización. El agente instala ejecutores de pruebas si aún no están presentes, genera pruebas basadas en el código existente y las ejecuta para validar los resultados.

La generación de pruebas antes de actualizar es un procedimiento recomendado, ya que permite comparar los resultados de las pruebas antes y después de la transformación para confirmar que el código modernizado se comporta de forma idéntica al original.