System Design/05 - Reliability Patterns/Availability2 min
Geodes
- Que problema isso resolve?
- Quando usar / quando NÃO usar?
- Qual o principal trade-off?
- Como isso falha em produção?
Conceito
Geographical des: implantações regionais em que todos os nós atendem todas as requisições, sem primário e sem secundário.
usuário → o nó geográfico mais próximo (qualquer um serve)
nós sincronizam entre si
Diferente do modelo ativo-passivo, aqui não existe failover a executar: se uma região cai, o tráfego simplesmente vai para outra.
Trade-offs
Os ganhos são latência global e resiliência regional — com RTO próximo de zero, porque não há promoção a fazer.
O custo é o problema mais difícil de sistemas distribuídos: escrita em qualquer região.
| Desafio | Consequência |
|---|---|
| Conflito de escrita | Duas regiões alteram o mesmo dado simultaneamente |
| Consistência | Necessariamente eventual entre regiões |
| Custo de replicação | Tráfego entre regiões é caro |
| Soberania de dados | Replicar pode violar exigência legal |
| Custo total | N ambientes completos, todos ativos |
A resolução de conflito precisa ser decidida por dado: last-writer-wins (simples e perde escritas), CRDTs (convergem por construção, aplicáveis a estruturas específicas), ou uma regra de negócio própria — como fez a Amazon ao unir carrinhos divergentes em vez de escolher um.
Por isso o padrão costuma ser aplicado parcialmente: o dado lido globalmente é replicado em todas as regiões; o dado com escrita conflitante é fixado numa região dona.
Bancos que suportam multi-região ativo-ativo (DynamoDB Global Tables, Cosmos DB, Cassandra) reduzem muito o trabalho, e não eliminam a necessidade de decidir a semântica do conflito.
Comparado a Deployment Stamps: stamps particionam por cliente e não replicam; geodes replicam os mesmos dados em todas as regiões.
Exemplo prático
Uma rede social global com nós em São Paulo, Frankfurt e Singapura.
Um usuário no Brasil escreve num nó brasileiro; a publicação replica para os demais em segundos. Um usuário em Singapura lê do nó local, com latência baixa.
A consistência é eventual: por alguns segundos, um usuário na Alemanha pode não ver a publicação. Para uma rede social, isso é irrelevante.
O mesmo desenho seria inaceitável para saldo bancário — e é por isso que sistemas reais aplicam geodes ao conteúdo e mantêm o dado transacional com região dona e consistência forte.
Relacionado
Parte de Availability · roadmap.sh/system-design