Conceitos: Padrões de Distribuição
Tópicos
Os Processadores e Dispositivos são estereótipos comuns do Nó.
A distinção entre os dois pode parecer difícil de avaliar, já que muitos dispositivos agora contêm suas próprias CPUs.
No entanto, a distinção entre processadores e dispositivos está no tipo de software que os executa.
Os processadores executam programas/softwares que foram explicitamente escritos para o sistema que está sendo desenvolvido.
Eles são dispositivos de computação para fins gerais, que apresentam capacidade de computação, memória e capacidade de execução.
Os dispositivos executam o software escrito que controla a funcionalidade do próprio dispositivo.
Em geral, eles são conectados a um processador que controla o dispositivo,
executam o software incorporado e são incapazes de executar programas para fins gerais.
Sua funcionalidade é geralmente controlada pelo software do driver de dispositivo.
Existe uma série de padrões de distribuição comuns nos sistemas, dependendo da funcionalidade do sistema e do tipo de aplicativo.
Em muitos casos, o padrão de distribuição é informalmente usado para descrever a 'arquitetura' do sistema, embora a arquitetura completa abranja isso, mas também muitos outros elementos.
Por exemplo, muitas vezes, um sistema será descrito como detentor de uma 'arquitetura cliente-servidor', embora isso seja somente o aspecto de distribuição da arquitetura.
Isso serve para destacar a importância dos aspectos de distribuição do sistema e até que ponto eles influenciam outras decisões de arquitetura.
Os padrões de distribuição descritos a seguir implicam determinadas características de sistema, características de desempenho e arquiteturas de processo.
Cada um deles soluciona determinados problemas, mas também propõe desafios exclusivos.
Em "arquiteturas de cliente/servidor", há nós de processador de rede
especializados denominados clientes e nós denominados servidores. Os clientes são consumidores dos serviços fornecidos por um servidor.
Geralmente, um cliente atende a um único usuário e resolve os serviços de apresentação de usuário final (GUIs), enquanto o servidor fornece serviços aos diversos clientes simultaneamente. Os serviços fornecidos são, em geral, serviços de banco de dados, de segurança ou de impressão.
Nesses sistemas, a "lógica do
aplicativo" ou lógica de negócios é normalmente distribuída entre
o cliente e o servidor. A distribuição da lógica de negócios é
denominada particionamento do aplicativo.
Na figura a seguir, o Cliente A mostra um exemplo de arquitetura em 2 camadas, com a maioria da lógica do aplicativo localizada no servidor.
O Cliente B mostra uma arquitetura em 3 camadas comum, com os Serviços de Negócios implementados em um Servidor de Objeto de Negócios.
O Cliente C mostra um aplicativo comum baseado na Web.

Variações de Arquiteturas Cliente-Servidor
Nos sistemas cliente/servidor tradicionais, a maior parte da lógica de negócios é implementada nos clientes, mas alguns recursos ficam melhor alocados no servidor como, por exemplo, a funcionalidade que geralmente acessa os dados armazenados no servidor.
Fazendo isso, uma pessoa pode reduzir o tráfego da rede, o que, na maioria dos casos, é muito caro (é uma ordem de grandeza ou duas mais lento do que a comunicação entre processos).
Algumas características:
- Um sistema pode ser formado por vários tipos diferentes de clientes, entre os quais:
- Estações de trabalho do usuário
- Computadores da rede
- Os clientes e servidores se comunicam usando várias tecnologias, como CORBA/IDL ou RPC (chamada de procedimento remota).
- Um sistema pode ser formado por vários tipos diferentes de servidores, entre os quais:
- Servidores de banco de dados, que manipulam máquinas de banco de dados,
como Sybase, Ingres, Oracle, Informix;
- Servidores de impressão, que manipulam a lógica do driver (enfileiramento
etc.) para uma impressora específica;
- Servidores de comunicação (TCP/IP, ISDN, X.25),
- Servidores de gerenciadores de janelas (X)
- Servidores de arquivos (NFS sob UNIX).
A 'Arquitetura em 3 Camadas' é um caso especial da 'Arquitetura de Cliente/Servidor'
em que a funcionalidade no sistema é dividida em 3 partições lógicas: serviços de aplicativo,
serviços de negócios e serviços de dados. As 'partições lógicas' podem, na verdade, ser mapeadas para três ou mais nós físicos.

Exemplo de uma Arquitetura em 3 Camadas
O particionamento lógico nessas três 'camadas' reflete uma observação sobre como a funcionalidade em aplicativos típicos de escritório tende a ser implementada e como ela é alterada.
Os serviços de aplicativo, que lidam basicamente com as questões de apresentação da GUI, tendem a ser executados em uma estação de trabalho de desktop dedicada com um ambiente operacional gráfico de janelas.
As mudanças na funcionalidade tendem a ser impostas pela
facilidade de uso ou por considerações estéticas, essencialmente por
fatores humanos.
Os serviços de dados tendem a ser implementados por meio de uma tecnologia de servidor de banco de dados, que, por sua vez, tende a ser executada em um ou mais nós de alto desempenho e alta largura de banda que atendem a centenas ou milhares de usuários conectados a uma rede.
É bem provável que os serviços de dados sejam alterados quando a representação e os relacionamentos entre as informações armazenadas também forem alterados.
Os serviços de negócios refletem o conhecimento codificado dos processos de negócios.
Eles manipulam e sintetizam as informações obtidas nos serviços de dados e as fornecem aos serviços de aplicativo.
Os serviços de negócios são geralmente usados por vários usuários em comum e, portanto, eles tendem a ser alocados em servidores especializados também, embora possam residir nos mesmos nós que os serviços de dados.
A funcionalidade de particionamento ao longo dessas linhas fornece um padrão relativamente
confiável para fins de escalabilidade: incluindo servidores e equilibrando novamente o
processamento entre os servidores de dados e de negócios, um grau maior de escalabilidade é alcançado.
O cliente é "Fat" porque quase tudo é executado nele (exceto em uma variação
denominada 'arquitetura em 2 camadas', em que os serviços de dados são alocados em um
nó separado). Os Serviços de Aplicativo, Serviços de Negócios e Serviços de Dados residem na máquina cliente. O servidor de banco de dados fica geralmente em outra máquina.

Arquitetura tradicional em 2 camadas ou "Fat Client"
Os 'Fat Clients' são relativamente simples de projetar e construir. No entanto, eles são mais difíceis de distribuir (pois tendem a ser grandes e monolíticos) e manter.
Como as máquinas cliente tendem a armazenar os dados em cache localmente para fins de desempenho, a coerência e consistência do cache local tendem a ser questões e áreas que garantem atenção particular.
As mudanças efetuadas nos objetos armazenados em vários caches locais são difíceis e caras de coordenar, envolvendo transmissões das mudanças em rede.
Na outra extremidade do espectro da arquitetura 'Fat Client' está a arquitetura 'Fat Server' ou 'Anorexic Client'.
Um exemplo típico é o aplicativo de navegador da Web executando um conjunto de páginas HTML, em que há pouquíssimos aplicativos no cliente.
Quase todo o trabalho é realizado em um ou mais servidores da Web e servidores de dados.

Aplicativo da Web
Os aplicativos da Web são fáceis de distribuir e de alterar.
Eles são relativamente baratos de desenvolver e suportar (já que grande parte da infra-estrutura do aplicativo é fornecida pelo navegador e pelo servidor da Web).
Eles podem, no entanto, não fornecer o grau desejado de controle no aplicativo e tendem a saturar a rede rapidamente se não forem bem projetados (e, algumas vezes, apesar de serem bem projetados).
Nesta arquitetura, os serviços de aplicativo, de negócios e de dados residem em diferentes nós, possivelmente com especialização de servidores nas camadas de serviços de negócios e de serviços de dados.
Uma realização completa de uma arquitetura em 3 camadas.
Na arquitetura ponto a ponto, qualquer processo ou nó do sistema pode ser cliente
e servidor. A distribuição da funcionalidade é obtida por meio do agrupamento de serviços inter-relacionados, a fim de minimizar o tráfego da rede e, ao mesmo tempo, maximizar a taxa de transferência e a utilização do sistema.
Esses sistemas tendem a ser complexos e há uma maior necessidade de conhecer as questões como dead-lock, escassez entre processos e tratamento de falhas.
|