Em um mundo onde temos a tecnologia totalmente disseminada em nosso dia-a-dia, é um fato que os sistemas de computadores tornam-se cada vez mais complexos. Escalar e manter sistemas distribuídos de forma eficiente tornou-se um desafio constante.
Sistemas Distribuídos é uma disciplina de cursos de Ciência da Computação e Engenharia de Computação. Então trata-se de uma parte da ementa. Neste artigo vamos dar foco apenas em conceitos introdutórios e generalistas, com foco em um público mais voltado a negócios, Project Mangers, Product Owners. Mas se você é estudante ou técnico você pode estudar esta matéria completa, inclusive existe um conteúdo muito bom da UNIVESP no youtube, vou deixar o link no final do artigo.
Me motivei a escrever este artigo, pois estou atuando em um projeto no trabalho de integrações Salesforce com um barramento, e me lembrei dos tempos de Faculdade 🙂 Também de alguns amigos que trabalhavam comigo na IBM (Laranjeira, Helião e outros) que atuavam no time de Middleware lá em meados de 2013
O que são Sistemas Distribuídos?
Sistemas distribuídos são conjuntos de serviços independentes que se comunicam entre si por meio de redes, com o objetivo de formar uma solução unificada. Eles oferecem escalabilidade, tolerância a falhas e flexibilidade, mas trazem consigo desafios como consistência, latência e orquestração.
É nesse cenário que os barramentos de integração (ou Enterprise Service Bus – ESB) e seus padrões entram em cena como peças-chave da arquitetura moderna.
O Barramento como Orquestrador
O barramento atua como um mediador inteligente entre serviços. Em vez de cada sistema conversar diretamente com os outros (o famoso ponto a ponto ou P2P), eles se comunicam com o barramento, que é responsável por rotear mensagens, transformar formatos, aplicar regras de negócio e garantir a confiabilidade da troca de dados.
Entre os benefícios estão:
- Desacoplamento: serviços não precisam conhecer uns aos outros.
- Escalabilidade: novas aplicações podem ser plugadas sem impacto direto.
- Governança centralizada: logs, monitoramento e controle em um único ponto.
Padrões de Integração mais Utilizados
- Publish/Subscribe (Pub/Sub)
Um dos padrões mais comuns em arquiteturas orientadas a eventos. Os produtores publicam eventos, e consumidores que se inscreveram recebem as mensagens. Ideal para desacoplar serviços e promover escalabilidade horizontal. - Request/Reply (Sincrono)
Um padrão onde um sistema envia uma solicitação e espera uma resposta. Apesar de simples, pode se tornar um gargalo em sistemas distribuídos se usado em excesso. - Event Sourcing
Em vez de manter apenas o estado atual, esse padrão armazena todos os eventos que aconteceram no sistema. Permite reconstruir estados e auditoria completa. - Command Query Responsibility Segregation (CQRS)
Separa operações de leitura e escrita, permitindo otimizações específicas para cada tipo de operação. - Message Routing e Transformation
O barramento pode aplicar padrões de roteamento e transformação de mensagens com base em regras ou conteúdo, evitando que os sistem
as finais lidem com essa complexidade.
Conclusão
A escolha do padrão e do barramento certo depende do contexto do seu sistema. Em arquiteturas modernas, muitas vezes vemos a combinação de diferentes padrões — com mensagens assíncronas para eventos, sincronismo para comandos críticos e até o uso de event-driven architectures com brokers como Kafka, NATS ou Google Pub/Sub.
Sistemas distribuídos bem desenhados não são apenas sobre tecnologia, mas sobre boas decisões arquiteturais. E entender o papel do barramento é um excelente primeiro passo.