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.
Porta efetiva
Seção intitulada “Porta efetiva”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.
Reescrita de URLs
Seção intitulada “Reescrita de URLs”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.
Perspetiva (host ou contentor)
Seção intitulada “Perspetiva (host ou contentor)”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.