Faculdade de Engenharia e Novas
Tecnologias
Sistemas Distribuídos e Paralelos
Comunicação em
Sistemas Distribuídos
Aula 5
Prof. Benadade Chipikita
Comunicação em Sistemas Distribuídos
A comunicação e a sincronização em sistemas
distribuídos são componentes fundamentais para
garantir que processos, que podem estar localizados em
diferentes máquinas e redes, possam interagir de
maneira eficiente e coordenada. Esses sistemas, por
natureza, lidam com desafios de latência, consistência de
dados e tolerância a falhas, o que torna esses processos
essenciais para manter o sistema em funcionamento e
oferecer a experiência desejada ao usuário final.
Principais Abordagens para a Implantação de
Processos Distribuídos
1. Implantação em Cloud (Nuvem)
2. Containers e Orquestração (Kubernetes, Docker
Swarm)
3. Implantação em Ambiente Híbrido (Multi-Cloud e On-
Premises)
4. Implantação Geograficamente Distribuída
5. Implantação de Processos de Edge Computing
Implantação em Cloud (Nuvem)
• Descrição: A maioria das arquiteturas distribuídas modernas
utiliza infraestrutura em nuvem (AWS, Google Cloud, Azure)
para aproveitar a escalabilidade e flexibilidade.
• Vantagens: Escalabilidade automática, custo variável (paga-
se pelo uso), flexibilidade para mover processos entre zonas
geográficas e fácil replicação.
• Desafios: Dependência do provedor de nuvem, latência em
inter-regiões e custos adicionais para armazenamento e
transferência de dados.
• Exemplo: Microsserviços em Kubernetes e Docker
distribuídos entre clusters em regiões diferentes, usando
balanceadores de carga para gerenciar solicitações.
Containers e Orquestração
(Kubernetes, Docker Swarm)
• Descrição: O uso de containers permite empacotar processos e suas
dependências, garantindo que eles rodem de forma consistente em
qualquer ambiente. Kubernetes e Docker Swarm são plataformas de
orquestração para gerenciar esses containers em clusters distribuídos.
• Vantagens: Portabilidade, escalabilidade horizontal e flexibilidade para
distribuir containers em diferentes nós. Facilidade de rollback e
atualização contínua dos processos.
• Desafios: Complexidade de configuração e necessidade de um sistema
robusto de monitoramento para garantir o bom funcionamento de
múltiplos containers distribuídos.
• Exemplo: Deploy de uma aplicação de e-commerce em vários
containers (ex. front-end, back-end, banco de dados) gerenciados pelo
Kubernetes, com balanceamento de carga e escalabilidade automática.
Implantação em Ambiente Híbrido (Multi-Cloud e
On-Premises)
• Descrição: Combina infraestrutura em nuvem com infraestrutura local
(on-premises), ou até múltiplos provedores de nuvem (multi-cloud),
distribuindo processos em diferentes ambientes.
• Vantagens: Flexibilidade para otimizar custos, possibilidade de utilizar
recursos já existentes e tolerância a falhas de um único provedor de
nuvem.
• Desafios: Integração e segurança entre ambientes heterogêneos e
complexidade na sincronização de dados e processos.
• Exemplo: Sistema de IoT onde dados sensíveis são processados on-
premises, e processos menos críticos são executados na nuvem.
Implantação Geograficamente Distribuída
• Descrição: Processos são implantados em data centers em
diversas localizações geográficas para atender usuários de
diferentes regiões com baixa latência.
• Vantagens: Melhor desempenho para usuários em locais
distintos, aumento da resiliência ao espalhar recursos em várias
regiões e tolerância a falhas em um data center específico.
• Desafios: Sincronização de dados e consistência entre regiões,
latência na replicação e maiores custos de comunicação entre
data centers.
• Exemplo: Plataforma de streaming com servidores de cache em
diferentes continentes, para melhorar a entrega de conteúdo aos
usuários locais.
Implantação de Processos de Edge
Computing
• Descrição: Processos são implantados em dispositivos na borda
da rede (edge), como dispositivos IoT e servidores próximos ao
local onde os dados são gerados, reduzindo a necessidade de
envio de todos os dados para o data center central.
• Vantagens: Redução de latência, economia de largura de banda
e processamento local dos dados sensíveis.
• Desafios: Limitações de hardware nos dispositivos edge e
desafios de segurança e consistência.
• Exemplo: Dispositivos IoT implantados em uma fábrica que
realizam análise de dados em tempo real, enviando apenas
informações essenciais para a nuvem.
Fases da Implantação de Processos
Distribuídos
1. Planeamento e Design
2. Configuração do Ambiente
3. Distribuição e Deploy
4. Monitoramento e Gerenciamento
5. Escalonamento e Replicação
6. Manutenção Contínua e Atualizações
Planeamento e Design
• Identificar as necessidades de desempenho,
segurança e escalabilidade.
• Definir as regiões, data centers e plataformas
onde cada processo será implantado.
• Planejar a arquitetura de comunicação e
protocolos (ex. RPC, REST, gRPC).
Configuração do Ambiente
• Preparar os servidores, containers ou
dispositivos (cloud, on-premises ou edge).
• Configurar redes, balanceadores de carga e
segurança para permitir comunicação segura e
eficiente entre processos.
• Estabelecer sistemas de armazenamento e
cache distribuído para otimizar o acesso a
dados.
Distribuição e Deploy
• Executar o deploy dos processos nos diferentes
nós, seja manualmente, usando scripts de
automação (como Ansible) ou plataformas de
CI/CD.
• Usar containers e orquestradores, como
Kubernetes, para gerenciar versões e garantir
consistência no ambiente de execução.
• Configurar balanceadores de carga para
distribuir o tráfego entre os processos.
Monitoramento e Gerenciamento
• Implementar sistemas de monitoramento (como
Prometheus, Grafana) para rastrear o
desempenho dos processos distribuídos.
• Configurar alertas para identificar e corrigir
rapidamente falhas ou problemas de
desempenho.
• Gerenciar logs centralizados para entender o
comportamento do sistema e detectar
problemas.
Escalonamento e Replicação
• Definir políticas de escalonamento automático
para adicionar ou remover recursos conforme a
demanda, garantindo que os processos possam
lidar com picos de carga.
• Replicar processos críticos para evitar pontos
únicos de falha e melhorar a disponibilidade.
• Sincronizar dados entre instâncias distribuídas
usando replicação de banco de dados ou cache
distribuído.
Manutenção Continua e Actualizações
• Executar atualizações de forma incremental ou
em blue-green deployments para minimizar
impacto e evitar tempo de inactividade.
• Realizar backups regulares e manutenção de
segurança (patching).
• Implementar ciclos de feedback para aprimorar
continuamente o desempenho e identificar
gargalos.
Conclusão
A implantação de processos distribuídos é um
processo estratégico e essencial para atender aos
requisitos modernos de escalabilidade, resiliência e
baixo tempo de resposta. Ela envolve diversas
tecnologias e práticas de engenharia de software
para garantir que os processos funcionem de forma
eficiente e integrada, independentemente de sua
localização. Com as abordagens, ferramentas e boas
práticas adequadas, a implantação distribuída pode
transformar a performance e a robustez dos sistemas.