Salta ai contenuti

Porte effettive e riscrittura degli URL

Due delle cose più tediose nell’avviare più micro a mano —porte che collidono e URL da ripuntare— MicroLab le risolve da solo, e lo fa senza modificare il codice dei repo.

Quasi tutti i micro dichiarano la stessa porta (tipicamente 8080). Se ne avvii diversi, collidono. MicroLab rimappa le porte a runtime: ogni micro riceve una porta effettiva libera, ed è quella che usa davvero. La porta dichiarata nel manifesto può cambiare all’avvio; nelle viste dello scenario vedi la porta effettiva di ogni micro.

Quando un micro chiama un altro core, l’URL che usa dipende da come hai risolto quella dipendenza (local, cloud o mock). MicroLab calcola l’URL effettivo e lo inietta come configurazione all’avvio: proprietà di sistema nella famiglia JVM (-D…), variabili d’ambiente in Node/Python. Il repo non viene toccato; tutto avviene per iniezione.

L’indirizzo corretto di uno stesso servizio dipende da dove viene chiamato: un micro nativo lo raggiunge tramite localhost:<porta>, ma uno in container ha bisogno dell’indirizzo interno della rete Docker. Questa si chiama prospettiva: MicroLab risolve gli host con la prospettiva di ogni client (macchina o container) affinché la comunicazione funzioni in modalità mista.

È lo stesso motivo per cui Kafka è configurato con un doppio listener: l’advertised listener che annuncia deve essere raggiungibile da dove gira ogni client.