Buscar

Apresentação - Software distribuído - Livia e Artur

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 52 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 52 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 52 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

1 
Engenharia de software 
distribuído 
Artur Sampaio 
Lívia Castro Degrossi 
• O que é um sistema distribuído; 
• Questões sobre sistemas distribuídos; 
• Computação cliente-servidor; 
• Padrões de arquitetura para sistemas 
distribuídos; 
• Software como serviço. 
2 
Roteiro 
• “...uma coleção de computadores independentes que 
aparece para o usuário como um único sistema 
coerente” (Tanenbaum, 2007). 
 
• Um sistema distribuído é aquele no qual os 
componentes estão localizados em computadores 
interligados em rede se comunicam e coordenam 
suas ações apenas passando mensagens. 
 
3 
Introdução 
• Vantagens de um sistema distribuído: 
– Compartilhamento de recursos: permite o compartilhamento 
de recursos de hardware e software; 
– Abertura: permite que os equipamentos e softwares de diferentes 
fornecedores sejam combinados; 
– Concorrência: vários processos podem operar simultaneamente 
em computadores separados; 
– Escalabilidade: os sistemas distribuídos são escaláveis, ou 
seja, é possível que os recursos do sistema sejam aumentados; 
– Tolerância a defeitos: a disponibilidade de vários 
computadores e o potencial para replicar as informações significa 
que os sistemas distribuídos podem ser tolerantes com algumas 
falhas de hardware e software. 
4 
Introdução 
• São mais complexos do que os executados em um 
único processador. Essa complexidade surge porque é 
praticamente impossível ter um modelo de controle top-
down desses sistemas. 
 
• O desempenho de um sistema distribuído depende da 
largura da banda de rede, da carga de rede e da 
velocidade de todos os computadores que fazem parte 
do sistema. 
 
• O tempo de resposta depende da carga geral sobre o 
sistema, sua arquitetura e a carga de rede. 
5 
Questões sobre sistemas distribuídos 
• Questões de projeto: 
 
– Transparência: em que medida o sistema distribuído deve 
aparecer para o usuário como um único sistema? 
 
– Abertura: deve ser utilizado protocolo padrão ou protocolos 
mais especializados que restrinjam a liberdade do projetista? 
 
– Escalabilidade: como o sistema pode ser construído para 
que seja escalável? 
 
 
 6 
Questões sobre sistemas distribuídos 
– Proteção: como podem ser definidas e implementadas as 
políticas de proteção que se aplicam a um conjunto de sistemas 
gerenciados independentemente? 
 
– Qualidade de serviço: como a qualidade do serviço que é 
entregue aos usuários do sistema deve ser especificada e como 
o sistema deve ser implementado para oferecer essa qualidade 
a todos os usuários? 
 
– Gerenciamento de falhas: como as falhas do sistema 
podem ser detectadas, contidas (para que elas tenham efeitos 
mínimos em outros componentes do sistema) e reparadas? 
 
7 
Questões sobre sistemas distribuídos 
• A escalabilidade de um sistema reflete sua 
capacidade de oferecer um serviço de alta 
qualidade. 
• Propriedades: 
– Tamanho: deve ser possível adicionar mais 
recursos ao sistema. 
 
• Escalamento para cima: substituição de recursos; 
• Escalamento para fora: adicionar recursos ao 
sistema; 
8 
Questões sobre sistemas distribuídos 
– Distribuição: Deve ser possível dispersar 
geograficamente os componentes de um sistema 
sem comprometer seu desempenho; 
 
– Capacidade de gerenciamento: é possível 
gerenciar um sistema à medida que ele aumenta 
de tamanho, mesmo que partes dele estejam 
localizadas em organizações independentes. 
 
9 
Questões sobre sistemas distribuídos 
• Questões de proteção em sistemas 
distribuídos; 
 
• Tipos de ataques: 
 
– Intercepção: as comunicações entre as partes do 
sistema são interceptadas por um invasor de tal 
modo que haja uma perda de confiabilidade; 
 
– Interrupção: os serviços de sistema são atacados e 
não podem ser entregues conforme o esperado; 
10 
Questões sobre sistemas distribuídos 
– Modificação: os dados ou serviços no sistema são 
alterados por um invasor; 
 
– Fabricação: um invasor gera informações que não 
deveriam existir e, em seguida, usa-as para obter 
alguns privilégios; 
 
• A grande dificuldade em sistemas 
distribuídos é estabelecer uma política de 
proteção que possa ser fielmente aplicada a 
todos os componentes de um sistema. 
 
11 
Questões sobre sistemas distribuídos 
• Modelos de interação: 
 
– Interação procedural: envolve um computador 
que chama um serviço conhecido oferecido por 
algum outro computador e (normalmente) 
esperando que esse serviço seja fornecido. 
 
– Interação baseada em mensagens: envolve 
o computador ‘que envia’ que define as 
informações sobre o que é requerido em uma 
mensagem, que são, então, enviadas para outro 
computador. 
12 
Questões sobre sistemas distribuídos 
13 
Questões sobre sistemas distribuídos 
14 
Questões sobre sistemas distribuídos 
15 
Questões sobre sistemas distribuídos 
Middleware 
Componente 1 Componente 2 
• Um sistema distribuído requer um software que 
possa gerenciar as diversas partes pertencentes ao 
sistema e assegurar que elas podem se comunicar 
e trocar dados. 
 
• Middleware: o termo é usado para referir ao software 
que fica no meio entre os componentes distribuídos do 
sistema. 
 
• Exemplos de middleware: o software para gerenciamento de 
comunicações com bancos de dados, gerenciadores de transações, 
conversores de dados e controladores de comunicação. 
 
 
16 
Questões sobre sistemas distribuídos 
17 
Questões sobre sistemas distribuídos 
• Computação Cliente-servidor: 
 
– Uma aplicação é modelada como um conjunto de 
serviços que são fornecidos por servidores. Os 
clientes podem acessar esses serviços e apresentar 
os resultados para os usuários finais (Orfali e Harkey, 
1998). 
 
– Os clientes precisam estar cientes dos servidores 
que estão disponíveis, mas não devem saber da 
existência de outros clientes. 
 
18 
Computação cliente-servidor 
19 
Computação cliente-servidor 
20 
Computação cliente-servidor 
• Organizar projetos de sistema para ter 
equilíbrio entre desempenho, confiança, 
proteção e capacidade de gerenciamento. 
• Não existe modelo universal para todas as 
circunstâncias, então surgiram vários estilos 
• Escolher de acordo com o suporte aos 
requisitos não funcionais críticos 
Padrões de arquitetura para sistemas 
distribuídos 
21 
Arquitetura de mestre-escravo 
• Arquitetura cliente-servidor de 2 camadas 
• Arquitetura cliente-servidor de multicamadas 
• Arquitetura distribuída de componentes 
• Arquitetura ponto-a-ponto 
Estilos de arquitetura 
22 
• Sistemas de tempo real 
• Processadores separados 
– Aquisição de dados do ambiente 
– Processamento de dados 
– Gerenciamento de atuadores 
• Processo mestre: responsável pelo 
processamento, coordenação e comunicações 
• Processos escravos: dedicados a ações 
específicas, como aquisição de dados 
Arquitetura mestre-escravo 
23 
• Arquitetura de mestre-escravo 
Arquitetura cliente-servidor de 2 camadas 
• Arquitetura cliente-servidor de multicamadas 
• Arquitetura distribuída de componentes 
• Arquitetura ponto-a-ponto 
Estilos de arquitetura 
24 
• Mais simples forma da arquitetura cliente-
servidor 
• Um único servidor lógico 
• Número indefinido de clientes 
 
Arquitetura cliente-servidor de 2 
camadas 
25 
• Cliente magro 
– Cliente: só apresentação de dados 
– Servidor: todas as outras camadas (gerenciamento 
de dados, processamento de aplicação e banco de 
dados) 
– Web browser ou para apresentar os dados 
• Vantagem: simplicidade em gerenciar clientes 
• Desvantagem: tráfego de rede e peso 
computacional 
Arquitetura cliente-servidor de 2 
camadas 
26 
• Cliente gordo 
– Cliente: realiza parte ou todo o processamento 
– Servidor: bancos de dados e gerenciamento 
• Vantagem: distribui peso computacional 
– Processamento nos clientes 
– Servidor gerencia transações do banco de dados 
• Desvantagem: gerenciamento de clientes 
Arquiteturacliente-servidor de 2 
camadas 
27 
• Arquitetura de mestre-escravo 
• Arquitetura cliente-servidor de 2 camadas 
Arquitetura cliente-servidor de multicamadas 
• Arquitetura distribuída de componentes 
• Arquitetura ponto-a-ponto 
Estilos de arquitetura 
28 
• Dificuldade das 2 camadas: 
 
 
 
 
 
• Cliente magro: problemas de escalabilidade e 
desempenho 
• Cliente gordo: problemas de gerenciamento 
 
Apresentação 
 
Processamento de app 
 
Gerenciamento de dados 
Cliente 
 
Servidor 
Arquiteturas cliente-servidor 
multicamadas 
29 
• Diferentes camadas do sistema executados em 
diferentes processadores 
– Apresentação 
– Gerenciamento de dados 
– Processamento de aplicação 
– Banco de dados 
Arquiteturas cliente-servidor 
multicamadas 
30 
• Internet Banking – exemplo de 3 camadas 
– Banco de dados, geralmente em mainframe 
– Servidor web, gerenciamento de dados e serviços 
de aplicação (transferir dinheiro, gerar extratos, 
pagar contas, etc) 
– Computador do usuário + web browser = cliente 
• Escalável, pois é fácil adicionar clientes 
• Comunicação otimizada entre servidor web e 
banco de dados 
 
Arquiteturas cliente-servidor 
multicamadas 
31 
• Multicamadas 
• Servidores adicionais 
– Servidor web gerenciando dados 
– Servidores separados para processamento de 
aplicação e banco de dados 
• Diferentes bancos de dados 
– Servidor de integração: coleta dados distribuídos e 
apresenta ao servidor de aplicação 
Arquiteturas cliente-servidor 
multicamadas 
32 
• Arquitetura de mestre-escravo 
• Arquitetura cliente-servidor de 2 camadas 
• Arquitetura cliente-servidor de multicamadas 
Arquitetura distribuída de componentes 
• Arquitetura ponto-a-ponto 
Estilos de arquitetura 
33 
• Organização de sistemas em camadas exige: 
 
• Decidir quais serviços em quais camadas 
• Decidir se um serviço é de gerenciamento de 
dados, de aplicação ou de banco de dados 
• Planejar escalabilidade, através da replicação 
de servidores 
Arquiteturas de 
componentes distribuídos 
34 
• Projetar o sistema como um conjunto de 
serviços 
• Implementar cada serviço ou grupo de 
serviços como um componente separado 
• Todos os componentes oferecem interface 
para os serviços 
• Outros componentes usam os serviços, 
através do middleware 
 
Arquiteturas de 
componentes distribuídos 
35 
 
Middleware de comunicação 
Comp 1 
 
Serviços 
Comp 2 
 
Serviços 
Comp 3 
 
Serviços 
Cliente 
Cliente 
Cliente 
Cliente 
Arquiteturas de 
componentes distribuídos 
36 
• Dependentes do middleware 
– Gerencia interações de componentes 
– Reconcilia diferenças entre parâmetros 
– Fornece conjunto de serviços comuns 
 
• Exemplos de middleware 
– CORBA – foi um dos primeiros 
– EJB ou .NET – tem ganhado espaço 
Arquiteturas de 
componentes distribuídos 
37 
• Mineração de dados 
– Extrai informações vindas de vários bancos 
separados 
– Processamento computacional intensivo 
– Exibição de dados em gráficos 
 
• Procura relacionamentos entre os dados de 
uma série de bancos de dados 
Arquiteturas de 
componentes distribuídos 
38 
• Benefícios: 
• Flexibilidade sobre onde e como os serviços 
serão prestados 
• Adição de novos recursos conforme 
necessário 
• Escalável – novos componentes podem ser 
adicionados sob demanda 
• Reconfigurar o sistema dinamicamente 
Arquiteturas de 
componentes distribuídos 
39 
• Desvantagens: 
– Complexas para projetar. Não intuitivas. 
– Middleware não padronizado. Diferentes 
fabricantes disputam com produtos diferentes e 
incompatíveis. 
• Arquiteturas orientadas a serviços tem sido 
mais adotadas, mas as de componentes 
distribuídos tem melhor desempenho 
Arquiteturas de 
componentes distribuídos 
40 
• Arquitetura de mestre-escravo 
• Arquitetura cliente-servidor de 2 camadas 
• Arquitetura cliente-servidor de multicamadas 
• Arquitetura distribuída de componentes 
Arquitetura ponto-a-ponto 
Estilos de arquitetura 
41 
• P2P 
• Descentralizados 
• Processamento realizado por qualquer nó da 
rede 
• Sem distinções entre clientes e servidores 
• Utiliza todo o poder computacional e 
armazenamento de uma rede grande 
• Cada nó executa uma cópia da aplicação 
Arquiteturas ponto a ponto 
42 
• Usadas principalmente em sistemas pessoais 
– Gnutella e BitTorrent – troca de arquivos 
– ICQ e Jabber – comunicação direta 
– SETI@Home – processamento doméstico de 
radiotelescópios 
• Uso em empresas 
– Intel e Boeing usam sistemas P2P para aproveitar 
processamento de micros ociosos 
– VOIP 
Arquiteturas ponto a ponto 
43 
• Adequado quando: 
• Computacionalmente intensivo e é possível 
separar o processamento em partes 
independentes 
• Envolver troca de informações entre 
computadores individuais sem 
armazenamento ou gerenciamento central 
Arquiteturas ponto a ponto 
44 
• Vantagens: 
– Altamente redundante 
– Tolerante a defeitos e desconexão de nós 
• Desvantagens: 
– Muitos nós diferentes podem processar a mesma 
pesquisa 
– Overhead em comunicações de pontos replicados 
Arquiteturas ponto a ponto 
45 
• Cliente-servidor 
– Instalar programa no computador cliente 
– Reduzir processamento no servidor (problema de 
cliente-magro) 
• Browser moderno 
– Gerenciamento de apresentação 
– Computação local por meio de scripts 
– Software se torna um serviço, para qualquer 
dispositivo com browser 
SaaS 
46 
• Hospedagem remota do software 
– Um ou mais servidores 
– Acessado através de browser 
• Propriedade e gerenciamento do fornecedor, 
não do cliente 
• Cobrança por assinatura mensal, anual ou 
quantidade de uso 
SaaS 
47 
• Vantagens: 
– Provedor responsável por manutenção do 
sistema, capacidade de hardware, licenças, etc 
– Ocasionalmente, pagar pelo uso é mais barato do 
que comprar licença 
• Desvantagens: 
– Transferência de dados 
– Falta de controle sobre a evolução do sistema 
– Problemas legais 
SaaS 
48 
• SaaS não é SOA: 
 
• SaaS fornece funcionalidades em um servidor 
por meio de browser. Servidor mantém dados 
e estado do usuário 
• SOA estrutura sistema como um conjunto de 
serviços separados, sem estado. Transações 
curtas, de chamada e resposta 
SaaS 
49 
 
• SaaS é uma maneira de entregar a 
funcionalidade de aplicação para os usuários 
 
• SOA é uma tecnologia de implementação para 
sistemas de aplicações 
SaaS 
50 
• Se SaaS é implementado usando SOA, 
aplicações podem usar suas API´s de serviços 
em outras aplicações 
• Essas aplicações podem ser integradas em 
sistemas mais complexos. 
• Mashups representam outra abordagem para 
reuso de software e desenvolvimento rápido 
de software 
SaaS 
51 
• Para construir uma aplicação SaaS, deve-se 
considerar usuários de várias organizações 
• 3 fatores devem ser considerados: 
– Configurabilidade: configurar o software para cada 
organização 
– Multilocação: causar a impressão de que cada 
usuário tem sua cópia do sistema 
– Escalabilidade: projetar o sistema para acomodar 
um número imprevisível de usuários 
SaaS 
52

Outros materiais