Publicação: Padrões e diretrizes arquiteturais para escalabilidade de sistemas
Carregando...
Arquivos
Tipo do documento
Data
Direito de acesso
Área do conhecimento
CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO
Título da Revista
ISSN da Revista
Título de Volume
Autores
Orientador
Coorientador
Resumo
Com o uso da computação em praticamente todas as áreas de atividades, os sistemas (software)
destinados a prover grande capacidade de armazenamento/processamento/acessos passaram
a ser concebidos como sistemas distribuídos. Para esses, escalabilidade tornou-se uma
importante propriedade em seu projeto e arquitetura, fazendo com que tenham de lidar com
cargas de trabalho, de dados e de acessos cada vez maiores enquanto exige-se que apresentem
desempenho satisfatório.
Uma questão ainda não totalmente explorada é: como arquitetar um sistema escalável?
Existem trabalhos que discutem princípios e técnicas gerais de escalabilidade, especialmente
sobre melhoria de desempenho. Entretanto, essas informações estão desorganizadas, e desestruturadas.
Ao iniciar o projeto de um sistema, sempre há o questionamento sobre quais camadas, módulos,
objetos e relacionamentos o projetista deve considerar como ponto de partida. Entretanto,
os sistemas distribuídos, por mais particulares que sejam, sempre apresentam algumas similaridades
quanto ao acesso a dados, processamento distribuído, compartilhamento de contextos,
etc.
Esta dissertação objetiva identificar, catalogar e discutir as diretrizes e técnicas arquiteturais
para auxiliar nos projeto e construção de sistemas escaláveis horizontalmente desde sua
concepção, transformando a escalabilidade de uma propriedade de sistema em um aspecto fundamental
da sua arquitetura.
A idéia básica é oferecer aos projetistas, um conjunto de padrões arquiteturais que ele possa
instanciar à medida que ele os detecte na análise do sistema. Por exemplo, se houver massivo
acesso a dados e, portanto, haja necessidade de particionar o banco de dados, o padrão
arquitetural aplicável (Sharding) especificará quais camadas e subcamadas devem constar no
sistema.
Para que os projetistas possam identificar os requisitos de escalabilidade e estabelecer as
nuances de escalabilidade, os padrões arquiteturais são relacionados em uma linguagem de
padrões. Esta linguagem pode ser utilizada como uma ferramenta durante o projeto de um
sistema escalável. Ressalte-se a apresentação de diretrizes para se alcançar escalabilidade na
construção de sistemas.
As diretrizes e técnicas se preocupam, fundamentalmente, com a escalabilidade horizontal,
que torna possível a execução de um sistema em vários nós de processamento. Ao aumentar
a quantidade de nós, o sistema aumenta, ou mantém, seu desempenho de maneira satisfatória.
As diretrizes e padrões apresentados neste trabalho são aplicáveis particularmente a aplicações
web e a sistemas distribuídos que trabalham com dados armazenados.
É apresentada a arquitetura de um sistema escalável e discutido quais padrões e diretrizes
foram utilizados, como foram aplicados e quais decisões levaram a sua aplicação no projeto do
sistema. Um estudo em laboratório permite verificar a eficácia da proposta.
O trabalho tem como principal resultado a apresentação de padrões arquiteturais, de uma linguagem
de padrões e das diretrizes a serem utilizadas por arquitetos de software na construção
de sistemas escaláveis.
Abstract
With the use of computation in practically all areas of work, the systems (software) being
used to provide great capacity of storage/processing/accesses are conceived as distributed systems.
To those, scalability has become an important property to its project and architecture,
making them deal with ever growing workloads of data and accesses while demanding satisfactory
performance.
An issue not fully explored is: how to build an architecture for a scalable system? There are
works that discuss principles and general techniques for scalability, specially about performance
improvement. However, this information is disorganized and unstructured.
When beginning a system project there is always the question about which tiers, modules,
object and relationships the designer must consider as a starting point. However, distributed
systems, as particular as they may be, always present some similarities regarding data access,
distributed processing, context sharing, etc.
This master s thesis objective is to identify, catalog and discuss, architectural guidelines and
techniques to help in designing and building horizontally scalable systems since its conception,
transforming scalability from a system property to a fundamental aspect of their architecture.
The basic idea is to oer to designers a set of architectural patterns that he can instantiate
as he detects them during the systems analysis. For example, if there is massive access to the
data, and thus the need to partition the database, the applicable architectural pattern (Sharding)
specifies which tiers and sub-tiers must be part of the project.
To make possible for designers to identify the scalability requirements and establish the
scalability nuances, the architectural patterns are related into a pattern language. This language
can be used as tools during the design of a scalable system. It should be noted the presentation
of guidelines for achieving scalability in building systems.
The guidelines and techniques are concerned, fundamentally, with horizontal scalability,
that makes possible the execution of a system with several processing nodes. By increasing
the number of nodes, the system increases, or maintains, its performance satisfactorily. The
guidelines and patterns presented in this work are particularly applicable to web applications
and distributed systems that deal with stored data.
The architecture of a scalable system is presented and the applied patterns and guidelines are
discussed along with how they were applied and which decisions lead to its use. A laboratory
study allows the verification of the proposal eectiveness.
This work has as its main result the presentation of architectural patterns, a pattern language
e the guidelines to be used by software architects while building scalable systems.
Palavras-chave
Arquitetura, Escalabilidade, Desempenho, Padrões, Sistemas distribuídos, Engenharia de software, Teorema cap, Architecture, Scalability, Performance, Patterns, Distributed systems, Software engineering, Cap theorem, Redes de computação
Citação
PORTO, Ivens Oliveira. Padrões e diretrizes arquiteturais para escalabilidade de sistemas. 2009. 161 f. Dissertação (Mestrado em Ciências Exatas e da Terra) - Universidade Federal de Uberlândia, Uberlândia, 2009.