Resiliência em Sistemas: Explorando o Constant Work Pattern (CWP)

Welton Batista - Jul 25 - - Dev Community

Eu quero falar sobre um conceito chamado de Constant Work Pattern (CWP) para isso vamos imagina um cenário fictício de uma aplicação no contexto de pagamento. Suponha que temos um sistema de pagamento com dois fluxos: o principal, integrado com o parceiro Pagamentos Feliz S/A, e o alternativo, ou fallback, com o parceiro Pague Aqui LTDA. Enquanto o fluxo principal é mais detalhado e amplamente testado, o fluxo alternativo, embora funcional, é menos explorado e possui menor vivência.

O princípio do CWP visa eliminar a diferença entre fluxos principais e alternativos, garantindo que ambos sejam acionados com a mesma frequência. Dessa forma, qualquer falha em um fluxo pode ser compensada pelo outro, aumentando a resiliência do sistema.

Na prática, o CWP assegura uma exploração equilibrada de todos os fluxos, proporcionando um entendimento mais profundo sobre os diferentes cenários e nuances que podem surgir em produção. Isso resulta em uma abordagem mais robusta e resiliente, com impactos reduzidos em caso de problemas. Portanto, a adoção do Constant Work Pattern faz sentido do ponto de vista da resiliência, pois permite uma exploração abrangente dos fluxos principais e alternativos, ajudando a equipe a compreender melhor o sistema e identificar problemas potenciais com impacto minimizado.

Failover Quebra o Princípio do Constant Work Pattern (CWP)?

Para entender se o failover quebra o princípio do CWP, primeiro precisamos definir o que é failover. Trata-se de uma aplicação com duas ou mais instâncias idênticas, localizadas em servidores ou regiões diferentes, prontas para assumir o lugar da instância primária em caso de falha.

Por exemplo, em nossa API de pagamentos, podemos ter o parceiro Pagamentos Feliz S/A acessível em um endereço como https://pagamento.feliz.1/process. Em caso de falha, a API pode alternar para um segundo endereço, como https://pagamento.feliz.2/process. A questão é: esse desenho de solução fere o princípio do CWP?

Na minha visão, não! Isso ocorre porque, mesmo que a API de pagamentos mude de endereço, ela está chamando a mesma aplicação com o mesmo contrato e comportamento semântico. Não há quebra de contrato nem um fluxo alternativo de processamento. Portanto, o failover, que se refere à troca entre instâncias idênticas e funcionais, não viola o princípio do CWP, ao contrário do que ocorre com o fallback.

Confira os seguintes links úteis sobre os temas abordados:

Fallback e CWP na visão de um arquiteto da AWS: https://aws.amazon.com/pt/builders-library/avoiding-fallback-in-distributed-systems/

Failover: https://www.cloudflare.com/pt-br/learning/performance/what-is-server-failover/#:~:text=O%20failover%20de%20servidor%20%C3%A9,como%20um%20gerador%20de%20backup.

.
Terabox Video Player