Dividiendo programas heredados en microservicios sin romper nada

¿Cómo se modernizan las aplicaciones heredadas de empresa sin romper nada? Migrar a arquitecturas basadas en microservicios puede ser más fácil de lo que piensas, o al menos más fácil que hace unos años. Mi nombre es Maja Vuković y hoy compartiré contigo cómo utilizar la inteligencia artificial para automatizar la refactorización de aplicaciones. En 2023, hemos lanzado Project CodeNet, un conjunto de datos que consta de más de 14 millones de ejemplos de código derivados de más de 500 millones de líneas de código en más de 55 lenguajes. A medida que crecía la comunidad de desarrolladores, ingenieros e investigadores, hubo nuevas incorporaciones al Proyecto CodeNet. Uno de estos avances es Project Minerva para la Modernización. Project Minerva para la Modernización aborda los desafíos en la refactorización automatizada de aplicaciones. Así que echemos un vistazo.

El desafío de las aplicaciones heredadas de empresa

Típicamente, los sistemas heredados de empresa siguen una arquitectura de aplicación de tres niveles, comenzando con la capa superior siendo la interfaz de usuario, seguida de la lógica empresarial, que se comunica e interactúa con una o más bases de datos. Dentro de la capa de lógica empresarial, hay múltiples programas y clases que se comunican y dependen entre sí, y algunos de ellos pueden dejar de usarse. La mayoría de los enfoques tradicionales de refactorización de aplicaciones tienen como objetivo derivar una arquitectura de microservicios más modular. ¿Qué significa esto? Significa que la lógica empresarial se divide en múltiples microservicios, cada uno de los cuales está destinado a ser más individual y autónomo, para que pueda detectar fallos más fácilmente. Es más fácil tener equipos individuales que los supervisen y es más fácil gestionarlos una vez implementados. Cada uno de ellos también se comunica con una base de datos separada. Sin embargo, con los algoritmos existentes, a veces puede suceder que las clases que forman estos microservicios en realidad estén más acopladas entre sí, lo que resulta en un monolito distribuido o requiere una reescritura adicional para manejar y orquestar estas dependencias. Problemas similares pueden surgir de las transacciones distribuidas que esencialmente se rompen como parte del proceso de modernización. Aquí es donde entra en juego Project Minerva para la Modernización para abordar estos desafíos.

Artículos relacionados  ¿Cómo Evitar Ataques por Cantidad? Medidas de Seguridad

¿Cómo funciona Project Minerva para la Modernización?

En la práctica, reunimos la innovación del análisis de programas, junto con los avances en inteligencia artificial y aprendizaje automático, para mejorar la calidad de la partición de los microservicios. Todos conocemos las complejidades de los viajes aéreos y la reserva de vuelos. Retrocedamos y veamos cómo funciona típicamente una aplicación. Enfoquémonos en un par de clases, como las clases A, B y C. La clase A es «order» (pedido), la clase B es «buy ticket action» (acción de compra de boleto), que llama y depende de la clase «config ticket». La mayoría de los algoritmos solo observamos los flujos de llamadas entre las clases. Recomendarían que el ticket de pedido A se pueda hacer para el microservicio uno y que B y C se agrupen juntos en el microservicio dos. Sin embargo, a medida que nos adentramos, en realidad hay una dependencia y un acoplamiento estrecho entre las dos clases. Dentro del montón, comparten unos objetos, como el controlador SQL y el pedido de boleto. Además, ambos escriben en la misma base de datos. Así que, con la recomendación anterior, en realidad tendrías que hacer algún trabajo para remediar ese alto acoplamiento entre las clases A y B. Aquí es donde entra en juego el algoritmo Cargo, que forma parte del Project Minerva para la Modernización. Observa el enredo del código y los datos y resuelve las acciones distribuidas. Basado en estas observaciones, Cargo recomendaría que las clases A y B formen un microservicio y que la clase C se separe en otro microservicio. Esto mejora la calidad de la partición. Puede parecer demasiado simple: solo hay tres clases. Pero todos conocemos las complejidades de los sistemas aéreos. Tienes múltiples bases de datos, puntos, usuarios, vuelos, etc. Tienes miles o incluso decenas de miles de clases y múltiples interacciones. Realmente necesitas mucho esfuerzo para obtener particiones ideales. Hemos aplicado el algoritmo Cargo a varias aplicaciones de ejemplo. Además de remediar las transacciones distribuidas, también ayuda a reducir la latencia y aumentar el rendimiento. Además, mejora la calidad de las particiones, lo que significa que reduce el acoplamiento y aumenta la cohesión de las particiones de los microservicios. Cargo no solo puede aplicarse a escenarios de modernización. De hecho, Cargo también puede ayudarte a analizar los microservicios desarrollados desde cero y mejorar su calidad.

Artículos relacionados  Garantizando la equidad y imparcialidad del procesamiento del lenguaje natural AI

Únete a Project Minerva para la Modernización

Con esto, me gustaría invitarte a unirte a Project Minerva para la Modernización, ya que pronto lanzaremos desafíos. Únete a nosotros en esta misión para mejorar y avanzar en el estado del arte de la refactorización de aplicaciones. Gracias.

Resumen

Nombre del ProyectoDescripción
Project CodeNetConjunto de datos con más de 14 millones de ejemplos de código en más de 55 lenguajes.
Project Minerva para la ModernizaciónAborda los desafíos de la refactorización automatizada de aplicaciones.
CargoAlgoritmo que mejora la calidad de la partición de los microservicios.

Preguntas frecuentes

¿Qué es la refactorización automatizada de aplicaciones?

La refactorización automatizada de aplicaciones es el proceso de mejorar la estructura y el diseño de una aplicación sin cambiar su funcionalidad externa. Se busca aumentar la calidad del código, reducir el acoplamiento y aumentar la cohesión.

¿Cómo ayuda Project Minerva para la Modernización en la refactorización de aplicaciones?

Project Minerva para la Modernización utiliza la inteligencia artificial y el aprendizaje automático para mejorar la calidad de la partición de los microservicios, reduciendo el acoplamiento y aumentando la cohesión. También remedia las acciones distribuidas y puede ayudar a reducir la latencia y aumentar el rendimiento.

¿Cómo puedo unirme a Project Minerva para la Modernización?

Puedes unirte a Project Minerva para la Modernización participando en los desafíos que se lanzarán próximamente. Únete a la comunidad de desarrolladores, ingenieros e investigadores en esta misión de mejorar y avanzar en la refactorización de aplicaciones.

Espero que este artículo te haya dado una visión general de cómo utilizar la inteligencia artificial para automatizar la refactorización de aplicaciones en el contexto de las aplicaciones heredadas de empresa. Si estás interesado en aprender más sobre este tema, te animo a que explores nuestros artículos relacionados. ¡Hasta luego y gracias por leer!

Artículos relacionados  Problemas comunes en modelos predictivos

¿Te ha resultado útil??

0 / 0

Deja una respuesta 0

Your email address will not be published. Required fields are marked *