GBR: ADR-003 Ingress HTTP Norte-Sul e Resolução de 'Cold Start' via Micro-Retry Lock-Free | Wiki
Documentação de engenharia e especificações técnicas da Gleam-BR.
GBR: ADR-003 Ingress HTTP Norte-Sul e Resolução de "Cold Start" via Micro-Retry Lock-Free
- *Status:* Aceito
- *Data:* 2026-05-01
*Contexto:*
Enquanto a malha P2P (Tráfego Leste-Oeste) não for totalmente adotada na borda, o sistema precisa suportar ingestão de telemetria de agentes legados via HTTP POST (Tráfego Norte-Sul). No paradigma Erlang, o roteamento da telemetria para os Atores isolados no ETS é ultrarrápido (Lock-free). No entanto, o primeiro evento recebido de um novo servidor gerava uma falha de roteamento imediata ("Ator não encontrado"), pois o Ator de telemetria ainda estava sendo instanciado pelo Manager (condição conhecida como Cold Start). Bloquear o roteador à espera da criação do Ator destruiria o throughput do sistema.
*Decisão:*
-
*Chassi Web de Alta Performance:* Utilizar
wispemist(Servidor Erlang) para processamento HTTP. -
*Parsing Estrito (Parse, don't validate):* Todos os payloads JSON recebidos na borda da rede são submetidos ao
gleam/dynamic/decode. Apenas pacotes sintaticamente idênticos à assinatura doTelemetryEvententram no sistema; todo o resto recebe drop (Bad Request), atuando como firewall de sanitização de dados. -
*Padrão Micro-Retry Lock-Free (A Fachada):* Em vez de bloquear a thread de rede esperando o Manager iniciar o Ator, a função de Fachada (
monitor.ingest) despacha o pedido de criação, suspende a execução exclusivamente daquele pacote por 10 milissegundos (process.sleep(10)), e tenta inserir no ETS uma segunda vez.
*Consequências:*
- *Positivas:* Previne a perda de dados ("Zero Data Loss") no milissegundo inicial da implantação de um novo nó. Mantém o roteador principal operando em tempo O(1), sem mecanismos de Lock em tabela.
- *Negativas/Riscos:* Atraso de 10ms na resposta HTTP (ACK) exclusiva para a primeira métrica do ciclo de vida de um servidor monitorado (impacto ínfimo, porém arquiteturalmente presente).