DEV Community

Cover image for Plugins made-to-scale: uma visão sobre cache, filas e resiliência.
Jefferson Rodrigues for Lerian

Posted on

Plugins made-to-scale: uma visão sobre cache, filas e resiliência.

Quando falamos de infraestrutura financeira, resiliência não é um diferencial e sim um requisito. E na Lerian, cada plugin construído é pensado para garantir estabilidade mesmo em ambientes hostis: redes instáveis, dependências externas, falhas parciais e tráfego intenso.

Neste artigo, exploramos como cache, filas e boas práticas de resiliência são combinadas na arquitetura dos nossos plugins para criar soluções robustas, auditáveis e performáticas.

1. Cache: Performance sem comprometer a consistência.

Muitos plugins operam com dados de leitura frequente e alteração rara como, por exemplo, pacotes de tarifas e gerenciamento de tokens e lock de transações. Para esses casos, adotamos cache local e distribuído:

Valkey é usado para armazenar estruturas intermediárias e reduzir chamadas ao backend;

TTLs inteligentes ajudam a equilibrar escala e eficiência;
Embora não utilizemos eventos de pub/sub em todos os plugins, o cache é atualizado individualmente por cada serviço, conforme a lógica de funcionamento definida para cada um deles.

Essa camada reduz a latência de chamadas, alivia a pressão sobre o core e melhora a experiência do consumidor da API.

2. Filas: desacoplamento, resiliência e reatividade com integridade.

Plugins que se comunicam com serviços externos ou operam de forma assíncrona utilizam filas como mecanismo de segurança e desacoplamento. É o caso do Smart Templates e do próprio ledger, Midaz, que empregam filas para garantir que, em caso de erro, nenhuma informação se perca e a operação possa ser reprocessada com consistência.

Adotamos o RabbitMQ como broker padrão, tanto para persistência assíncrona de saldo quanto para orquestrar eventos como a criação de contas de asset.

Essa arquitetura atual, com mecanismo de retry, permite reatividade sem comprometer a integridade: se uma dependência estiver indisponível, a mensagem é retida e processada posteriormente.

3. Resiliência: Não é sobre evitar falhas, mas sobre suportá-las.

Nossos plugins seguem padrões de projeto defensivos:
Idempotência nativa: eventos são processados uma única vez, mesmo que reenviados;

Utilizamos a fila como mecanismo de retry, uma prática que garante resiliência operacional para evitar overload;

Observabilidade integrada com OpenTelemetry para tracing, métricas e logs estruturados.

Para garantir segurança e controle de acesso, cada plugin que se integra ao ledger pode utilizar uma credencial própria para se autenticar no Midaz. Com isso, conseguimos definir permissões específicas por plugin, evitando o uso de uma credencial única e reduzindo o risco de acessos indevidos.

4. Plugins como produtos de infraestrutura

Cada plugin é tratado como um componente core, com o mesmo rigor técnico aplicado ao próprio Midaz. Afinal, eles não ficam na borda: executam lógica crítica como cálculo de tarifas, câmbio, validação de acesso, entre outras funções sensíveis.

Cache, filas e resiliência não são acessórios. São fundamentos arquiteturais que garantem performance, consistência e estabilidade, mesmo diante de falhas externas ou cenários de alta complexidade.

Quer explorar o que estamos construindo?
🔗 github.com/lerianstudio

Top comments (0)