Please use this identifier to cite or link to this item: https://repositorio.ufu.br/handle/123456789/12488
metadata.dc.type: Dissertação
metadata.dc.rights: Acesso Aberto
Title: Padrões e diretrizes arquiteturais para escalabilidade de sistemas
metadata.dc.creator: Porto, Ivens Oliveira
metadata.dc.contributor.advisor1: Rosa, Pedro Frosi
metadata.dc.contributor.referee1: Kofuji, Sergio Takeo
metadata.dc.contributor.referee2: Matias Júnior, Rivalino
metadata.dc.description.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.
Keywords: 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
metadata.dc.subject.cnpq: CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO
metadata.dc.language: por
metadata.dc.publisher.country: BR
Publisher: Universidade Federal de Uberlândia
metadata.dc.publisher.initials: UFU
metadata.dc.publisher.department: Ciências Exatas e da Terra
metadata.dc.publisher.program: Programa de Pós-graduação em Ciência da Computação
Citation: 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
Issue Date: 3-Sep-2009
Appears in Collections:PPGCC - Mestrado em Ciência da Computação

Files in This Item:
File Description SizeFormat 
ivens.pdf1.51 MBAdobe PDFView/Open


Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.