Use este identificador para citar ou linkar para este item: https://repositorio.ufu.br/handle/123456789/12488
Tipo do documento: Dissertação
Tipo de acesso: Acesso Aberto
Título: Padrões e diretrizes arquiteturais para escalabilidade de sistemas
Autor(es): Porto, Ivens Oliveira
Primeiro orientador: Rosa, Pedro Frosi
Primeiro membro da banca: Kofuji, Sergio Takeo
Segundo membro da banca: Matias Júnior, Rivalino
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
Área(s) do CNPq: CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO
Idioma: por
País: BR
Editora: Universidade Federal de Uberlândia
Sigla da instituição: UFU
Departamento: Ciências Exatas e da Terra
Programa: Programa de Pós-graduação em Ciência da Computação
Referência: 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.
URI: https://repositorio.ufu.br/handle/123456789/12488
Data de defesa: 3-Set-2009
Aparece nas coleções:DISSERTAÇÃO - Ciência da Computação

Arquivos associados a este item:
Arquivo Descrição TamanhoFormato 
ivens.pdf1.51 MBAdobe PDFThumbnail
Visualizar/Abrir


Os itens no repositório estão protegidos por copyright, com todos os direitos reservados, salvo quando é indicado o contrário.