Ir al contenido

Puertos efectivos y reescritura de URLs

Dos de las cosas más tediosas de levantar varios micros a mano —puertos que colisionan y URLs que hay que reapuntar— MicroLab las resuelve solo, y lo hace sin modificar el código de los repos.

Casi todos los micros declaran el mismo puerto (típicamente 8080). Si levantas varios, colisionan. MicroLab remapea los puertos en tiempo de ejecución: cada micro recibe un puerto efectivo libre, y ese es el que usa de verdad. El puerto declarado en el manifiesto puede cambiar al arrancar; en las vistas del escenario ves el puerto efectivo de cada micro.

Cuando un micro llama a otro core, la URL que usa depende de cómo hayas resuelto esa dependencia (local, nube o mock). MicroLab calcula la URL efectiva y la inyecta como configuración al arrancar: propiedades de sistema en la familia JVM (-D…), variables de entorno en Node/Python. El repo no se toca; todo se hace por inyección.

La dirección correcta de un mismo servicio depende de desde dónde se le llame: un micro nativo lo alcanza por localhost:<puerto>, pero uno en contenedor necesita la dirección interna de la red de Docker. A eso se le llama perspectiva: MicroLab resuelve los hosts con la perspectiva de cada cliente (máquina o contenedor) para que la comunicación funcione en modo mixto.

Es el mismo motivo por el que Kafka se configura con doble listener: el advertised listener que anuncia debe ser alcanzable desde donde corre cada cliente.