denisismagilov - Fotolia

Evaluar Conozca los pros y contras de las tecnologías, productos y proyectos que está considerando.

Una lección sobre cómo probar microservicios localmente

Los microservicios son pequeñas partes de un panorama general, por lo que son difíciles de probar de forma aislada. Utilice estos consejos para ejecutar pruebas unitarias y de integración localmente en microservicios.

En los primeros días de los microservicios, un desarrollador escribió 20 líneas de código y luego registró un subdominio en una dirección IP y un puerto. Diez años después, ese proceso es aún más fácil. Con la ayuda de la abstracción de la nube y sin servidor, los desarrolladores pueden escribir el código, publicarlo en un entorno de control de versiones y conectar un sistema a ese código; la gestión del servidor, el escalado y otros procesos de back-end se manejan en la nube.

Pero, ¿cómo se prueban localmente estas aplicaciones basadas en microservicios alojados en la nube? Puede probar en una máquina local, o al menos en un contenedor local, antes de enviar el código a un entorno de prueba. Sin embargo, una aplicación típica basada en microservicios llama hasta 60 servicios separados. Para probar estas aplicaciones complejas localmente, deberá ensamblar cada servicio individual, y probablemente las bases de datos subyacentes, en la máquina local. Probar microservicios localmente a menudo implica ejecutar media docena de sesiones de terminal en una máquina.

Una mejor opción es separar y aislar los servicios, lo que siempre es una buena idea cuando se realizan pruebas unitarias o pruebas de integración en arquitecturas de aplicaciones complejas. Primero, revisaremos el proceso de prueba de microservicios localmente, incluidas las pruebas unitarias y de integración. Luego, veremos algunas técnicas efectivas para el aislamiento de servicios, como la virtualización de servicios y los clústeres de prueba de nube privada.

Aislar componentes

Con un marco de prueba, como JUnit para código Java, es posible probar piezas de una aplicación basada en microservicios como unidades individuales. Cuando esas pequeñas colecciones de métodos comprobables se encuentran en una dependencia, como una conexión de base de datos, puede usar la inyección de dependencia para crear los stubs, simulacros y falsificaciones necesarios para probar con precisión el servicio. Cuando se trata de pruebas unitarias simples, existen patrones fáciles de aprender, como el patrón Organizar, Actuar y Afirmar. Organizar, actuar y afirmar (Arrange, Act, Assert) requiere una configuración, acción y luego validación de un resultado.

Probar un servicio mientras se ejecuta, integrado con otros componentes, es un asunto diferente. Las pruebas de integración son un poco más complicadas que las pruebas unitarias. En lugar de crear simulaciones a nivel de unidad, diseña pruebas para imitar las numerosas integraciones involucradas, de una manera realista.

La virtualización de servicios es una forma de registrar la respuesta de un servicio a una determinada llamada y luego reproducir la secuencia a pedido. Este enfoque proporciona un modelo de servicio ligero y predecible que puede probar según sea necesario. Y es probable que simule o elimine las bases de datos y otros componentes externos con los que interactúa.

Cuando no puede aislar microservicios

La virtualización de servicios, las dependencias cambiantes y los indicadores de prueba pueden ser difíciles de configurar. Necesita experiencia en ese tipo de codificación. Y los grupos de arquitectura pueden querer dictar la forma "correcta" de hacer frente a los servicios de prueba o evitar que los equipos de desarrollo adopten nuevas herramientas de virtualización.

Si no puede cambiar directamente el código para ejecutar pruebas de microservicios localmente como se describe anteriormente, intente crear un nuevo entorno que contenga la colección completa de servicios que desea probar. Para hacer eso, implemente un mecanismo que escanee e identifique cada dependencia. Pact.io es una herramienta de prueba de contratos de código abierto que puede hacer esto; Microservice Graph Explorer es otro.

Una vez que haya identificado los servicios y sus dependencias para probar, cree contenedores que puedan ejecutar el servicio y conéctelos todos a la misma base de datos de prueba. Luego, cree un clúster de prueba (use una nube pública o privada) que contenga los servicios reales y los datos simulados. Es posible que tenga la tentación de realizar estas pruebas localmente en un escritorio, ya que no necesitará permisos o licencias para hacerlo. Sin embargo, la simulación de varios servicios en un escritorio, junto con la sobrecarga de un administrador de clúster, genera problemas de rendimiento.

Esta técnica de crear todas las dependencias para un servicio e imitar lo que es apropiado es esencialmente un proyecto de infraestructura. Llevará mucho tiempo y será un poco caro. Sin embargo, una vez que se crea, tendrá la oportunidad de probar realmente los microservicios de forma aislada.

Investigue más sobre Desarrollo de aplicaciones

Inicie la conversación

Envíenme notificaciones cuando otros miembros comenten sobre este artículo.

Por favor cree un Nombre de usuario para poder comentar.

Close