Padrões e diretrizes arquiteturais para escalabilidade de sistemas - Porto, Ivens Oliveira (2009)
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.