<< Chapter < Page | Chapter >> Page > |
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:
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.
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.
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.
Notification Switch
Would you like to follow the 'Arquitetura de software' conversation and receive update notifications?