Aller au contenu

Ports effectifs et réécriture des URLs

Deux des choses les plus fastidieuses quand on lance plusieurs micros à la main —les ports qui entrent en collision et les URLs qu’il faut repointer— MicroLab les résout tout seul, et il le fait sans modifier le code des dépôts.

Presque tous les micros déclarent le même port (typiquement 8080). Si vous en lancez plusieurs, ils entrent en collision. MicroLab remappe les ports à l’exécution : chaque micro reçoit un port effectif libre, et c’est celui-là qu’il utilise vraiment. Le port déclaré dans le manifeste peut changer au démarrage ; dans les vues du scénario, vous voyez le port effectif de chaque micro.

Quand un micro appelle un autre core, l’URL qu’il utilise dépend de la façon dont vous avez résolu cette dépendance (local, cloud ou mock). MicroLab calcule l’URL effective et l’injecte comme configuration au démarrage : propriétés système dans la famille JVM (-D…), variables d’environnement dans Node/Python. Le dépôt n’est pas touché ; tout se fait par injection.

L’adresse correcte d’un même service dépend d’où on l’appelle : un micro natif l’atteint par localhost:<port>, mais un en conteneur a besoin de l’adresse interne du réseau Docker. C’est ce qu’on appelle la perspective : MicroLab résout les hôtes avec la perspective de chaque client (machine ou conteneur) pour que la communication fonctionne en mode mixte.

C’est la même raison pour laquelle Kafka est configuré avec un double listener : l’advertised listener qu’il annonce doit être atteignable depuis où tourne chaque client.