Sistemas distribuídos¶
Definition¶
Sistemas distribuídos são conjuntos de componentes independentes que cooperam por rede para executar uma solução única, mesmo estando em processos, máquinas ou zonas diferentes.
Why it exists¶
Eles existem para permitir escala horizontal, isolamento de falhas, especialização de serviços e operação em ambientes onde uma única máquina não é suficiente.
How it works¶
Os componentes trocam mensagens por protocolos de rede e precisam lidar com latência, falhas parciais, consistência, descoberta de serviços, retries e observabilidade. Como não compartilham memória local, coordenação e contratos entre serviços se tornam parte essencial do design.
When to use¶
Use quando houver necessidade real de escalar partes do sistema de forma independente, separar responsabilidades de domínio ou aumentar resiliência operacional. Evite quando a complexidade adicional superar os ganhos de negócio.
Examples¶
Um exemplo prático é um e-commerce com serviços separados para catálogo, pagamento e notificação. Cada serviço pode escalar de forma independente, mas precisa de contratos, filas, timeouts e monitoramento para operar corretamente em conjunto.
Visual Representation¶
flowchart LR
Client[Cliente] --> API[API]
API --> Catalogo[Serviço de catálogo]
API --> Pagamento[Serviço de pagamento]
API --> Notificacao[Serviço de notificação]