Idempotência
A plataforma Devprime oferece uma abordagem de idempotência automática que permite controlar comandos duplicados em solicitações HTTP/gRPC e serviços Stream (Kafka, RabbitMQ).
Ao desenvolver um novo projeto baseado na tecnologia e arquitetura de software moderna da plataforma Devprime, que oferece aceleradores com implementações de código prontas para produção e componentes com comportamentos inteligentes, os projetos terão acesso a recursos poderosos, incluindo observabilidade (logs, distributed trace, métricas), retry, circuit-break, resiliência, acelerando e simplificando o desenvolvimento de sistemas distribuídos.
Os componentes da Devprime Stack que fazem parte da plataforma Devprime implementam estratégias modernas de sistemas distribuídos, como a abordagem de observabilidade com logs, distributed trace e métricas automáticas, que são compatíveis com o Open Telemetry.
Os logs são gerados automaticamente e incluem informações como Request ID, Correlation ID e Trace ID, permitindo a rastreabilidade entre diferentes réplicas e facilitando a indexação e busca por esses IDs nas principais ferramentas de mercado. Isso ajuda a manter o controle e a visibilidade das operações em ambientes distribuídos e escaláveis.
Os Adapters de Stream, State e Services disponibilizam estratégias de Retry, Circuit Break e Resiliência quando aplicáveis, capacitando os desenvolvedores de software a criar sistemas mais robustos e resilientes.
No exemplo abaixo o Adapter de Stream inicia a estratégia de Retry devido a uma indisponibilidade no serviço “RabbitMQ” e, em seguida, abre um Circuit Break para proteger os processos da aplicação devido a uma falha temporária na infraestrutura.
|
|
Nesta estratégia de resiliência, um Fallback é implementado para lidar com situações de falha em um serviço ou componente. Quando ocorre uma falha, o Fallback entra em ação, permitindo que a aplicação continue a funcionar de forma apropriada ou forneça uma alternativa ao usuário. Isso ajuda a garantir a disponibilidade e a capacidade de resposta da aplicação, mesmo em cenários adversos.
Iniciando a resiliência após receber um POST com o Adapter em circuit breaker
Ao analisar a linha 16, é possível observar o status “Not delivered” no envio do evento, e na sequência, na linha 26, vemos a informação do início da resiliência, preservando o evento em um fallback local.
|
|
Desligando o Circuit Breaker no Retorno do RabbitMQ, Recuperando o Evento e Enviando-o para a Fila do RabbitMQ
Ao analisar a linha 1, o Circuit Breaker é alterado para o estado “Off”, permitindo que o processo de resiliência recupere o evento e, finalmente, realize a entrega com segurança ao serviço do RabbitMQ.
|
|
A plataforma Devprime oferece uma abordagem de idempotência automática que permite controlar comandos duplicados em solicitações HTTP/gRPC e serviços Stream (Kafka, RabbitMQ).
A plataforma Devprime oferece um recurso integrado para habilitar transações locais com banco de dados e pode ser utilizando em conjunto com SqlServer, MongoDB, MySQL, PostgreSQL, Oracle.
O Devprime Distributed Services é um produto da plataforma Devprime que permite orquestrar transações distribuídas entre microsserviços usando a abordagem Saga Pattern e as práticas de arquitetura orientada a eventos.