2 de Junho de 2025
CAP theorem na prática
O ponto útil do CAP aparece quando partes do sistema param de se enxergar e você precisa decidir entre esperar ou continuar respondendo.
Andrews Ribeiro
Founder & Engineer
4 min Intermediario Sistemas
O problema
CAP theorem vira slogan muito rápido.
Muita gente cita. Pouca gente explica.
A frase mais famosa e:
“Você só pode ter dois de tres.”
O problema e que isso quase não ajuda.
Se você leu essa frase e continuou sem entender, o problema não e você.
Ela pula direto para o slogan antes de mostrar a situacao real que o teorema tenta explicar.
Modelo mental
CAP fala do que acontece quando um sistema distribuido sofre uma falha de rede.
Pensa em dois lados do sistema que continuam no ar, mas deixam de conversar direito.
Exemplo simples:
- duas regiões deixam de se enxergar
- um banco principal e uma replica perdem comunicação
- dois nos continuam vivos, mas não conseguem confirmar estado entre si
Quando isso acontece, voce perde o conforto de assumir que os dois lados vao responder com a mesma verdade.
E e aqui que CAP entra.
O que você realmente precisa escolher
Os tres termos sao estes:
- C de consistência: eu só respondo quando consigo manter uma visão coerente do dado
- A de disponibilidade: eu continuo respondendo mesmo durante a falha
- P de partition tolerance: o sistema continua existindo mesmo com falha de rede entre partes dele
A parte que mais confunde e esta:
em sistema distribuido,
Pnão e luxo. A rede pode falhar goste você ou não.
Entao a escolha pratica nao costuma ser “quais dois de tres eu quero no dia feliz”.
A escolha prática costuma ser:
- eu prefiro segurar resposta para proteger consistência?
- ou prefiro continuar respondendo, mesmo aceitando dado velho ou comportamento temporariamente divergente?
Quebrando o problema
Quando faz sentido esperar
Alguns fluxos nao toleram mentira.
Exemplos:
- saldo
- limite de crédito
- coordenação de lider
- lock distribuido
Se a rede quebrou e você não consegue confirmar o estado direito, talvez seja melhor parar, esperar ou devolver erro temporário.
Aqui a dor e indisponibilidade temporária.
Mas essa troca pode valer a pena porque responder com dado errado custa caro demais.
Quando faz sentido continuar respondendo
Outros fluxos toleram atraso melhor do que silencio.
Exemplos:
- feed
- contagem de likes
- recomendação
- ranking não crítico
Se uma parte do sistema continuar respondendo com dado um pouco velho por alguns segundos, isso pode ser aceitavel.
Aqui a dor e inconsistência temporária.
Mas essa troca pode valer a pena porque o produto nao some da frente do usuario.
Só depois vale falar em CP e AP
Se alguém usar os termos CP e AP, agora fica mais simples:
CP: diante da falha, o sistema puxa mais para consistênciaAP: diante da falha, o sistema puxa mais para disponibilidade
Mas isso ja e rotulo. O importante vem antes.
Exemplo concreto
Imagine uma rede social.
Um usuário publica um post. Alguns seguidores em outra região ainda não veem o post por alguns segundos.
Isso normalmente e aceitavel. O sistema continua respondendo e o estado converge depois.
Agora imagina saldo bancario ou controle de um job crítico.
Se dois lados do sistema não conseguem se falar, talvez seja melhor segurar resposta do que correr o risco de dois estados conflitarem.
Perceba o ponto:
- no feed, atraso pequeno costuma ser toleravel
- no saldo ou na coordenação crítica, atraso pode ser menos grave do que resposta errada
CAP nao escolhe por voce.
Quem escolhe e o tipo de erro que o negócio aceita durante a falha.
O que CAP não explica
CAP não serve para explicar qualquer caso de dado velho.
As vezes o problema e:
- cache mal invalidado
- replica com lag
- leitura feita na região errada
- pipeline assíncrono mal desenhado
Ou seja:
- nem todo dado velho e CAP
- nem todo problema de consistência pede esse teorema
CAP e uma lente para comportamento sob falha de rede em sistema distribuido.
Erros comuns de leitura
- Repetir “dois de tres” sem mencionar partição.
- Falar como se
Pfosse opcional. - Usar
CPeAPantes de explicar o problema concreto. - Achar que CAP explica todo caso de dado velho.
- Tratar CAP como medalha de arquitetura, não como decisão de comportamento sob falha.
Como isso aparece em entrevista
Em entrevista, uma resposta boa costuma soar assim:
“Se a rede falhar aqui, eu prefiro travar esse fluxo para proteger consistência ou continuar respondendo mesmo com chance de atraso?”
Isso e muito melhor do que soltar “dois de tres” e esperar que pareca profundo.
O entrevistador quer ver se você:
- entendeu o que e partição em linguagem humana
- conecta consistência e disponibilidade ao fluxo real
- não usa o termo como decoração
Fechando
CAP fica muito mais claro quando você troca a pergunta.
Em vez de perguntar:
“Quais dois de tres eu escolho?”
pergunte:
“Quando a rede quebrar, eu prefiro esperar pelo dado certo ou continuar respondendo com risco de atraso?”
Essa e a parte do CAP que realmente importa.
Resumo rápido
O que vale manter na cabeça
- CAP só importa quando existe falha de rede entre partes do sistema.
- Em sistema distribuido, partição não e algo que você simplesmente escolhe ignorar.
- Na prática, a escolha útil fica entre esperar pela resposta consistente ou continuar respondendo com risco de dado velho.
- CAP não explica todo problema de consistência; cache ruim e replica atrasada podem ser outra conversa.
Checklist de pratica
Use isto ao responder
- Consigo explicar CAP sem repetir "dois de tres" de forma vazia?
- Sei dizer o que e uma partição de rede em linguagem simples?
- Consigo dar um exemplo de fluxo em que eu prefiro travar e outro em que eu prefiro continuar respondendo?
- Sei diferenciar CAP de outros casos de dado velho, como cache ruim ou replica com lag?
Você concluiu este artigo
Próximo passo
Escala e gargalos Próximo passo →Compartilhar esta página
Copie o link manualmente no campo abaixo.