padrões de arquitetura. padrões e estilos há um debate em relação a se esses termos representam...

76
Padrões de Arquitetura

Upload: internet

Post on 17-Apr-2015

113 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Padrões de Arquitetura

Page 2: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Padrões e Estilos

• Há um debate em relação a se esses termos representam o mesmo conceito

• Um estilo de arquitetura é uma coleção de decisões de arquitetura que: – São aplicadas em um determinado contexto– Restringe decisões de projeto da arquitetura que são específicas a

um determinado software • Um padrão de arquitetura é um conjunto de decisões de

arquitetura que são aplicáveis em um problema de design recorrente.

• É mais comum falar em estilos de arquitetura • Vamos usar os dois termos como sinônimos neste curso

Page 3: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Níveis de Padrões

• Padrões de Arquitetura– Padrões de alto nível, usados para especificar a

estrutura fundamental de um sistema de software• Padrões de Projeto– Padrões em médio nível usados para organizar as

funcionalidades de subsistemas de forma independente• Idiomas– Padrões em baixo nível, orientados a resolver

problemas de implementação específicos, ou como implementar algo em uma linguagem de programação

Page 4: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Camadas (Layered)

• Organização hierárquica• Cada camada provê serviço para a camada acima• Cada camada é cliente da camada abaixo• Um dos padrões mais conhecidos• Cada camada provê um conjunto de serviços coesos, e

possui interface bem definida• Os componentes de uma camada geralmente

implementam serviços em diferentes níveis de abstração

• Cada camada passa a idéia de virtual machine

Page 5: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Virtual (abstract) machine

• Coleção de módulos que provêem um conjunto coeso de serviços que outros módulos podem usar sem saber como esses serviços são implementados.

• Um módulo que possui uma interface pública provê um conjunto de serviços, mas não necessariamente constitui uma virtual machine.

Page 6: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Use vs. Call

• Um componente A usa um componente B se uma versão correta de B deve estar presente para que A seja executado corretamente

• Um componente A chama um componente B se a execução de A leva a execução de B

• No estilo em camadas, cada camada somente pode usar as camadas abaixo

• Uma camada pode chamar todas as outras camadas, mas somente pode usar as camadas abaixo

Page 7: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Boas propriedades de camadas

• Projeto em diferentes níveis de abstração– Particionamento de um problema complexo

• Facilita evolução do SW– Mudanças são localizadas (camadas N, N-1 e N+1)

• Alto reuso– Diversas implementações de cada camada (desde

que as interfaces sejam mantidas)• Alta coesão• Relativo baixo acoplamento

Page 8: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Boas propriedades de camadas

• Diversos níveis de abstração, de mais específicos (top levels), para níveis mais gerais (lower levels)

• Detalhes são escondidos de acordo com a conveniência, aumentando separation of concerns

• Camadas podem ser agrupadas/expandidas

Page 9: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Desvantagens de Camadas

• Não são todos os sistemas que podem ser estruturados em camadas

• Desempenho– A informação precisa passar em muitos níveis

• Debug– Operações são implementadas em uma série de

calls

Page 10: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Quantas camadas?

• Difícil acertar o nível de abstração• Poucas– mudanças podem não ser tão isoladas, camadas

podem ser muito grandes, baixo reuso• Muitas– pode ocorrer baixa coesão, necessidade de muita

colaboração entre camadas, baixo desempenho

Page 11: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Quando usar camadas?

• Com o objetivo de aumentar as possibilidades de alterações, manutenibilidade, reusabilidade

• Quando o desempenho não é um fator primordial

• Quando nenhum outro estilo parece ser correto para o problema

Page 12: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção
Page 13: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Layers vs. Tiers

• Layers: construções conceituais que separam logicamente funcionalidades de um sistema

• Tiers: quando layers são implementadas em sistemas reais

Page 14: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção
Page 15: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção
Page 16: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Two-tier architectures

• Originados com o surgimento de PCs • Mainframes e grandes servidores conectados

a PCs e workstations• A camada de apresentação é movida para o

cliente– A capacidade computacional do cliente é

aproveitada • Arquitetura popular, particularmente como

arquiteturas cliente-servidor

Page 17: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção
Page 18: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Three-tier architectures

• Como fazer o cliente conversar com vários servidores?

• Como integrar diversos servidores?• Como aproveitar a largura de banda provida

pelas redes?• Solução: 3-tier architectures

Page 19: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção
Page 20: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Three-tier architectures

• A camada de aplicação pode ser distribuída entre diversos servidores, aumentando desempenho

• A camada de aplicação é menos dependente de um determinado gerenciador de recursos, aumentando a portabilidade e o reuso

• A camada de gerenciamento de recursos precisa prover interfaces bem definidas para serem acessadas por aplicações executando no middleware

Page 21: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Three-tier architectures

• A camada de gerenciamento de recursos precisa prover interfaces de forma uniforme (ex. ODBC, JDBC)

• Desempenho é diminuído, mas há aumento de flexibilidade

• Desempenho pode não ser um problema se o middleware for executado em vários nós (aumento da escalabilidade e reliability)

• Desvantagem: Integração de sistemas legados com a internet

Page 22: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

N-tier Architectures (multi-tier)

• De forma genérica, n-tier architectures existem para:– Conectar sistemas diferentes– Adicionar sistemas a Internet

• A camada de gerenciamento de recursos pode incluir além de um banco de dados outros sistemas em camadas (2 ou 3)

• ex. adicionar web servers na camada de apresentação

Page 23: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção
Page 24: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção
Page 25: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Existe o estilo em camadas?

• In Stephen T. Albin's view in "The Art of Software Architecture: Design Methods and Techniques", hierarchical layer is not a real architecture style. He considers layer as the basic attribute of large complicated software architecture. In Stephen's view, all of the complicated systems have different layers, this means there exists a basic architecture structure view that represents system' s composition. So, Stephen did not describe the hierarchical layer in single part.

Page 26: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Pipe and Filters

• Estilo que pode ser usado em sistemas que transformam strings de entrada em strings de saída

• Não é útil para sistemas que interagem com pessoas ou para sistemas reativos

• É muito usado quando grande string de dados deve ser processada

Page 27: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Características

• Filters lêem a entrada e produzem saída através de: – Refinamentos: comprimir ou extrair informações– Conversões: mudar o formato– Enriquecimento: adição de informações

• Filters – não possuem estados externos visíveis– Não comunicam com outros componentes

• Filters podem produzir saída antes mesmo de consumir toda a entrada

Page 28: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Características

• Filters são independentes um do outro• Portanto, vários filters podem ser executados

concorrentemente. Neste caso, pipes devem ser usados para sincronia

• Pipes podem ser– Buffers: segura a entrada enquanto os filters de

saída não estão prontos

Page 29: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Características

• Filters devem ser bloqueados se:– Estão prontos para entrada, mas seus input pipes

não estão– Estão prontos para saída, mas seus output pipes

estão cheios• Filters podem atuar de forma assíncrona,

concorrente e independente• Filters não precisam saber a identidade de

outros filters

Page 30: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Topologias

• Um arranjo linear de pipes and filters é chamado de pipeline

• Bounded pipes– a quantidade de dados no pipe é limitada

• Typed pipes– dados fortemente tipados no pipe

Page 31: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Vantagens

• Filters podem ser facilmente modificados, substituídos• Filters podem ser rearranjados com pouco esforço

(vários programas semelhantes podem ser desenvolvidos)

• Filters são altamente reusáveis• Suporte a concorrência é relativamente fácil de

implementar • Uso em grandes sistemas que devem tratar grande

quantidade de dados• Filters podem ser combinados/divididos

Page 32: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Desvantagens

• Filters geralmente consomem e produzem dados simples, como strings de caracteres

• Tratamento de erros é difícil, tornando esse estilo inadequado quando segurança é um requisito

• Pipes podem ter dificuldade de fazer a sincronização

• Componente mais lento em um pipeline• Inadequado para aplicações interativas

Page 33: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção
Page 34: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Compilador

• O analisador léxico converte uma cadeia de caracteres em uma cadeia de tokens

• O analisador semântico enriquece uma árvore sintática ao adicionar anotações a ela

Page 35: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção
Page 36: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Event-Driven

• Boa escolha para sistemas que devem reagir a eventos imprevisíveis do ambiente

• Boa escolha para softwares com complexa interface gráfica (o software deve estar pronto para vários eventos)

• Escalável• Efetivo para aplicações altamente distribuídas

Page 37: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Vantagens

• Componentes que anunciam eventos não possuem conexão com componentes que respondem a eles (estão desconectados)

• Relativamente fácil adicionar, remover e alterar componentes

• A independência dos componentes dá suporte a reusabilidade, tolerância a falhas e robustness

Page 38: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Desvantagens

• Componentes que anunciam eventos não podem garantir que algum componente irá responder

• Não há garantia que a ordem de resposta é a ideal

• O tráfego de eventos tem a tendência de ser altamente variável (possíveis problemas de desempenho)

Page 39: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Cliente-Servidor

• O cliente faz pedidos aos servidores e trata entradas e saídas do ambiente do sistema

• O servidor oferece serviços. Ex. File servers, print servers

• Vários usuários querem compartilhar e trocar dados.

Page 40: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Cliente-Servidor

• Os servidores possuem interfaces que descrevem os serviços que eles podem prover.

• Os clientes iniciam as ações ao pedir serviços aos servidores. – Portanto, o cliente deve saber a identidade do servidor para

poder invocá-lo. • Servidores não sabem a identidade nem o número de

clientes antes do pedido de serviço, e devem responder aos pedidos iniciados pelo cliente

Page 41: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Cliente-Servidor – análises a serem feitas

• Determinar se os servidores são capazes de prover os serviços requeridos pelos clientes.

• Determinar se os clientes usam os serviços de forma apropriada.

• Entender se um sistema consegue se recuperar após uma falha de um ou mais serviços.

• Análise de segurança: determinar se a informação é limitada apenas aos clientes que têm o privilégio de recebe-la.

• Desempenho: determinar se os servidores conseguem acompanhar os pedidos dos clientes, em termos de volume e taxas.

Page 42: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Cliente – servidor: Desvantagens

• O cliente faz um pedido de serviço e espera até receber uma resposta.

• O cliente precisa conhecer que tipo de serviço é oferecido por determinado servidor

• O cliente precisa saber como contactar os servidores

• Servidores podem atuar como clientes, fazendo pedido a outros servidores, mas não podem fazer pedidos aos clientes.

Page 43: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Centralizado

• Um subsistema tem controle geral para iniciar e parar todos subsistemas

• Tipos:– Call-return– Controlador

Page 44: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção
Page 45: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção
Page 46: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Microkernel

• Aplicado a sistemas de software que devem ser capazes de se adaptar a mudanças nos requisitos.

• Uma parte funcional mínima de funcionalidades é separada de partes específicas do cliente.

• O microkernel também serve como socket para plugar as extensões

• Geralmente associado a sistemas operacionais.– Entretanto, este estilo pode ser aplicado a outros

domínios, como financeiro.

Page 47: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Problema

• Desenvolver software para um domínio que precisa lidar com muitos padrões e tecnologias similares não é uma tarefa trivial. – Ex. SO e GUI.

• Fatores adicionais a considerar quando desenvolver esses sistemas:– A aplicação deve lidar com muitas mudanças de HW e

SW– A aplicação deve ser portável, extensível e adaptável

para permitir fácil integração de tecnologias emergentes

Page 48: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Solução com microkernel

• Encapsular os serviços fundamentais da aplicação em um componente (microkernel)

• O microkernel inclui funcionalidade que: – Mantém recursos do sistema como arquivos e

processos– Provê interfaces que permitem outros

componentes acessar sua funcionalidade

Page 49: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Solução com microkernel

• Funcionalidades devem ser separadas em servidores internos – Manter complexidade e tamanho

• Servidores externos são processos separados que representam uma aplicação.

• Clientes se comunicam com servidores externos usando os mecanismos de comunicação provido pelo microkernel

Page 50: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Exemplos de microkernel

• SO Amoeba formado por 2 elementos básicos: – o microkernel – Uma coleção de servidores (subsystems) usados para implementar

funcionalidades adicionais.• O kernel provê 4 serviços básicos:

– Gerenciamento de processos e threads, – Low-level-management da memória do sistema,– Comunicação, tanto ponto-a-ponto, como em grupos– low-level I/O services.

• Serviços não providos pelo kernel devem ser implementados por servidores.

• Desta forma, o kernel é pequeno e a flexibilidade é alta.

Page 51: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Benefícios

• Portabilidade– Migrar o microkernel para um novo HW

modificações apenas nas partes dependentes do HW

• Flexibilidade e Extensibilidade – adicionar um novo servidor externo– novas funcionalidades são implementadas

adicionando-se servidores internos• Alta manutenibilidade e modificabilidade

Page 52: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Microkernel e Layers

• O estilo microkernel pode ser considerado um variante do estilo em camadas

• O microkernel implementa uma máquina virtual através de servidores internos

• Aplicações estão no topo da camada

Page 53: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Distributed Microkernel

• Uma variante do microkernel com benefícios:– Escalabilidade– Confiabilidade, através de availability e fault tolerance.

• Servidores executam em mais de uma máquina– Falhas não necessariamente impactam a aplicação – Falhas podem ser escondidas do usuário

• Transparência– Cada componente pode acessar outros componentes

sem precisar saber sua localização.

Page 54: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Blackboard

• Útil quando não são conhecidas soluções determinísticas

• Subsistemas especialistas combinam conhecimento para construir uma solução parcial ou aproximada

• Contexto: domínio imaturo em que nenhuma abordagem de solução é conhecida ou possível

• Ex. visão, reconhecimento de imagens, reconhecimento de voz

Page 55: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

O nome blackboard

• Cada especialista avalia o estado atual da solução de forma independente, e vai ao blackboard a qualquer momento para adicionar, mudar, apagar informações

• Pessoas decidem entre si quem tem o próximo acesso

• Componente moderador decide a ordem em que cada software executa para dar sua contribuição

Page 56: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Blackboard - características

• Problemas típicos: decomposição leva a vários subproblemas em diversas áreas de conhecimento

• Soluções para problemas parciais requerem representações e paradigmas diferentes

• Cada passo na transformação pode levar a muitas soluções alternativas

Page 57: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Blackboard - características

• Uma busca completa em todo o espaço de soluções não é possível em um período de tempo razoável

• Domínio imaturo → experimentar diferentes algoritmos para a mesma tarefa.

• Algoritmos com diversos paradigmas• Incerteza e soluções aproximadas

Page 58: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Blackboard - estrutura

• Blackboard – parte que centraliza dados, controle, e espaço de soluções.

• Knowledge sources – subsistemas independentes que resolvem aspectos específicos do problema– Juntos modelam o domínio– Nenhum pode resolver sozinho o problema

• Control component – usa os dados do blackboard para:– Monitorar as mudanças– Decidir as próximas ações

Page 59: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Exemplos

• HEARSAY-11. The first Blackboard system was the HEARSAY-11 speech recognition system from the early 1970's.

• HASP/SIAP. The HASP system was designed to detect enemy submarines

• CRYSALIS. This system was designed to infer the three-dimensional structure of protein molecules from X-ray diffraction data

• Expert systems

Page 60: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Middleware

• Gerencia as interações entre aplicações em plataformas heterogêneas

• Integra coleção de servidores e aplicações sob uma interface comum

• Objetivos– facilitar o desenvolvimento de aplicações distribuídas– facilitar a integração de sistemas legados

• Middleware é similar à camada intermediária da arquitetura three-tier, com a diferença de estar distribuído entre múltiplas aplicações

Page 61: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Características de Middleware

• Middleware fornece abstrações que escondem a alta complexidade de construção de sistemas distribuídos

• As abstrações providas pelo middleware estão no topo de uma complexa estrutura de software

• Tipos: RPC, Monitors, Brokers, Message-oriented

Page 62: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Remote Procedure Call

• Proposto formalmente em 1984• Idéia: chamada de procedimentos em outras

máquinas de forma transparente• Cliente: – chama um procedimento remoto e espera o

retorno• Servidor: – programa que implementa o procedimento

chamado

Page 63: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

RPC - Problemas

• RPC funciona bem enquanto clientes e servidores estão funcionando bem

• Alguns problemas:– O cliente não consegue localizar o servidor– O pedido do cliente para o servidor é perdido– A resposta do servidor para o cliente é perdida– O servidor crashes após receber o pedido– O cliente crashes após enviar o pedido

Page 64: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Transaction Processing Monitors

• Uma das formas mais antigas de middleware• IBM CICS (end of 1960's)• TP Monitors foram desenvolvidos para que

mainframes suportassem a distribuição de recursos para clientes

• Portanto, precisavam de consistência de dados → transações

• Inicialmente TP Monitors eram baseados em one tier architectures

Page 65: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

TP Monitors - Aplicações

• Atualmente fazem parte de muitas aplicações:– Financeiras– Indústria de vendas de passagens– Seguradoras– Sistemas de controle industriais– 90% das Fortune 500 usam CICS

• Outras aplicações comerciais:– Microsoft MTS– BEA Tuxedo

Page 66: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Monitores e Transações

• Monitores suportam milhares de clientes de forma concorrente

• Para isso usam threads ao invés de processos• Segundo a IBM, implementações de CICS

atuais suportam 300 bilhões de transações diariamente

Page 67: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Object Brokers

• Evolução natural de RPC• Differença: clientes chamam métodos de

objetos• O broker é responsável por– Coordenar a comunicação– Transmitir resultados e exceções

• Usado em sistemas distribuídos heterogêneos com componentes independentes

Page 68: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Object brokers - vantagens

• Sistemas construídos a partir de componentes desacoplados que interagem entre si → Flexibilidade, manutenibilidade, modificabilidade

• Particionamento de funcionalidades em componentes independentes → alta distribuição e escalabilidade

Page 69: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Message-oriented middleware

• Message-oriented middleware: fracamente acoplado (loosely-coupled), tecnologia assíncrona– unlike synchronous middleware technologies such as

CORBA. • Infraestrutura de mensagens desacopla senders e

receivers– Uso de uma fila de mensagens

• The sender can send a message to a receiver and know that it will be eventually delivered, even if the network link is down or the receiver is not available.

Page 70: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção
Page 71: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Vantagens

• O sender não precisa de uma resposta a uma mensagem. Ele envia a mensagem e continua seu processo– Send-and-forget messaging.

• O receiver pode demorar alguns minutos para ter uma resposta– Enquanto isso o sender pode continuar o trabalho.

• O sender confia no middleware para enviar a mensagem caso a conexão se perca

Page 72: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Desvantagens

• MOM é uma tecnologia one-to-one.• Um sender envia uma mensagem para uma

fila, e um receiver recebe a mensagem• Vários problemas não podem ser resolvidos

por um estilo 1-1

Page 73: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Publish-subscribe

• Estende mecanismos MOM básicos para suportar estilos de comunicação 1-n, n-1 e n-n

• Senders e receivers são desacoplados• Subscribers podem dinamicamente subscribe

e unsubscribe.• High-level of abstraction by hiding the

complexity of a variety of platforms, networks and low-level process communication.

Page 74: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção
Page 75: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Características

• Naturally supports an asynchronous, many-to-many communication between components in a network.

• Event based communication between components– may act as publishers of information and/or subscribers

for information.• Publishers publish information through an event,

which will be delivered to all (and only) interested subscribers, which expressed their interest in a certain type of information by subscribing to it. – This allows improved system performance.

Page 76: Padrões de Arquitetura. Padrões e Estilos Há um debate em relação a se esses termos representam o mesmo conceito Um estilo de arquitetura é uma coleção

Características

• Publishers não sabem qual subscriber irá receber a informação publicada.

• Subscribers são indiferentes em relação a qual publisher produz a informação. – Não precisam serem executados na mesma máquina (space-

decoupled)• Publishers e subscribers estão decoupled in time: publishers e

subscribers não precisam estar conectados ao mesmo tempo.• All this manners of decoupling (synchronization, space and time

decoupling) increases scalability and reduces the necessity of coordination, making publish-subscribe middlewares most suited to DRTS.