Engenharia de software distribuído. Artur Sampaio Lívia Castro Degrossi

Documentos relacionados
O que é um sistema distribuído?

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini /

Engenharia de Software

Características de Sistemas Distribuídos

Características de Sistemas Distribuídos

Sistemas Distribuídos. Plano de Curso. Plano de Curso 04/03/12 ! EMENTA:

Arquiteturas. capítulo

Redes P2P. Apresentadora: Luciana Pereira Oliveira. Duração: 40 minutos Data: 20/07/

Alcides Pamplona

Arquiteturas para SGBD. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Engenharia de Software. Projeto de Arquitetura

Quando Distribuir é bom

Estilos Arquiteturais

Arquiteturas. Capítulo 2

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Computação Distribuída

ARQUITETURA DE SISTEMAS DISTRIBUÍDOS

Quando Distribuir é bom

SISTEMAS DISTRIBUÍDOS

Desenvolvimento de Aplicações Distribuídas

Computação em nuvem (Cloud Computing)

Sistemas Distribuídos

ARQUITETURA DE SISTEMAS DISTRIBUÍDOS. Aula 1- Introdução aos Sistemas Distribuídos

Redes de Computadores.

Sistemas Distribuídos. Edy Hayashida

1- Confiabilidade ( 2 ) Proteção contra perdas e estragos. 2- Integridade ( 3 ) Proteção contra interferência de cortes de funcionamento

Sistema Distribuído. Sistema Distribuído. Aplicações Distribuídas. Conceitos Básicos

Sistemas de Arquivos Distribuídos. Bruno M. Carvalho Sala: 3F2 Horário: 35M34

Introdução a Computação em Nuvem

Aula 4 TECNOLOGIA EM JOGOS DIGITAIS JOGOS MASSIVOS DISTRIBUÍDOS. Marcelo Henrique dos Santos

Introdução aos Sistemas Distribuídos

Conceitos de Sistemas Distribuídos

Sistemas Distribuídos

SISTEMAS DISTRIBUÍDOS ARQUITETURAS. Slides cedidos pela Professora Aline Nascimento

Análise e Projeto de Software

Sistemas Distribuídos

Sistema Operacional. Prof. Leonardo Barreto Campos. 1/30

Gerência de Redes Áreas Carlos Gustavo Araújo da Rocha. Gerência de Redes

Sistemas Distribuídos

Programação Distribuída. Metas de um Sistema Distribuído

Introdução a Sistemas Distribuídos

Sistemas Distribuídos Aspectos de Projeto de SD. Aspectos de Projeto em SD. Transparência 14/03/12. ! Transparência; ! Abertura; !

Sistemas Distribuídos

Introdução. Conceitos Básicos. Conceitos Básicos. Conceitos Básicos

Sistemas Distribuídos

SISTEMAS DISTRIBUÍDOS

SISTEMAS DE BANCOS DE DADOS: CONCEITOS E ARQUITETURA

AULA 03: PROCESSAMENTO PARALELO: MULTIPROCESSADORES

Sistema de Software Distribuído

Processos ca 3 pítulo

Curso: Redes de Computadores

Introdução à Ciência da Computação

Universidade Federal do Maranhão

Sistemas Operacionais

Banco de Dados. Introdução. Profa. Flávia Cristina Bernardini

Projeto de Arquitetura

Carlos Eduardo de Carvalho Dantas

Componente de aplicação. Figura 1 - Elementos funcionais de uma aplicação sendo executados de forma distribuída

Formação de DBAs SQL Server 2008

Reuso de Software Aula Maio 2012

ARQUITETURA DE SISTEMAS DISTRIBUÍDOS EVOLUÇÃO DA COMPUTAÇÃO

Sistemas Distribuídos

Introdução a Computação em Nuvem

Sistema Operacional. Etapa

Subsistemas de E/S Device Driver Controlador de E/S Dispositivos de E/S Discos Magnéticos Desempenho, redundância, proteção de dados

Sistemas Distribuídos

ENGENHARIA DE SOFTWARE

As Visões. Visões arquiteturais (revisão)

Introdução a Sistemas Operacionais. Adão de Melo Neto

Avaliação de Desempenho e Monitoramento Redes de Computadores. Gerenciamento de Redes. Professor Airton Ribeiro de Sousa

SSC0611 Arquitetura de Computadores

Tecnólogo em Análise e Desenvolvimento de Sistemas. Sistemas Operacionais (SOP A2)

SISTEMA DISTRIBUÍDO PARA GERENCIAMENTO DE LIBERAÇÃO DE RELEASES DE SOFTWARE

Sistemas Distribuídos

Arquitetura de sistemas distribuídos

UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA. Sistemas Distribuídos

Virtualização do System302 em ambiente VMWARE

Sistemas Distribuídos

PMR3507 Fábrica digital

Introdução. descrever os tipos de interfaces e linguagens oferecidas por um SGBD. mostrar o ambiente de programas dos SGBD s

Caracterização de Sistemas Distribuídos

Sistemas Operacionais (SO)

software as a service (saas) e service-oriented architecture (soa)

Rede de computadores Servidor. Professor Carlos Muniz

Sistemas Operacionais. Tipos de SO

Informática UFRGS. Programação com Objetos Distribuídos (C. Geyer) Java Comunicação 1

Introdução à Computação

Sistemas Multiprogramáveis/Multitarefa

Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios

Sistemas distribuídos. Prof. Emiliano Monteiro

Programação Paralela e Distribuída

Redes P2P Gnutella e Simuladores

Redes de Computadores

Estrutura dos Sistemas Operacionais. Adão de Melo Neto

Visões Arquiteturais. Visões Arquiteturais

Bancos de Dados Distribuídos. Bancos de Dados Distribuídos. Conteúdo. Motivação. Motivação. Introdução aos BDs Distribuídos.

Estrutura dos Sistemas Operacionais. Adão de Melo Neto

Programação Distribuída. Arquiteturas

Transcrição:

Engenharia de software distribuído Artur Sampaio Lívia Castro Degrossi 1

Roteiro 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

Introdução...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

Questões sobre sistemas distribuídos São mais complexos do que os executados em um único processador. Essa complexidade surge porque é praticamente impossível ter um modelo de controle topdown 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 Middleware Componente 1 Componente 2 15

Questões sobre sistemas distribuídos 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

Computação cliente-servidor 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

Padrões de arquitetura para sistemas distribuídos 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 21

Estilos de arquitetura Arquitetura de mestre-escravo Arquitetura cliente-servidor de 2 camadas Arquitetura cliente-servidor de multicamadas Arquitetura distribuída de componentes Arquitetura ponto-a-ponto 22

Arquitetura mestre-escravo 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 23

Estilos de arquitetura Arquitetura de mestre-escravo Arquitetura cliente-servidor de 2 camadas Arquitetura cliente-servidor de multicamadas Arquitetura distribuída de componentes Arquitetura ponto-a-ponto 24

Arquitetura cliente-servidor de 2 camadas Mais simples forma da arquitetura clienteservidor Um único servidor lógico Número indefinido de clientes 25

Arquitetura cliente-servidor de 2 camadas 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 26

Arquitetura cliente-servidor de 2 camadas 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 27

Estilos de arquitetura Arquitetura de mestre-escravo Arquitetura cliente-servidor de 2 camadas Arquitetura cliente-servidor de multicamadas Arquitetura distribuída de componentes Arquitetura ponto-a-ponto 28

Arquiteturas cliente-servidor multicamadas Dificuldade das 2 camadas: Apresentação Processamento de app Gerenciamento de dados Cliente Servidor Cliente magro: problemas de escalabilidade e desempenho Cliente gordo: problemas de gerenciamento 29

Arquiteturas cliente-servidor multicamadas Diferentes camadas do sistema executados em diferentes processadores Apresentação Gerenciamento de dados Processamento de aplicação Banco de dados 30

Arquiteturas cliente-servidor multicamadas 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 31

Arquiteturas cliente-servidor multicamadas 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 32

Estilos de arquitetura Arquitetura de mestre-escravo Arquitetura cliente-servidor de 2 camadas Arquitetura cliente-servidor de multicamadas Arquitetura distribuída de componentes Arquitetura ponto-a-ponto 33

Arquiteturas de componentes distribuídos 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 34

Arquiteturas de componentes distribuídos 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 35

Arquiteturas de componentes distribuídos Comp 1 Serviços Comp 2 Serviços Comp 3 Serviços Middleware de comunicação Cliente Cliente Cliente Cliente 36

Arquiteturas de componentes distribuídos 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 37

Arquiteturas de componentes distribuídos 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 38

Arquiteturas de componentes distribuídos 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 39

Arquiteturas de componentes distribuídos 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 40

Estilos de arquitetura Arquitetura de mestre-escravo Arquitetura cliente-servidor de 2 camadas Arquitetura cliente-servidor de multicamadas Arquitetura distribuída de componentes Arquitetura ponto-a-ponto 41

Arquiteturas ponto a ponto 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 42

Arquiteturas ponto a ponto 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 43

Arquiteturas ponto a ponto 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 44

Arquiteturas ponto a ponto 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 45

SaaS 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 46

SaaS 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 47

SaaS 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 48

SaaS 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 49

SaaS 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 50

SaaS 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 51

SaaS 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 52