CAP Theorem

Image: Infra as Code

Ao lidar com sistemas distribuídos você aprende uma regra, você não pode ter tudo que quer. Sempre será necessário abrir mão de algo, compensar uma coisa por outra, são os famosos trade-off. Uma dica que vai evitar muitas dores de cabeça é: melhor pensar nisso em tempo de projeto/arquitetura do que descobrir isso em uma aplicação em produção. Nos desenhos de sistemas, é preciso considerar o Teorema CAP, uma teoria que descreve os desafios enfrentados ao gerenciar sistemas distribuídos. Para um sistema funcionar ele precisa ter: Consistência, Availability que pode ser traduzido para Disponibilidade e Tolerância à Partição.

  • C, Consistência: A primeira peça do quebra-cabeça, consistência, explora como manter dados uniformes em todo o sistema, é um trabalho de manter a informação consistente sem sacrificar o desempenho.

  • A, Availability ou Disponibilidade: O desafio de manter a continuidade do serviço, trata da capacidade do sistema de estar sempre acessível sem comprometer a consistência.

  • Tolerância à Partição: Redes de comunicação falham saibam disso, a tolerância à partição, é o trabalho de garantir que o sistema permaneça operacional mesmo em condições de rede adversas.

Como eu disse não se pode ter os três, mas pode-se se ter dois, portanto é possível ter os seguintes modelos de configuração CP (Consistência e Partição) , CA(Consistência e Availability/Disponibilidade), AP ( Availability/Disponibilidade e Partição).

Image: Infra as Code

Modelo CP (Consistência e Tolerância à Partição):

Sistemas CP priorizam consistência e tolerância à partição, em troca da disponibilidade em caso de falha de rede. Sistemas que usam algoritmos de consenso, garantindo consistência e tolerância à partição, mas com impacto na disponibilidade ou em sistemas de replicação síncrona com particionamento, a replicação síncrona é utilizada para garantir consistência em situações de partição, mesmo que isso afete a disponibilidade.

Modelo CA (Consistência e Disponibilidade):

Sistemas CA priorizam consistência e disponibilidade, mas sacrificam a tolerância à partição em caso de falha de rede. Os exemplos banco de dados como MySQL ou PostgreSQL, onde a consistência é mantida rigorosamente, e a disponibilidade é crucial, mas a tolerância à partição é limitada.

Modelo AP (Availability/Disponibilidade e Tolerância à Partição):

Sistemas AP priorizam disponibilidade e tolerância à partição, permitindo comprometimentos na consistência em prol da disponibilidade. Banco de Dados Baseado em Eventos são sistemas que usam o modelo AP de trabalho

Agora que você já sabe desses pequenos detalhes, já pode escolher o seu banco de dados conforme a tabela abaixo 😉 .

Image: https://www.nexsoftsys.com/articles/CAP-theorem-database-dbms.html

Abraços!

Vida longa e próspera a todos!!

Referências


Eu adoraria ouvir suas outras histórias e situações semelhantes ao que acabei de escrever neste post, você pode me encontrar em @infraascode_br ou linkedin.com/in/leonardoml/ .

Te convido a ver os outros posts do blog Infra-as-Code garanto que tem coisas legais lá!!


--- --- IMPORTANTE --- ---
As opiniões aqui expressas são pessoais e de responsabilidade única e exclusiva do autor, elas não refletem necessariamente a posição das empresas que eu trabalho(ei) e/ou presto(ei) serviço.