Implementar estratégia de circuit break na ingestão de dados (ES / PG)

Description

01 - STAKEHOLDER (quem valida e esclarece):
02 - PROBLEMA (cenário e/ou dor):

Enfrentamos no dia 04/fev, instabilidades no ES, impactando nossa API da Carol. Identificamos que isso ocorreu, pois foram feitas várias chamadas de PUT no schema, gerando tasks de notify schema e sobrecarregando o ES.

  • A instabilidade começou por volta das 16:35. Foi identificado um grande volume de chamadas simultâneas de PUT mapping, possivelmente disparadas por automação do SmartLink ao tentar atualizar esquemas de tabelas.

  • Novas colunas começaram a ser enviadas a partir de tabelas do Protheus para o SmartLink, que por sua vez acionou a atualização de schemas no ES para muitas tenants. Isso gerou um volume alto de requisições, levando à instabilidade.

  • Mesmo quando a API retornava erro 500, o MDM ainda tentava executar PUT mapping no ES. Além disso, a repetição dessas chamadas em loop agravou a sobrecarga.

  • O ambiente foi estabilizado ao remover o ES do load balancer, interrompendo temporariamente as requisições.

Para mais detalhes acesse a thread.


03 - OBJETIVO (solução proposta):

  • Implementar estratégia de circuit breaker para evitar que o MDM continue enviando requests de PUT mappings para o ES em casos de erros.


04 - QUEM PODE USAR (perfis de usuários):
05 - ASSETS (links e arquivos relevantes):
06 - CRITÉRIOS DE ACEITE:

  • Entender porque estamos efetuando gravação do schema no ES (put mapping), sendo que este recurso já foi inativado a um certo tempo (por volta de 2023).

  • Detecção automática da degradação do ES ou PG pelo mdm, diminuindo a vazão de requests (rate limit) para o banco de dados (ES ou PG), com objetivo de evitar a queda total e permitindo a plataforma se recuperar.