<< Chapter < Page Chapter >> Page >

Táticas de design

Por meio da aplicação de padrões, somos capazes de reusar a experiência de outros projetistas por meio de soluções estruturadas de design. No entanto, há outra forma de reuso de experiência de design e que não é propriamente definida como padrões. Esta forma é chamada de tática de design e, apesar de cada tática ter objetivos bem definidos, seu conteúdo é menos estruturado, normalmente contendo apenas ideias ou dicas de projeto que ajudam na implementação de atributos de qualidade. A principal diferença entre táticas e padrões de design é que, ao contrário dos padrões, as táticas não necessariamente descrevem elementos arquiteturais que devem existir na solução. Desta maneira, é responsabilidade do arquiteto defini-los de forma a seguir as dicas contidas nas táticas.

Ao aplicar as táticas ao design, assim como durante a aplicação de padrões, o arquiteto deve também considerar os trade-offs existentes: por um lado, uma tática pode aumentar o grau de atendimento a um atributo de qualidade, mas, por outro lado, pode afetar negativamente outros atributos. Por isso, para facilitar a avaliação dos trade-offs durante o design, apresentaremos algumas táticas de acordo com as qualidades que elas implementam, mas também seremos explícitos sobre o que é afetado negativamente.

A seguir, apresentamos táticas de design de acordo com os seguintes atributos de qualidade:

  • desempenho e escalabilidade;
  • segurança;
  • tolerância a faltas;
  • compreensibilidade e modificabilidade; e
  • operabilidade.

Desempenho e escalabilidade

Para melhorar desempenho de uma aplicação ou facilitar a adição de recursos computacionais para atender a uma maior demanda, podemos citar as seguintes táticas arquiteturais.

Não mantenha estado

Se os elementos da arquitetura são projetados de forma a não manter estado ( stateless ), ou seja, que eles sejam capazes de realizar suas funções apenas com os parâmetros presentes nas requisições, fica mais fácil replicá-los para dividir a carga de requisições entre as réplicas. Basta apenas que seja definido uma balanceador de carga para distribuir as chamadas entre estes elementos. Note que se a demanda aumenta, pode-se também aumentar o número de elementos stateless para suprimir a demanda sem muito esforço. Basta então informar ao balanceador sobre os novos elementos para que ele os considere na distribuição de novas requisições.

É importante observar que nem todos os elementos arquiteturais podem ser stateless . Por exemplo, elementos de dados essencialmente mantêm estado (e, portanto, são stateful ). Assim, é possível que, em algum ponto da arquitetura, os diversos elementos stateless precisem de dados ausentes nos parâmetros das requisições e portanto terão que fazer novas requisições aos elementos stateful . Se os elementos que mantêm estado não forem capazes de responder a esta carga de novas requisições, eles se tornarão o gargalo da arquitetura, prejudicando o desempenho de todo o sistema.

Partição de dados

Para melhorar o desempenho e a escalabilidade de elementos de dados, podemos dividir o conjunto de dados entre elementos de execução. Cada um destes elementos que possui parte dos dados é chamado de partição (ou shard ). Há duas técnicas de partição de dados que merecem ser citadas: a partição horizontal e a partição vertical.

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Arquitetura de software. OpenStax CNX. Jan 05, 2010 Download for free at http://cnx.org/content/col10722/1.9
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Arquitetura de software' conversation and receive update notifications?

Ask