Superando la productividad en el desarrollo de microservicios con herramientas de IA

Mejorando la productividad en el desarrollo de microservicios con IA

Construir APIs y sus componentes relacionados a menudo es una tarea tediosa, especialmente al lidiar con modelos de datos y arquitecturas complejas como microservicios. La codificación repetitiva, la configuración de las configuraciones y la carga adicional de construir pruebas unitarias pueden volverse rápidamente consumidoras de tiempo. Aquí es donde las herramientas de IA, como ChatGPT, pueden marcar la diferencia.

Aprovechando las herramientas de IA (Chat GPT) en el desarrollo de APIs

Para comprender las capacidades de ChatGPT, sumerjámonos en un ejemplo práctico. Nos han encargado desarrollar una API REST para gestionar la Información de Identificación Personal (PII) de los usuarios. El proceso implica:

  1. Creación de objetos de base de datos (procedimiento almacenado)
  2. Repositorio (Interfaz para la interacción con la base de datos y el acceso a objetos de datos)
  3. Servicio (Capa de lógica de negocio)
  4. Controlador REST (Exponer endpoints)

Objetos de base de datos

Para construir un procedimiento almacenado, primero proporcione la estructura de la tabla a ChatGPT. Después, proporcione un ejemplo de procedimiento almacenado. Esto permitirá que ChatGPT se ancle al patrón del procedimiento almacenado y construya un nuevo procedimiento para la tabla especificada. A continuación se muestra la tabla que proporcionamos:

Aquí está el procedimiento almacenado que se ha generado:

Aquí está el enlace de la conversación.

Repositorio (Interfaz para la interacción con la base de datos y el acceso a objetos de datos)

En nuestro esfuerzo por construir la capa de repositorio, utilizamos un hilo dedicado de ChatGPT. Le proporcionamos el procedimiento almacenado y la definición de la tabla mencionados anteriormente. Aprovechando las capacidades de ChatGPT, generamos exitosamente:

  1. Una entidad JPA.
  2. Una clase de Repositorio completa que comprende tanto la interfaz como su implementación.

Después de la generación, asignamos a ChatGPT la tarea de crear casos de prueba unitarios. Impresionantemente, los resultados fueron casi perfectos. Fueron necesarios algunos ajustes menores, predominantemente relacionados con los espacios de nombres y algunos otros detalles menores.

A continuación se muestran las clases y el código generados:

Interfaz y Implementación del Repositorio

Pruebas Unitarias

Durante nuestra ejecución inicial, encontramos desafíos con el código generado para la implementación del repositorio. Los datos almacenados en nuestra base de datos estaban cifrados, lo que requería descifrar los valores persistidos. Refinamos el código de la capa del repositorio para abordar esto, integrando mecanismos de descifrado.

Después de implementar las modificaciones, proporcionamos a ChatGPT el código de repositorio actualizado, buscando un caso de prueba unitario correspondiente. Sorprendentemente, ChatGPT nos proporcionó un caso de prueba unitario perfectamente funcional.

Para aquellos interesados en el diálogo detallado, aquí está el enlace a nuestro hilo de conversación de ChatGPT.

Construyendo la capa de servicio de negocio

Para profundizar en nuestra exploración, ampliamos nuestros requisitos a una muestra de servicio ChatGPT existente, especificando dependencias como la entidad JPA y la interfaz del repositorio.

La herramienta de IA generó rápidamente las clases. La Interfaz del Servicio describía un contrato claro para obtener datos PII de usuarios basados en identificadores de usuario y préstamo. Su implementación, UserPIIDataServiceImpl, utilizaba el repositorio JPA para obtener los datos requeridos y, si eran nulos, devolvía una lista vacía, un detalle considerado para evitar posibles excepciones de puntero nulo.

La prueba unitaria, UserPIIDataServiceImplTest, fue completa. Utilizando Mockito para objetos simulados, la prueba verificó la funcionalidad del servicio organizando datos simulados, llamando al servicio y afirmado los resultados esperados.

A continuación se muestran las clases y el código generados:

Interfaz y Implementación del Servicio

Pruebas Unitarias

Aquí está el hilo de conversación para construir la capa de servicio.

Último paso: Generación del controlador REST

Después de configurar nuestras capas fundamentales, era hora de construir nuestro controlador REST. Para esto, aprovechamos una muestra de controlador REST existente como plantilla base. Proporcionamos a ChatGPT esta muestra junto con la interfaz del servicio y el objeto de entidad necesario.

En respuesta, ChatGPT generó un RestController adaptado a nuestros requisitos. A continuación se muestran las clases y el código generados:

Una característica destacada del código auto-generado fue la inclusión de anotaciones, específicamente ApiResponse y ApiOperation. Sin la intervención de ChatGPT, estas anotaciones esenciales podrían haber sido inadvertidamente pasadas por alto, lo que puede afectar la claridad y la calidad de la documentación de la API.

Después de generar el controlador REST, buscamos la ayuda de ChatGPT para producir casos de prueba unitarios. Inicialmente, las pruebas generadas estaban diseñadas como si estuvieran llamando a la API real. Sin embargo, nuestra intención era probar estrictamente el código del controlador. Después de proporcionar las instrucciones necesarias para centrarnos en el enfoque, ChatGPT entregó de manera efectiva el código de prueba unitaria adaptado. Aquí hay una captura de pantalla de la prueba unitaria generada:

Finalmente, para asegurarnos de que todo funcionara como se esperaba, realizamos una verificación del punto final de la API utilizando Postman. De manera satisfactoria, la API se comportó exactamente como se esperaba, mostrando la aplicabilidad práctica y precisión del código autogenerado. Aquí está el hilo de chat.

El ejemplo anterior puede parecer sencillo, pero también hemos aplicado este enfoque para construir puntos finales de API para insertar datos observando un patrón consistente. La verdadera ventaja se destaca cuando se trata de tablas extensas, digamos con 30 columnas. Definir manualmente los parámetros de los procedimientos almacenados y construir entidades con una multitud de atributos, cada uno requiriendo un mapeo preciso de columnas, puede ser un proceso tedioso y propenso a errores. Sin embargo, aprovechando herramientas como ChatGPT u otras utilidades de IA, se eliminan estas tareas repetitivas. Como resultado, los desarrolladores pueden producir código más eficiente y bien documentado con menos esfuerzo.

Conclusión

El ámbito tecnológico está evolucionando rápidamente. Con la llegada de herramientas de IA como ChatGPT, los desarrolladores ahora tienen poderosos aliados en sus esfuerzos de codificación. Al automatizar las tareas más tediosas y repetitivas en el desarrollo de API, estas herramientas no solo simplifican el proceso, sino que también mejoran drásticamente la calidad y precisión del código. Las experiencias compartidas en este artículo son un testimonio de que el potencial de la IA para revolucionar el desarrollo de software no es mera especulación, sino una realidad que estamos comenzando a abrazar. A medida que avanzamos, estas colaboraciones entre humanos y máquinas, sin duda, redefinirán el panorama de la ingeniería de software, abriendo puertas a nuevas posibilidades y niveles de eficiencia que antes se consideraban inalcanzables.

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Inteligencia Artificial

Dando a los usuarios más de lo que pueden manejar

¿Están los archivos de inteligencia artificial de Microsoft creando problemas de seguridad para los clientes?

Inteligencia Artificial

PoisonGPT Hugging Face LLM difunde noticias falsas

Los Grandes Modelos de Lenguaje (LLMs, por sus siglas en inglés) han ganado una popularidad significativa en todo el ...

Inteligencia Artificial

Esta investigación de IA presenta la integración de Lucene para una búsqueda vectorial potente con OpenAI Embeddings.

Últimamente, se han logrado avances significativos en la aplicación de redes neuronales profundas al campo de la búsq...

Aprendizaje Automático

Google AI presenta los complementos de difusión de MediaPipe que permiten la generación controlable de texto a imagen en el dispositivo.

Los modelos de difusión se han utilizado ampliamente con un notable éxito en la generación de texto a imagen en los ú...

Inteligencia Artificial

Analógico y Digital Lo Mejor de Ambos Mundos en un Sistema Eficiente en Energía

Un nuevo dispositivo combina semiconductores bidimensionales ultrafinos y materiales ferroeléctricos, con el objetivo...