Pergunta recebida: pra que serve esse SPOA (Stream Processing Offload Agent) do HAProxy?
O HAProxy suporta pelo menos 2 formas de extensão para inspeção de tráfego: script Lua ou SPOE (Stream Processing Offload Engine).
Esses recursos permitem que tu inspecione o tráfego conforme tuas regras de negócio e enriqueça a transação (requisição-resposta) com variáveis que podem ser posteriormente avaliadas em ACL’s e ações como bloquear a requisição, fazer throttling, logar algo específico.
Esse mecanismo SPOE define um protocolo SPOP (Stream Processing Offload Protocol) que permite comunicar com aplicações externas, tipo em Go (óbvio!), para que elas implementem lógicas de negócio que tua aplicação principal precise.
Os exemplos mais conhecidos de SPOA são a implementação de Web Application Firewall (ex: Coraza WAF) e análise de geolocalização.
No meu caso, preciso registrar um histórico com o último timestamp de acesso a hostnames únicos.
Armazeno isso em base chave-valor e injeto um header “Last-Access: 1705443033” (por exemplo) quando uma aplicação nossa chama o proxy numa rota específica, tipo “algum-hostname/get-last-access”. Essa aplicação usa essa informação para regras de renovação de certificados TLS.
Esse mecanismo SPOE não é bloqueante e tudo é bem configurado para que esse processamento externo não onere a requisição mais que um determinado limite de tempo.
“Mas Isa, não era mais fácil fazer em Lua?”
Se tua lógica é bem simples, pode fazer.
Mas não era o meu caso :)
--
Com carinho,
Isadora.
Top comments (1)
Não sabia que SPOE era não bloqueante! tava dando uma fuçada por aqui pra entender mais e achei teu artigo em PT hehe. Obrigado, Isadora!