Pular para o conteúdo

Portas efetivas e reescrita de URLs

Duas das coisas mais tediosas de iniciar vários micros à mão —portas que colidem e URLs que é preciso reapontar— o MicroLab resolve-as sozinho, e fá-lo sem modificar o código dos repos.

Quase todos os micros declaram a mesma porta (tipicamente 8080). Se iniciar vários, colidem. O MicroLab remapeia as portas em tempo de execução: cada micro recebe uma porta efetiva livre, e é essa que usa de verdade. A porta declarada no manifesto pode mudar ao arrancar; nas vistas do cenário vê a porta efetiva de cada micro.

Quando um micro chama outro core, o URL que usa depende de como resolveu essa dependência (local, cloud ou mock). O MicroLab calcula o URL efetivo e injeta-o como configuração ao arrancar: propriedades de sistema na família JVM (-D…), variáveis de ambiente em Node/Python. O repo não é tocado; tudo é feito por injeção.

O endereço correto de um mesmo serviço depende de onde é chamado: um micro nativo alcança-o por localhost:<porta>, mas um em contentor precisa do endereço interno da rede do Docker. A isso chama-se perspetiva: o MicroLab resolve os hosts com a perspetiva de cada cliente (máquina ou contentor) para que a comunicação funcione em modo misto.

É o mesmo motivo por que o Kafka é configurado com duplo listener: o advertised listener que anuncia tem de ser alcançável a partir de onde corre cada cliente.