¿Es un antipatrón utilizar el descubrimiento de servicios directamente?

Los microservicios necesariamente necesitan usar alguna forma de descubrimiento de servicios para localizar y comunicarse con otros microservicios. La manera más fácil de comenzar es probablemente dejando que su sistema de descubrimiento de servicios maneje otro intermediario bien entendido, como DNS o HAProxy. Pero estas soluciones tienen desventajas: el DNS tarda en actualizarse y le da muy poco control a los clientes, lo que hace que sea difícil o imposible hacer cosas como actualizaciones continuas o un balanceo adecuado; Las soluciones basadas en proxy introducen un cuello de botella que también puede convertirse en un único punto de falla.

Por estas razones, muchas organizaciones optan por hacer que los microservicios establezcan y mantengan conexiones al sistema de descubrimiento de servicios directamente y, de hecho, mantengan su propio grupo de instancias con equilibrio de carga, tolerancia a fallas y circuito roto localmente. Esto tiene la ventaja de un control mucho mayor de las dependencias y los comportamientos del lado del cliente, a costa de poner más responsabilidad a los microservicios.

Definitivamente no es un antipatrón. La mayoría de las tiendas de microservicios grandes funcionan de esta manera y han creado herramientas para soportarlo; Finagle de Twitter, Eureka de Netflix y paquetes genéricos como (el mío) el kit Go admiten este estilo. Y la mayoría de los sistemas de descubrimiento de servicios esperan ser utilizados de esta manera, como Consul.

Yo diría que aún no lo sabemos. Ponerle una capa de abstracción hace que sea más fácil burlarse y usarse en el desarrollo … Pero al final del día, haz lo que tenga sentido.

Infierno. El código de espagueti tiene sentido a veces …

No, no es antipatrón si quieres envolverlo o usarlo directamente en ambos casos, no estás violando ninguna restricción, sí, como Rob Landers dijo que lo fácil es burlarse ahora, depende de cómo mires hacia el simulacro.

Gracias