Desarrollo de un simulador de (micro)servicios
Development of a (micro)services simulator
Ver/ Abrir
Identificadores
URI: https://hdl.handle.net/10902/30029Registro completo
Mostrar el registro completo DCAutoría
Lozano Merino, RubénFecha
2023-07Derechos
Attribution-NonCommercial-NoDerivatives 4.0 International
Palabras clave
Simulación de microservicios
Spring boot
Swagger
Pruebas de microservicios
Desarrollo de software
REST
Microservices simulation
Microservices testing
Software development
Resumen/Abstract
Cada día más sistemas informáticos se desarrollan siguiendo un enfoque basado en microservicios. De acuerdo con este enfoque, la parte del servidor de una aplicación software se descompone en una serie de servicios de pequeño tamaño y con una funcionalidad muy determinada, los cuales se conocen como microservicios. Estos microservicios necesitan con frecuencia comunicarse entre ellos para llevar a cabo una determinada operación. Por ejemplo, la realización de una compra siguiendo este enfoque podría requerir del alta de la nueva compra en el microservicio de compra, de la recuperación de la dirección habitual de entrega del microservicio de gestión de perfiles de los usuarios y de la inserción de una nueva orden de entrega en el microservicio de gestión de entregas a domicilio.
Por tanto, para poder desarrollar un determinado microservicio puede ser necesario tener que comunicarse con los otros microservicios de los que se dependa. Por ejemplo, volviendo al caso anterior, para poder desarrollar el microservicio de gestión de compras podríamos necesitar comunicarnos con los microservicios de gestión del perfiles del usuario y con el de gestión de entregas a domicilio.
El objetivo de este proyecto es desarrollar una herramienta que, a partir de la especificación de un microservicio, permita desplegar un servicio que simule el comportamiento de dicho microservicio. Es decir, el servicio desplegado debería ser capaz de recibir las mismas peticiones que el microservicio simulado, devolviendo para cada petición un modelo de respuesta predefinido o datos sintéticos. Por ejemplo, para el caso de la recuperación de la dirección habitual de entrega, el microservicio simulado podría devolver siempre la misma dirección de entrega o una dirección aleatoriamente generada.
De esta forma, los microservicios que dependen del microservicio simulado podrán utilizar durante su desarrollo la simulación en lugar del servicio original. Esto proporciona dos ventajas: (1) se evita tener que usar el servicio real durante el desarrollo de otros servicios, evitando que el desarrollo y pruebas de otros servicios interfieran con la operación natural de este; y, (2) se posibilita que se puedan desarrollar servicios que dependan del microservicio simulado antes de que este exista. Es decir, para desarrollar el microservicio de gestión de compras no sería necesario desarrollar los microservicios de gestión de perfiles de usuarios y de entregas a domicilio, bastaría con simularlos.
El proyecto se desarrollará dentro de la empresa NTT Data conforme a una metodología ágil. La especificación de la interfaz ofrecida por cada microservicio se realizará con OpenAPI. El proyecto se implementará sobre Spring y se utilizará la librería Swagger Parser para procesar el contenido de las especificaciones OpenAPI.
Every day, more computer systems are being developed following a microservices-based approach. According to this approach, the server part of a software application is broken down into a series of small, highly specific services, known as microservices. These microservices often need to communicate with each other to carry out a particular operation. For example, making a purchase following this approach might require the new purchase to be registered in the purchase microservice, the retrieval of the usual delivery address from the user profile management microservice, and the insertion of a new delivery order in the home delivery management microservice.
Therefore, to be able to develop a particular microservice, it may be necessary to communicate with the other microservices on which it depends. For example, returning to the previous case, to develop the purchase management microservice, we might need to communicate with the user profile management and home delivery management microservices.
The goal of this project is to develop a tool that, starting from the specification of a microservice, allows for the deployment of a service that simulates the behavior of said microservice. That is, the deployed service should be able to receive the same requests as the simulated microservice, returning a predefined response model or synthetic data for each request. For example, in the case of retrieving the usual delivery address, the simulated microservice could always return the same delivery address or a randomly generated address.
In this way, the microservices that depend on the simulated microservice can use the simulation during their development instead of the original service. This provides two advantages: (1) it avoids having to use the real service during the development of other services, preventing the development and testing of other services from interfering with its natural operation; and, (2) it enables services that depend on the simulated microservice to be developed before it exists. That is, to develop the purchase management microservice, it would not be necessary to develop the user profile management and home delivery management microservices, it would be enough to simulate them.
The project will be carried out within NTT Data company following an agile methodology. The specification of the interface offered by each microservice will be carried out with OpenAPI. The project will be implemented on Spring and the Swagger Parser library will be used to process the content of the OpenAPI specifications.