Probando los microservicios
En este tutorial, aprenderemos cómo probar el microservicio Clients utilizando los diferentes métodos de comunicación que hemos implementado: REST, gRPC y eventos de dominio con RabbitMQ. Veremos cómo realizar pruebas de extremo a extremo para asegurar que nuestro microservicio funciona correctamente en todos sus aspectos. Usaremos Postman para las pruebas REST y gRPC, y la interfaz de RabbitMQ para la prueba de eventos.
¿Por qué Probar los Microservicios?
Las pruebas son esenciales para asegurar la calidad, estabilidad y confiabilidad de los microservicios. En este contexto, las pruebas abarcan tanto la lógica interna de un microservicio como su integración con otros servicios. Probar adecuadamente los microservicios nos permite:
- Detectar errores: Identificar bugs en el código de forma temprana.
- Asegurar la funcionalidad: Verificar que las operaciones REST, gRPC y los consumidores de eventos funcionen según lo esperado.
- Garantizar la integración: Asegurar que los microservicios se comuniquen correctamente con otros servicios y la infraestructura.
- Mejorar la calidad: Aumentar la confianza en el código y reducir el riesgo de errores en producción.
¿Qué Aprenderás?
- Cómo probar las operaciones REST de un microservicio utilizando Postman.
- Cómo probar las operaciones gRPC de un microservicio utilizando Postman.
- Cómo probar los consumidores de eventos de un microservicio usando RabbitMQ.
- Validar la información en la base de datos MongoDB.
- Verificar la información en la base de datos Redis.
Prerrequisitos
Para seguir este tutorial, necesitarás tener instalado lo siguiente:
- Ejecutar el entorno de desarrollo de CodeDesignPlus con Docker Compose que se explicó en el siguiente artículo.
- Completar el tutorial de Creación de un Microservicio para crear el microservicio Clients.
- Completar el tutorial de Soporte para gRPC
- Completar el tutorial de Soporte para Eventos de Dominio
Depuración y Pruebas
Si tienes todos los prerrequisitos listos, puedes comenzar a depurar y probar tu microservicio Clients. Para ello, necesitarás tener el microservicio en ejecución y los recursos de infraestructura necesarios levantados.
-
Establecemos los puntos de interrupción en nuestro código para depurar el microservicio. Para este ejemplo, estableceremos un punto de interrupción en el método
Create
del controlador y en el métodoHandle
del comandoCreateClientCommand
. -
Iniciamos la depuración de nuestro microservicio. En Visual Studio Code, puedes dar click derecho en el proyecto
Acme.Net.Microservice.Client.Rest
y seleccionarDebug
>Start New Instance
. -
La depuración se iniciará. Abra una nueva ventana del navegador con la URL de la API http://localhost:5000/swagger/index.html. Puedes realizar peticiones HTTP a la API y depurar el código en tiempo real.
Pruebas con REST (Postman)
Para probar la API REST de nuestro microservicio Clients, utilizaremos Postman, una herramienta popular para realizar pruebas de APIs.
-
Inicia el proyecto
Acme.Net.Microservice.Client.Rest
en modo de depuración. Asegúrate de que el microservicio Clients esté en ejecución. -
Abre Postman y haz click en el botón Import en la barra de navegación.
-
Copia la URL de la especificación Swagger http://localhost:5000/swagger/v1/swagger.json y pégala en el campo
Enter a URL
de Postman. -
Configuramos la autenticación para obtener el token con nuestro servidor de identidades. Para este ejemplo, usaremos Azure B2C el cual tiene registrada la aplicación
Postman
y elScope
api
para obtener eltoken
. -
Obtenemos el token JWT dando click en el botón
Get New Access Token
-
Completa los campos con la información de tu servidor de identidades
-
Autorizamos al navegador para completar el proceso con la aplicación
Postman
-
En
Postman
se mostrará el token JWT obtenido para el cual debemos dar click en el botónUse Token
-
Configuramos la variable
baseUrl
con la URL de la API http://localhost:5000 -
Por ultimo, podemos realizar peticiones HTTP a nuestra API de forma sencilla y rápida. Para el ejemplo, realizaremos una petición
POST
a la URL{{baseUrl}}/api/v1/clients
para crear un nuevo cliente.
Pruebas con gRPC (Postman)
Para probar la API gRPC de nuestro microservicio Clients, también utilizaremos Postman, que ahora ofrece soporte para gRPC.
-
Inicia el proyecto
Acme.Net.Microservice.Client.Grpc
en modo de depuración. Asegúrate de que el microservicio Clients esté en ejecución. -
En postman, no permite tener las request de gRPC y REST en la misma collección, por lo que es necesario crear una nueva colección para las request de gRPC. Para ello, haz click en el botón
New
y seleccionagRPC
. -
Ingresa la dirección
localhost:5001
del servidor gRPC y el archivo.proto
del microservicio en la secciónImport a .proto file
. Sin embargo, Postman hara uso deUse Server Reflection
para importar el archivo.proto
del microservicio de forma automática. Esto es posible dado que el arquetipo de microservicios de CodeDesignPlus habilita el servicio de reflexión del servidor gRPC para ambientes de desarrollo. -
Para realizar las pruebas, selecciona el servicio
Client
y el métodoGetClient
y añade el cuerpo del mensajeGetClientRequest
con el id del cliente. -
Configuramos el token JWT en la cabecera de la petición. Para ello, selecciona la pestaña
Authorization
y en el campoToken
pega el token JWT obtenido al realizar una petición a la API REST. -
Por ultimo, antes de realizar la petición, asigna el header
X-Tenant
con el valor del registro a consultar creado en la Api REST.Puedes consultar el registro creado en la Api REST en la base de datos MongoDB para obtener el valor del
X-Tenant
por si no lo recuerdas. -
Con estas configuraciones, puedes realizar la petición gRPC dando click en el botón
Invoke
para iniciar la comunicación bidireccional entre Postman y el servidor gRPC. Posterirmente, podras hacer click en el botónSend
para enviar la petición y asi obtener la respuesta del servidor gRPC.
Pruebas de Eventos (RabbitMQ)
Para probar los consumidores de eventos, confirmaremos que los eventos son publicados y consumidos correctamente utilizando la interfaz de administración de RabbitMQ.
-
Inicia el proyecto
AsyncWorker
del microservicio Clients en modo de depuración. Asegúrate de que el microservicio Clients esté en ejecución ingresando a la URL http://localhost:5002. -
Inicia el proyecto
Rest
del microservicio Subscriptions en modo de depuración. Asegúrate de que el microservicio Subscriptions esté en ejecución. (Configura otro puerto diferente al del microservicio Clients) -
Accede a la Interfaz de RabbitMQ: Abre un navegador y ve a la URL
http://localhost:15672
. Utiliza el usuarioadmin
y contraseñapassword
.Como muestraa la imagen, la interfaz de administración de RabbitMQ se abrirá. Aquí podrás ver los exchanges, creados automáticamente por
CodeDesignPlus.Net.Sdk
. Por cada evento de dominio que tengamos en nuestro microservicio, se creará un exchange con el nombre[bussiness].[appname].v[number-version].[aggregate|entity].[event]
.En caso de las queues, estas son creadas automáticamente por
CodeDesignPlus.Net.Sdk
cuando existe un consumer asociado a un evento de dominio. Estos son creados cuando se ejecuta el proyectoCodeDesignPlus.Net.Microservice.Clients.AsyncWorker
. -
Cancela una Suscripción: Realiza una petición
PATH
al endpoint de la API REST del microservicio Subscriptions (/api/subscriptions/{id}
) para cancelar una suscripción ficticia de un cliente. Esto publicará el eventoSubscriptionCanceledDomainEvent
. -
Al publicar el evento, el consumidor
AsyncWorker
del microservicio Clients lo consumirá y realizará la lógica de negocio asociada. Puedes colocar puntos de interrupción en el consumidor para verificar que el evento es consumido correctamente.
Validación de los Datos en MongoDB
El microservicio de Clientes utiliza MongoDB como base de datos para persistir la información de los clientes. Puedes acceder a la base de datos MongoDB utilizando una herramienta de administración de bases de datos como MongoDB Compass o Robo 3T.
Como puedes ver, la información del cliente fue correctamente almacenada en la collección ClientAggregate
y cuando se canceló la suscripción y se proceso el evento SubscriptionCanceledDomainEvent
, no solo se actualizó el estado del cliente, sino que también se almacenó la información del evento en la colección SubscriptionAggregate
.

Validación de Cache en Redis
El microservicio de Clientes utiliza Redis como base de datos en memoria para almacenar información de forma rápida y eficiente. En el momento de consultar la información de un cliente, se verifica primero si la información está en Redis antes de consultar la base de datos MongoDB. Puedes acceder a la interfaz de administración de Redis en http://localhost:5540.

Validación de Eventos en RabbitMQ
El microservicio de Clientes y Subscriptions utiliza RabbitMQ como broker de mensajes para la comunicación asíncrona entre microservicios. Puedes acceder a la interfaz de administración de RabbitMQ en http://localhost:15672 con las credenciales por defecto admin
y password
.

Conclusiones
En este tutorial, aprendimos cómo probar los microservicios utilizando diferentes métodos de comunicación: REST, gRPC y eventos de dominio con RabbitMQ. Realizamos pruebas de extremo a extremo para asegurar que nuestro microservicio Clients funciona correctamente en todos sus aspectos. Utilizamos Postman para las pruebas REST y gRPC, y la interfaz de RabbitMQ para la prueba de eventos. También validamos la información en la base de datos MongoDB y Redis.
Los codigos de este tutorial se encuentran en los siguientes repositorios: