segunda-feira, 25 de abril de 2011

Aula 4 - Arquitetura em n Camadas

Arquitetura em n camadas

Na arquitetura com n camadas para sistemas distribuídos, aparecem as figuras Cliente e Servidor. Cliente é qualquer equipamento (processo) que depende de outro para executar seu trabalho. Servidor é este outro equipamento (processo) que atende o cliente.

Para que esta relação de solicitação e atendimento aconteça, é necessária a existência de meios de conexão entre ambas as partes (meios públicos, privados ou mistos). Qualquer equipamento (processo) pode atuar como cliente ou servidor, dependendo do momento, devido à troca de informações.

Arquitetura Centralizada

Dominantes até a década de 80 como arquitetura corporativa e sua interface não é amigável

Arquitetura em 2 camadas (ou 2-tier)
  • Sistemas em camadas surgiram para:
  • Melhor aproveitar os PCs da empresa
  • Oferecer sistemas com interfaces gráficas amigáveis
  • Integrar o desktop e os dados corporativos
  • Em outras palavras, permitiram aumentar a escalabilidade de uso de Sistemas de Informação.
  • Os primeiros sistemas cliente-servidor eram de duas camadas:
  • Camada cliente trata da lógica de negócio e da UI
  • Camada servidor trata dos dados (SGBD)
No início da utilização do modelo cliente/servidor, as aplicações foram desenvolvidas utilizando-se um modelo de desenvolvimento em duas camadas. Neste modelo, um programa é desenvolvido em uma linguagem e instalado no cliente. Este programa acessa dados em um servidor de banco de dados.

Funções da aplicação Cliente

Apresentação: O código que gera interface visível do programa, todos os formulários, menus e demais elementos visuais estão contidos no código da aplicação Cliente. Caso seja necessário qualquer alteração na interface do programa, deve-se gerar uma nova versão do mesmo e todos os computadores que possuem a versão anterior deverão atualizar para a nova para que o usuário possa ter acesso as alterações da interface.

Lógica do Negócio: Aqui estão as regras que definem a maneira como os dados serão acessados e processados. Fazem parte das regras do negócio, desde funções simples de validação de entrada de dados, como o cálculo do digito verificador de um CPF, até as funções mais complexas como descontos escalonados para os maiores clientes, de acordo com o volume da compra. Qualquer mudança nas regras do negócio implica em uma nova versão da aplicação que deverá ser atualizado em todos os computadores do cliente.

Banco de Dados: Camada a qual fica armazenado em servidor da rede. Uma aplicação desenvolvida a qual acessa um Banco de Dados em um servidor é um típico exemplo de uma aplicação em 2 camadas.
 Com mudanças constantes nas regras de negócio, o modelo 2 camadas demonstrou-se de difícil manutenção e gerenciamento além de apresentar um custo de propriedade elevado

DLL Hell

Diferentes aplicativos instalam diferentes versões da mesma DLL e um conflito é gerado. É o caso em que a instalação de um programa faz com que um ou mais programas instalados anteriormente deixem de funcionar. Problema para os usuário, que não tem os programas funcionam como deveriam; Problema para a equipe de desenvolvimento que não tem o seu trabalho reconhecido e normalmente tem que trabalhar apenas “apagando incêndios”; e problema para a gerência da rede que não consegue gerar os resultados esperados pela administração da empresa, apesar dos elevados valores já investidos.
Em busca de soluções para os problemas de 2 camadas, é que surge a proposta do modelo de 3 camadas.

Arquitetura em 3 camadas (3-tier)

A idéia básica do modelo de 3 camadas é retirar as Regras do Negócio do cliente e centralizá-las em um determinado ponto, o qual á chamado de Servidor de Aplicações. O acesso ao Banco de Dados é feito através das regras contidas no Servidor de Aplicações. Ao centralizar as Regras do Negócio em um único ponto fica muito mais fácil a atualização destas Regras do Negócio em um único ponto, fica mais fácil a atualização destas regras.
Todo o acesso do Cliente ao Banco de Dados, é feito de acordo com as regras contidas no servidor de aplicações. O Cliente não tem acesso direto ao Banco de Dados sem antes passar pelo servidor de aplicações. Com isso as três camadas são as seguintes:
Apresentação: Alteração na interface do programa gera necessidade de atualizar aplicações em todos os computadores. Vale ressaltar que alterações na interface são menos freqüentes do que alterações nas regras de negócio.
Lógica: Quando uma regra de negócio é alterada, basta atualizá-la no servidor de aplicações. Após a atualização, todos os usuários passarão a ter acesso a nova versão, sem que seja necessário reinstalar o programa em cada um dos computadores da rede. Ao centralizar as regras do negócio em um Servidor de aplicações, estamos facilitando a tarefa de manter a aplicação atualizada.
Dados: Os dados somente são acessados através do Servidor de aplicação , cada vez que forem necessárias mudanças na interface. Por isso que surgiram os modelos de n camadas.

Arquitetura ¾ Camadas Web-Service
  • Instalação dos programas no desktop é cara;
  • Problema de manutenção ainda persiste quando há mudanças à camada de apresentação;
  • Não se pode instalar software facilmente num desktop que não está sob seu controle administrativo;
  • Então usamos o browser com Cliente Universal:
  • Conceito de Intranet;
  • Camada de aplicação se quebra em duas: Web e Aplicação;
  • Evitamos instalar qualquer software no desktop, portanto problemas de manutenção;
  • Evitar instalação em computadores de clientes, parceiros, fornecedores, etc;

As vezes continua-se a chamar isso de 3 camadas porque as camadas Web e Aplicação podem rodar na mesma máquina para pequenos volumes.
Para acessar a aplicação o cliente acessa o endereço da aplicação por uma URL, utilizando o seu navegador. Todo o acesso do cliente ao Banco de Dados, é feito de acordo com as regras contidas no Servidor de Aplicações. O cliente não tem acesso direto ao Banco de Dados, sem antes passar pelo servidor de aplicações .Com isso as quatro camadas são as seguintes:

Cliente: Navegador usado pelo cliente. (Mozilla, Internet Explorer, etc.)

Apresentação: Acesso ao Banco de dados é feito através do Servidor de aplicações, então todas as alterações na interface da aplicação são feitas diretamente no Servidor Web sendo que estas alterações estarão, automaticamente, disponíveis para todos os Clientes. A única coisa que o cliente terá que instalar em sua máquina é o navegador, o acesso ao Banco de Dados é através do servidor de aplicações.

Lógica: São as regras do negócio que se encontram no servidor de aplicações. O usuário recebe as atualizações sem precisar instalar uma nova versão

Dados: Servidor de banco de dados no qual reside todas as informações necessárias para o funcionamento da aplicação.

Problemas de Arquiteturas em n Camadas
  • Não suporta thin clients (PDAs, Celulares, smart cards, quiosques, etc)
  • Dificuldade em se fazer aplicações distribuídas multicamadas.

Os principais requisitos para se implementar aplicações distribuídas multicamadas são:
  • Persistencia
  • Tolerância a falhas
  • Gerência de transações distribuídas 
  • Balanceamento de carga
  • Resource pooling

As camadas podem ter vários nomes:
  • Apresentação, interface, cliente
  • Web
  • Aplicação, Business
  • Dados, Enterprise Information System (EIS)
Vantagens de Arquitetura Cliente/Servidor em n Camadas
  • Oferece maior estruturação no processamento distribuído, baseada no conceito serviços
  • Permite compartilhamento de recursos eficiente
  • Oferece transferência de localização
  • Permite comunicação entre processos através de troca de mensagens, o que torna a arquitetura fracamente acoplada
  • Oferece encapsulamento de serviços

Desvantagens de Arquitetura Cliente/Servidor em n Camadas
  • Maior complexidade
  • Dependência de comunicação
  • Custos mais altos que em soluções centralizadas
Service-Oriented Architecture (SOA)

Utilizamos SOA quando queremos que um programa acesse uma aplicação remota distribuída. Além disso, queremos cruzar domínios administrativos. Deve-se ter uma forma de expor a funcionalidade de um programa para outro programa. Atualmente a tecnologia empregada é "Web Services"

Características da arquitetura SOA
  • Promove integração fácil
  • Acesso a sistemas por outros sistemas e não somente por usuários
  • Pode misturar linguagem de programação (java com .net)
  • Composição de serviços para criar serviços maiores usando outros serviços
  • Serviços podem ser descobertos
  • Comunicação frequentemente assíncrona

Um comentário: