Arquitetura de Zero Compartilhamento (Shared Nothing)

2021-12-12

É um tipo de arquitetura de sistemas distribuídos onde os nós que fazem parte do sistema não comparilham recursos, como memória, banco de dados, CPU, etc.

Dessa forma, a carga é distribuída entre diversos nós na rede. Em arquiteturas desse tipo, é fácil escalar horizontalmente já que é só disponibilizar novos nós.

Kubernetes, por exemplo, é um sistema que disponibiliza abstrações para a construção de sistemas que não compartilham recursos, embora que no fim, pods acabam compartilhando recursos de uma mesma máquina. Portanto é necessário que o provedor do Kubernetes também ofereça alternativas para provisionar novas máquinas caso a atual apresente falhas.

Sistemas construídos dessa forma possuiem um alto grau de elasticidade porém a flexibilidade não é de graça.

Manter um cluster Kubernetes, por exemplo, não é barato. Além disso, caso um nó precise de dados que algum outro nó armazena, é necessário trabalhar com replicação de dados e isso traz um conjunto completamente novo de problemas que podem acontecer. Como será a resolução de conflitos? E se o nó que é o "context owner" cair? Como novos serviços vão sincronizar com o restante da rede? O produto aceita ser eventualmente consistente? Em casos que a consistência eventual não é aceitável, como o sistema irá realizar transações distribuídas?

É importante que os trade-offs sejam conhecidos pela equipe e que de fato seja necessário abraçar uma arquitetura de sistemas distribuídos.

#arquitetura

📝 Edite esta página