Pollito Blog
October 2, 2024

La opinión de Pollito acerca del desarrollo en Spring Boot 1: Desarrollo impulsado por contratos

Posted on October 2, 2024  •  3 minutes  • 607 words  • Other languages:  English

Un poco de contexto

Esta es la primer parte de la serie de blogs Spring Boot Development .

Desarrollo impulsado por contratos

En el artículo de Wikipedia Design by contract wikipedia article , podemos encontrar la siguiente afirmación:

A design by contract scheme

[…] software designers should define formal, precise and verifiable interface specifications for software components, which extend the ordinary definition of abstract data types with preconditions, postconditions and invariants.

A partir de ahí, hice mi propia adaptación de la filosofía de desarrollo impulsado por contratos para la arquitectura de microservicios:

Los microservicios deben cumplir con un contrato, que define entradas, salidas y errores.

Entonces ¿qué es un contrato?

Contrato

Conjunto de aserciones que contienen la siguiente información:

En un contrato hay dos partes:

No existen reglas que establezcan con cuántos contratos cumple un microservicio ni qué funciones desempeña en ellos. Pero aquí están mis recomendaciones personales mantenernos lo más cerca posible de la definición original:

  1. Un microservicio cumple al menos con un contrato y desempeña el rol de proveedor.
  2. Un microservicio puede desempeñar el rol de consumidor en cero, uno o muchos contratos.
  3. Un microservicio puede desempeñar el rol de consumidor en cero, uno o muchos contratos.

Veamos cada uno con más detalle.

  1. Un microservicio cumple al menos con un contrato, desempeñando el rol de proveedor.

1provider1contractmanyconsumers

Para un microservicio que sigue estrictamente las prácticas de desarrollo impulsado por contratos, sin cumplir con esta regla, no tiene forma de ser invocado desde fuentes externas.

Tal vez haya situaciones en las que sea necesario tener un microservicio en ejecución, pero no poder invocarlo, pero al momento de escribir esto, no se me ocurre ninguna situación.

  1. Un microservicio puede desempeñar el rol de consumidor en cero, uno o muchos contratos.

1provider2contracts

Este punto no se trata de desarrollo impulsado por contratos, sino más bien de la filosofía adecuada de los microservicios. Un microservicio está pensado para ocuparse de una sola cosa y hacerla bien. Para lograrlo, tiene sentido que el microservicio sea un proveedor solo una vez, proporcionando los puntos finales para interactuar con la única cosa que hace bien.

Puede haber excepciones totalmente válidas a esto. Un ejemplo claro es un microservicio que expone un punto final actuator . Ahora tienes un microservicio que hace dos cosas, su función principal y expone una llamada de comprobación de estado. Y eso está totalmente bien.

  1. Un microservicio puede desempeñar el rol de consumidor en cero, uno o muchos contratos.

zero one many

Conclusión

Siguiente lectura

La opinión de Pollito acerca del desarrollo en Spring Boot 2: Mejores prácticas

Hey, check me out!

You can find me here