Tarefa: Descrever a Distribuição
Esta tarefa define a arquitetura de implementação para um sistema distribuído, em termos de nós físicos e suas interconexões.
Disciplinas: Análise e Design
Objetivo
Descrever como a funcionalidade do sistema será distribuída através de nós físicos. Esta tarefa se aplica somente a sistemas distribuídos.
Relacionamentos
Descrição Principal

Esta tarefa define a arquitetura de implementação para o sistema em termos de nós físicos e suas interconexões. Durante a Tarefa: Análise Arquitetural, um >Modelo de Implementação inicial foi definido. Nesta tarefa, esse Modelo de Implementação (especialmente a Visualização Implementação) é refinada para refletir o design atual.

No início da fase de elaboração, a visualização de implementação é em geral bastante preliminar, mas na fase final da elaboração ela deverá estar bem definida.

Etapas
Analisar os Requisitos de Distribuição
Finalidade Definir a extensão à qual a distribuição é necessária para o sistema. 

Os requisitos de distribuição são orientados por:

  • Demandas de distribuição no domínio do problema (requisitos funcionais) - Pode haver requisitos explícitos para que o sistema acesse ou utilize um processador distribuído específico, um banco de dados ou um sistema legado para executar parte de sua funcionalidade.
  • Configuração de implementação selecionada - Configurações de implementação específicas impõem restrições sobre a distribuição do sistema, definindo o número e os tipos de nós e suas interconexões. Por exemplo, a seleção de uma configuração de implementação em múltiplas camadas em geral significa que você possui um nó cliente, um nó servidor da Web e um nó servidor de aplicativo. Uma configuração de implementação específica geralmente é selecionada durante a Tarefa: Análise Arquitetural e depois é refinada durante esta tarefa.
  • Recursos exigidos (requisitos não funcionais) - Funcionalidade que consome tempo e requer muitos cálculos pode exigir configurações de hardware específicas, especialmente equipado para tratar a demanda da funcionalidade; por exemplo, um processador mais rápido, mais memória RAM ou uma quantidade maior de espaço em disco. O processamento de sinais digitais seria um exemplo, exigindo processadores especializados e dedicados.
  • A necessidade de tolerância a falhas (requisitos não funcionais) - O requisito poderia ser processadores de backup.
  • Preocupações com escalabilidade e flexibilidade (requisitos não funcionais) - O grande número de usuários simultâneos é simplesmente altíssimo para ser suportado por um único processador. Poderia ser um requisito para o equilíbrio de carga da funcionalidade do sistema, fornecendo assim desempenho máximo e escalabilidade.
  • Preocupações econômicas - O preço de processadores menores e mais baratos não pode ser comparado ao dos modelos maiores.

Como ocorre com muitos problemas relativos à arquitetura, esses requisitos poderão, de alguma forma, ser mutuamente exclusivos. Pelo menos inicialmente, não é comum ocorrer conflitos entre requisitos. A ordenação dos requisitos em termos de importância ajudará a solucionar o conflito.

Definir a Configuração da Rede
Finalidade Definir a configuração e a topologia da rede. 

Nesta etapa, o Modelo de Implementação inicial (definido na Tarefa: Análise Arquitetural) é refinado para suportar os requisitos de distribuição identificados na etapa anterior.

A topologia da rede, os recursos e as características dos processadores e dispositivos da rede determinarão a natureza e o grau de distribuição possível no sistema.

As seguintes informações precisam ser capturadas:

  • o layout físico da rede, incluindo locais
  • os nós da rede e suas configurações e recursos (a configuração inclui o hardware e o software instalados nos nós, o número de processadores, a quantidade de espaço em disco, memória e troca e assim por diante) - o hardware instalado no nó pode ser representado utilizando dispositivos
  • a largura de banda de cada segmento da rede
  • a existência de caminhos redundantes na rede (isso ajudará a fornecer recursos de tolerância a falhas)
  • A finalidade principal do nó, incluindo:
    • nós da estação de trabalho utilizado pelos usuários
    • nós de servidores nos quais ocorre o processamento livre (para simplificar a configuração do servidor, seus componentes podem ser compactados em uma imagem livre, sem componentes da interface com o usuário)
    • configurações especiais utilizadas para desenvolvimento e teste
    • outros processadores especializados
  • design e recursos IP (por exemplo, DNS, VPN), se houver uma rede IP
  • a parte que cabe à Internet na solução

Exemplo

O seguinte diagrama ilustra a Visão de Implementação do sistema de caixa eletrônico

Diagrama da Visualização de Implementação do Caixa Eletrônico

Visão de Implementação do Sistema de Caixa Eletrônico

O diagrama ilustra dois Nós (o próprio sistema de caixa eletrônico, que é o centro deste exemplo, e o Servidor de Rede desse sistema), através dos quais são estabelecidas todas as conexões da rede entre bancos. Embora o Servidor de Rede esteja fora do escopo dos criadores do sistema de caixa eletrônico, ele é mostrado aqui para ilustrar como a largura de banda da rede pode ser documentada. O diagrama mostra também os processos e encadeamentos executados no nó do caixa eletrônico, os quais são descritos na próxima etapa Alocar elementos do sistema em nós.

Faça anotações para documentar a capacidade do processador e da rede. Esse tipo de documentação também pode ser apresentado nos campos de documentação do Nó (ou dos dispositivos), e nesse caso não será exibido no diagrama.

Alocar Elementos do Sistema em Nós
Finalidade  Distribuir a carga de trabalho do sistema.  

Nesta etapa, os elementos do sistema são alocados nos nós definidos na etapa anterior. A implementação pode ser descrita de uma perspectiva lógica e física.

Implementação lógica é onde os elementos lógicos (classes, subsistemas ou suas interfaces) são mapeados em nós. Podem estar incluídos encadeamentos de controle. Por exemplo, uma implementação lógica pode declarar que o subsistema AuctionManager está implementado no servidor de aplicativo.

Implementação física é onde os arquivos são mapeados em nós. Por exemplo, uma implementação física pode afirmar que o arquivo CloseAuctionTimer.class está implementado no servidor76.

A distribuição é uma área onde a totalização pode ser, e geralmente é, menos do que a totalização das partes. A obtenção de vantagens concretas com a distribuição requer trabalho e planejamento detalhado. Ao decidir que elementos serão mapeados para quais nós, considere o seguinte:

  • capacidade do nó (em termos de memória e potência de processamento)
  • largura de banda da mídia de comunicação (barramento, LANs, WANs)
  • disponibilidade de hardware e links de comunicação, re-roteamento
  • requisitos de redundância e tolerância a falhas
  • requisitos de tempo de resposta
  • requisitos de rendimento do processamento

Os elementos são alocados para nós com o intuito de minimizar a quantidade de tráfego cruzado na rede; os elementos que interagem em um alto grau devem ser colocados no mesmo nó; enquanto os elementos que interagem menos freqüentemente podem residir em nós diferentes. A decisão crucial e que, muitas vezes requer iteração, é quando fazer a distinção. A distribuição de processos entre dois ou mais nós requer uma verificação minuciosa dos padrões de comunicação entre processos no sistema. Muitas vezes há uma percepção simples de que a distribuição do processamento pode aliviar a carga de trabalho de uma máquina para outra. Na prática, a carga de trabalho adicional decorrente da comunicação entre processos pode facilmente negar os ganhos obtidos com a distribuição da carga de trabalho se o processo e os limites dos nós não forem considerados cuidadosamente.

Exemplo

O diagrama do exemplo anterior, a Visualização da Implementação do caixa eletrônico, ilustra para o nó de caixa eletrônico a alocação de processos no nó. Há um único processo (Caixa Eletrônico Principal) que, por sua vez, consiste em três encadeamentos de controle separados (Interface do Cliente, Interface de Rede do Caixa Eletrônico e Controlador de Dispositivo).

Alguns ambientes fornecem mecanismos para automatizar e/ou simplificar a distribuição. Por exemplo:

  • Clusters: Um cluster é um grupo de servidores que age como uma unidade, normalmente incluindo funcionalidade como failover e equilíbrio de carga. Nesse caso, a Visualização de Implementação deve descrever como os elementos do sistema são alocados em clusters, e também como os clusters são configurados para serem mapeados em nós físicos.
  • Contêineres: Em ambientes de componentes, tais como J2EE, Microsoft .NET e outros, os componentes são executados em um ambiente de computação lógico chamado contêiner. Um contêiner pode ser considerado um "nó lógico". A visualização de implementação deve descrever como os elementos do sistema são implementados em contêineres e, por sua vez, como os contêineres são alocados em nós físicos.

O uso de tais mecanismos de distribuição de suporte, e como eles precisam ser configurados e mapeados em nós físicos para atender aos requisitos de distribuição, deve ser documentado como parte da visualização de implementação.

Informações Adicionais