41
Adaptação Dinâmica em Sistemas Distribuídos

Adaptação Dinâmica em Sistemas Distribuídos. Software Adaptativo Software adaptativo é aquele que é capaz de mudar o seu comportamento em tempo de execução

Embed Size (px)

Citation preview

Page 1: Adaptação Dinâmica em Sistemas Distribuídos. Software Adaptativo Software adaptativo é aquele que é capaz de mudar o seu comportamento em tempo de execução

Adaptação Dinâmicaem Sistemas Distribuídos

Page 2: Adaptação Dinâmica em Sistemas Distribuídos. Software Adaptativo Software adaptativo é aquele que é capaz de mudar o seu comportamento em tempo de execução

Software Adaptativo

Software adaptativo é aquele que é capaz de mudar o seu comportamento em tempo de execução.

Esta característica possui inúmeros benefícios potenciais como a habilidade de responder rapidamente a ameaças de segurança ou a

possibilidade de otimizações de desempenho em resposta a variações no ambiente de execução.

Software adaptativo é aquele que é capaz de mudar o seu comportamento em tempo de execução.

Esta característica possui inúmeros benefícios potenciais como a habilidade de responder rapidamente a ameaças de segurança ou a

possibilidade de otimizações de desempenho em resposta a variações no ambiente de execução.

Page 3: Adaptação Dinâmica em Sistemas Distribuídos. Software Adaptativo Software adaptativo é aquele que é capaz de mudar o seu comportamento em tempo de execução

Reconfiguração de Rede

❑ Em ambientes de computação móvel, o dispositivo deve ser transparentemente reconfigurado à medida que ele atravessa diferentes ambientes de rede e utiliza diversas interfaces heterogêneas.

❑ Dispositivos podem ser dinamicamente inseridos no dispositivo sem a necessidade de desligá-lo.

Page 4: Adaptação Dinâmica em Sistemas Distribuídos. Software Adaptativo Software adaptativo é aquele que é capaz de mudar o seu comportamento em tempo de execução

Adapatação de Protocolos de Rede

❑ Tecnologias como Ethernet, redes locais sem fio, modems celulares , CDPD e canais de satélite possuem direntes características.

❑ Dado que um usuário móvel encontra diferentes tecnologias de rede, faz-se necessário que protocolos de rede adaptem-se a diferentes condições na operação das conexões de rede.

Page 5: Adaptação Dinâmica em Sistemas Distribuídos. Software Adaptativo Software adaptativo é aquele que é capaz de mudar o seu comportamento em tempo de execução

Adaptando Aplicações para Lidar com Variações de Rede

❑ Variações na largura de banda, latência e taxa de erros de transmissão são comuns em ambientes de computação móvel e na própria Internet.

❑ Aplicações devem levar em consideração estas variações através da alteração de seu comportamento.

Page 6: Adaptação Dinâmica em Sistemas Distribuídos. Software Adaptativo Software adaptativo é aquele que é capaz de mudar o seu comportamento em tempo de execução

Lidando com Variações no Cliente

❑ Hardware de dispositivos são cada vez mais variáveis com relação a diversas propriedades como tamanho da tela e resolução, memória, poder de processamento, etc...

❑ Isto também é verdade com relação ao software, incluindo o tipo de codificação de dados suportado (JPEG, PostScript, etc...)

❑ Servidores devem suportar estas variações.

Page 7: Adaptação Dinâmica em Sistemas Distribuídos. Software Adaptativo Software adaptativo é aquele que é capaz de mudar o seu comportamento em tempo de execução

Lidando com Variações de Serviços e Recursos

❑ Um aspecto importante da computação móvel é que os serviços e recursos disponíveis a um usuário variam à medida que o mesmo se desloca

❑ Exemplos: guia de turismo, localizador de serviços de hoteis, restaurantes, etc...

❑ Exemplos: conferência / sala de aula

Page 8: Adaptação Dinâmica em Sistemas Distribuídos. Software Adaptativo Software adaptativo é aquele que é capaz de mudar o seu comportamento em tempo de execução

Suporte à Mobilidade de Usuários

❑ A mobilidade dos usuários pode levar a grandes variações no ambiente de execução de aplicações.

Page 9: Adaptação Dinâmica em Sistemas Distribuídos. Software Adaptativo Software adaptativo é aquele que é capaz de mudar o seu comportamento em tempo de execução

Aplicações de Tempo Real

❑ Software adaptativo é também empregado em aplicações como suporte a missões não tripuladas, onde o ambiente está em constante mudança e problemas ou situações atípicas devem ser contornadas.

Page 10: Adaptação Dinâmica em Sistemas Distribuídos. Software Adaptativo Software adaptativo é aquele que é capaz de mudar o seu comportamento em tempo de execução

Muitas Abordagens...

❑ A partir do final dos anos 90, muita pesquisa tem sido dedicada ao software adaptativo:

❑ PMI (Physical Media Independence)❑ Protocol Adaptation❑ Active Proxies❑ Odyssey❑ Conductor❑ MOCA❑ Karamcheti ❑ Outros...

Page 11: Adaptação Dinâmica em Sistemas Distribuídos. Software Adaptativo Software adaptativo é aquele que é capaz de mudar o seu comportamento em tempo de execução

MOCAIBM T. J. Watson

❑ É um framework que lida com a descoberta dinâmica de serviços e recursos.

❑ É voltada para dispositivos portáteis e pequenos, com pouca memória.

❑ Para facilitar sua portabilidade, foi desenvolvido em Java.

❑ Seu núcleo possui apenas 50KB.

Page 12: Adaptação Dinâmica em Sistemas Distribuídos. Software Adaptativo Software adaptativo é aquele que é capaz de mudar o seu comportamento em tempo de execução

Serviços❑ É um componente de software que encapsula

uma funcionalidade específica e que disponibiliza uma interface bem definida.

❑ Exemplos: encriptação de dados, cache local de arquivos, serviço de impressão, etc...

❑ Uma aplicação é um programa Java que pode dinamicamente requisitar serviços e invocar os métodos constantes de sua interface.

❑ Serviços e aplicações podem ser locais ao dispositivo ou serem dinamicamente carregados.

Page 13: Adaptação Dinâmica em Sistemas Distribuídos. Software Adaptativo Software adaptativo é aquele que é capaz de mudar o seu comportamento em tempo de execução

Arquitetura MOCA

Page 14: Adaptação Dinâmica em Sistemas Distribuídos. Software Adaptativo Software adaptativo é aquele que é capaz de mudar o seu comportamento em tempo de execução

Registry: Funções

❑ Repositório de serviços, mantendo um mapeamento entre descrições de serviço e suas implementações.

❑ Encapsula a política de gerenciamento de ciclo de vida de serviços, provendo suporte ao registro, atualização e de-registro de serviços.

Page 15: Adaptação Dinâmica em Sistemas Distribuídos. Software Adaptativo Software adaptativo é aquele que é capaz de mudar o seu comportamento em tempo de execução

Registro e Bind de Serviços

❑ Para registrar um serviço, deve-se prover ao Registry:

❑ Nome da interface❑ Nome da implementação❑ URL que indica a localização da implementação

❑ Serviços pode ser registrados sem que sejam carregados para o dispositivo.

❑ Para obter uma referencia a um serviço, a aplicação deve pelo menos fornecer o nome da interface.

Page 16: Adaptação Dinâmica em Sistemas Distribuídos. Software Adaptativo Software adaptativo é aquele que é capaz de mudar o seu comportamento em tempo de execução

Serviços Especiais

❑ São implementados como uma extensão da JVM.❑ Cache de arquivos: gerencia um ropositório de

classes Java associadas a todos os serviços e aplicações carregadas para o dispositivo.

❑ Serviço de carga de arquivos: chamado quando um serviço não for encontrado na cache local.

❑ Gerente de ciclo de vida: cria, suspende e destroi aplicações. Cada aplicação possui seu proprio carregador de classes, provendo um espaço de nomes privado.

Page 17: Adaptação Dinâmica em Sistemas Distribuídos. Software Adaptativo Software adaptativo é aquele que é capaz de mudar o seu comportamento em tempo de execução

Serviços Opcionais

❑ Broadcaster: periodicamente realiza um broadcast dos serviços disponibilizados pelo dispositivos.

❑ Listener: recebe o broadcast de anúncios de serviços remotos.

❑ Logging: realiza um log de erros que ocorram no dispositivo.

Page 18: Adaptação Dinâmica em Sistemas Distribuídos. Software Adaptativo Software adaptativo é aquele que é capaz de mudar o seu comportamento em tempo de execução

Aquisição de Serviços

❑ Um serviço é composto de:❑ Interface: uma único arquivo .class❑ Implementação: 1..n arquivos .class

❑ A aquisição é feita em duas etapas:❑ Carga do arquivo contendo a interface, realizada

através de repositórios conhecidos (IR)❑ Carga dos arquivos contendo a implementação,

realizada através da URL provida no registro do serviço.

Page 19: Adaptação Dinâmica em Sistemas Distribuídos. Software Adaptativo Software adaptativo é aquele que é capaz de mudar o seu comportamento em tempo de execução

Exemplo de Aquisição de Serviço

Page 20: Adaptação Dinâmica em Sistemas Distribuídos. Software Adaptativo Software adaptativo é aquele que é capaz de mudar o seu comportamento em tempo de execução

Descoberta Dinâmica de Serviços

Page 21: Adaptação Dinâmica em Sistemas Distribuídos. Software Adaptativo Software adaptativo é aquele que é capaz de mudar o seu comportamento em tempo de execução

Active Proxies

❑ Voltado para aplicações de acesso a dados na Internet.

❑ Objetiva lidar com:❑ Variações de rede: largura de banda, latênica e taxa de

erros❑ Variações de hardware dos clientes: tamanho e

resolução da tela, memória e poder de processamento❑ Variações dos tipos de codificações de dados

suporados pelo cliente (JPEG, PostScript, etc...)

Page 22: Adaptação Dinâmica em Sistemas Distribuídos. Software Adaptativo Software adaptativo é aquele que é capaz de mudar o seu comportamento em tempo de execução

Princípios de Projeto

❑ Adaptação baseada na transformação dos dados. Mecanismos de compressão dependentes do tipo de dado sendo transmitido;

❑ Adaptação no momento da solicitação;❑ Complexidade fora do cliente e servidor, através

da utilização de um proxy intermediário.

Page 23: Adaptação Dinâmica em Sistemas Distribuídos. Software Adaptativo Software adaptativo é aquele que é capaz de mudar o seu comportamento em tempo de execução

Compressão de Acordo com o Tipo de Dado

Page 24: Adaptação Dinâmica em Sistemas Distribuídos. Software Adaptativo Software adaptativo é aquele que é capaz de mudar o seu comportamento em tempo de execução

Destilação e Refinamento

❑ Destilação: processo de compressão que visa preservar o máximo do conteúdo semântico do dado sendo transmitido

❑ Refinamento: processo de busca de uma porte (ou eventualmente todo) de um objeto em uma qualidade superior, possivelmente na qualidade original.

Page 25: Adaptação Dinâmica em Sistemas Distribuídos. Software Adaptativo Software adaptativo é aquele que é capaz de mudar o seu comportamento em tempo de execução

Arquitetura

Page 26: Adaptação Dinâmica em Sistemas Distribuídos. Software Adaptativo Software adaptativo é aquele que é capaz de mudar o seu comportamento em tempo de execução

Arquitetura Escalável

Page 27: Adaptação Dinâmica em Sistemas Distribuídos. Software Adaptativo Software adaptativo é aquele que é capaz de mudar o seu comportamento em tempo de execução

Framework para Adaptação Dinâmica de Aplicações

DistribuídasCandidato: Francisco Silva

Orientadores: Markus Endler Fábio Kon

Page 28: Adaptação Dinâmica em Sistemas Distribuídos. Software Adaptativo Software adaptativo é aquele que é capaz de mudar o seu comportamento em tempo de execução

Abordagem

Definição de um modelo a partir do qual pretendemos desenvolver um framework que

será utilizado para instrumentar uma aplicação distribuída com os mecanismos

necessários para torná-la adaptável dinamicamente.

Page 29: Adaptação Dinâmica em Sistemas Distribuídos. Software Adaptativo Software adaptativo é aquele que é capaz de mudar o seu comportamento em tempo de execução

Modelo SIDAM

Page 30: Adaptação Dinâmica em Sistemas Distribuídos. Software Adaptativo Software adaptativo é aquele que é capaz de mudar o seu comportamento em tempo de execução

SIDAM: Requisitos de Projeto

❑ As aplicações devem ser capazes de se adaptar a variações de carga, padrões de requisição e a diversos cenários de disponibilidade de recursos;

❑ As aplicações devem prover uma alta disponibilidade de seus dados e serviços e, sempre que possível, garantir uma baixa latência de acesso;

❑ Apesar da base de dados global estar distribuída em várias máquinas, esta distribuição e localização física de qualquer dado específico deve permanecer transparente ao cliente.

Page 31: Adaptação Dinâmica em Sistemas Distribuídos. Software Adaptativo Software adaptativo é aquele que é capaz de mudar o seu comportamento em tempo de execução

Adaptação Dinâmica na Aplicação de Referêcia do SIDAM

❑ Separação e agregação de IS - sobrecarca do IS;❑ Replicação de IS - requisições a um IS

"distante";❑ Variação no formato do resultado de consultas -

variação na largura de banda disponível para a comunicação com o cliente;

❑ Migração de IS - sobrecarga de DS;❑ Realocação e pré-alocação de recursos -

mudança de célula de usuários especiais.

Page 32: Adaptação Dinâmica em Sistemas Distribuídos. Software Adaptativo Software adaptativo é aquele que é capaz de mudar o seu comportamento em tempo de execução

Requisitos para o Modelo de Adaptação Dinâmica

❑ Deve dar suporte a uma aplicação composta por diversos componentes executando em diversos nós de um ambiente distribuído;

❑ Deve permitir a monitoração de recursos do ambiente e a interação entre os objetos que compõem a aplicação;

❑ Assim como o próprio projeto SIDAM, deve ser genérico o suficiente para poder ser utilizado em um grande espectro de aplicações.

Page 33: Adaptação Dinâmica em Sistemas Distribuídos. Software Adaptativo Software adaptativo é aquele que é capaz de mudar o seu comportamento em tempo de execução

Requisitos para o Modelo de Adaptação Dinâmica

❑ Deve dar suporte à reconfiguração dinâmica dos componentes que compõem a aplicação;

❑ Esta reconfiguração deve ocorrer de forma segura.

Page 34: Adaptação Dinâmica em Sistemas Distribuídos. Software Adaptativo Software adaptativo é aquele que é capaz de mudar o seu comportamento em tempo de execução

Modelo para Adatação Dinâmica

Page 35: Adaptação Dinâmica em Sistemas Distribuídos. Software Adaptativo Software adaptativo é aquele que é capaz de mudar o seu comportamento em tempo de execução

Monitoração: Interação entre Objetos

❑ Utilização de interceptadores (padrão CORBA);

❑ Armazenamento dos dados em logs;

❑ Necessidade de re-configuração em tempo de execução.

Page 36: Adaptação Dinâmica em Sistemas Distribuídos. Software Adaptativo Software adaptativo é aquele que é capaz de mudar o seu comportamento em tempo de execução

Monitoração de Recursos

❑ Parâmetros de monitoração:➔ Percentual de uso da UCP;➔ Memória real e virtual disponível;➔ Largura de banda disponível;

❑ Flexibilidade:parâmetros específicos de uma aplicação. Por exemplo, #threads abertas por um IS;

❑ OMR - Objetos de Monitoração de Recursos.

Page 37: Adaptação Dinâmica em Sistemas Distribuídos. Software Adaptativo Software adaptativo é aquele que é capaz de mudar o seu comportamento em tempo de execução

Modelo para Adatação Dinâmica

Page 38: Adaptação Dinâmica em Sistemas Distribuídos. Software Adaptativo Software adaptativo é aquele que é capaz de mudar o seu comportamento em tempo de execução

Detecção de Eventos

❑ Tipos de eventos:❑ Eventos de log❑ Eventos de Recursos

❑ Requisitos Desejáveis:❑ Extensibilidade de tipos de eventos detectáveis;❑ Re-configuração Dinâmica;❑ Gerenciável;

Page 39: Adaptação Dinâmica em Sistemas Distribuídos. Software Adaptativo Software adaptativo é aquele que é capaz de mudar o seu comportamento em tempo de execução

Detecção de Eventos

❑ Definição de eventos complexos a partir da combinação de outros eventos => EPS

❑ Serviço de Notificação da ocorrência de eventos aos objetos interessados => EPS / Serviço de Eventos / Notificação de CORBA

Page 40: Adaptação Dinâmica em Sistemas Distribuídos. Software Adaptativo Software adaptativo é aquele que é capaz de mudar o seu comportamento em tempo de execução

Modelo para Adatação Dinâmica

Page 41: Adaptação Dinâmica em Sistemas Distribuídos. Software Adaptativo Software adaptativo é aquele que é capaz de mudar o seu comportamento em tempo de execução

Reconfiguração Dinâmica

❑ Tomada de decisão - determina as ações necessárias para adaptar a aplicação face a ocorrência de eventos;

❑ Re-configurador dinâmico - aplica as ações de re-configuração;

❑ Gerenciamento de dependências => Automatic Configuration Service e Component Configurator [Kon]