Com o aumento da informatização, adoção à mobilidade, computação em nuvem e softwares como serviço, os sistemas vêm requisitando diferentes características das tradicionais implementações para adoção desses conceitos, pois tais atributos trouxeram novos desafios para a arquitetura de sistemas, como flexibilidade no escalonamento, alta disponibilidade e constantes integrações entre sistemas. A partir de 2012, iniciou-se o surgimento de novas práticas de subdivisão de grandes estruturas de softwares em pequenas estruturas, posteriormente nomeadas de arquitetura de micro serviços, que apresentam conceitos de softwares flexíveis a mudanças, a escalonamento e com integrações entre sistemas como essência. Contudo, na maioria dos sistemas atuais, são aderidos o conceito de softwares monolitos, nos quais toda solução se encontra em uma única estrutura de software, o que ocasiona menor flexibilidade na arquitetura do sistema, para atingir as características de softwares já mencionadas. A partir disso, esta pesquisa aplica os conceitos de decomposição de softwares propostos pela arquitetura de micro serviços, em duas diferentes abordagens, com comunicação síncrona e assíncrona, por meio das quais são demonstradas as diferentes atuações das comunicações entre os serviços, que possuem comportamentos distintos, como: maiores tempos de execução, quando remotas e divergência no tamanho de código-fonte. Comparada às soluções monolíticas, os micro serviços apresentam maior adesão às características mencionadas acima de flexibilidade, escalonamento, alta disponibilidade e integração com outros sistemas, pois sua essência é de uma arquitetura com maior flexibilidade, no entanto há o custo a nível de código fonte para adoção a essa estrutura flexível, onde o código fonte pode alcançar quantidades de linhas de código e complexidade ciclomática superiores que o dobro, quando comparadas. Com isso, a pesquisa apresenta a superioridade da arquitetura de micro serviços em satisfazer características de modificabilidade, interoperabilidade, disponibilidade e escalabilidade em relação a arquitetura monolítica, contudo com elevada inferioridade no atributo manutenibilidade.
With increased computerization, adoption of mobility, cloud computing and software as a service, the systems have been ordering different characteristics of traditional deployments for adoption of these concepts, as these attributes have brought new challenges to the system architecture, such as flexibility in scheduling, high availability and constant integration between systems. From 2012, began the emergence of new practices of large software structures subdivision into small structures, later named micro services architecture, which provide software concepts flexible to change, the scheduling and integration between systems as essence. However, in most current systems are adhered to the concept of software monoliths in which the whole solution is in a single software framework, which leads to less flexibility in system architecture to achieve the characteristics already mentioned software. From this, this research applies the software decomposition concepts proposed by the micro services architecture, two different approaches, with synchronous and asynchronous communication, through which the different actions of the communications are demonstrated between the services, which have different behaviors, as longer execution times when remote and divergence in the source code size. Compared to monolithic solutions, micro services have higher adherence to the features mentioned above flexibility, scaling, high availability and integration with other systems, because its essence is an architecture with greater flexibility, however there is the cost to source code level for adoption of this flexible structure, where the source code can achieve amounts of lines of code and higher cyclomatic complexity than double compared. Thus, the research shows the superiority of micro services architecture to meet changeability features, interoperability, availability and scalability compared to monolithic architecture, yet with high inferiority in maintainability attribute.
Data da Defesa: 27/09/2016
Banca Examinadora
Orientador (a): Sebastião Ribeiro Júnior (Lactec)
Membro da Banca: Renato de Arruda Penteado Neto(Lactec)
Membro da Banca: Edson José Pacheco (UFPR)
Palavra(s)-Chave: Engenharia de Software. Arquitetura de Software. Monolítico. Micro Serviços.
Keywords: Software Engineering. Software Architecture. Monolithic. Micro Services.