Utilize este identificador para referenciar este registo:
http://hdl.handle.net/10362/147386| Título: | Create IT - Análise Comparativa de Micro-serviços e Monólitos |
| Autor: | Banha, Gonçalo Diogo de Almeida |
| Orientador: | Vala, Pedro Gomes, Maria Cecília |
| Palavras-chave: | Micro-Serviços Arquitetura Monolítica Container DevOps |
| Data de Defesa: | Dez-2019 |
| Resumo: | Existem diferentes tipos de arquiteturas para desenvolver software. A mais utilizada
é a arquitetura monolítica, que defende que toda a parte lógica da aplicação, seja gerida
apenas por um processo, tornando-a fortemente acoplada. Esta arquitetura possibilita
uma maior rapidez no desenvolvimento, que permite a criação de protótipos funcionais
o mais cedo possível. Porém, esta arquitetura apresenta algumas desvantagens, por exem-
plo, o aumento da escalabilidade, sendo que é apenas possível replicar o produto como
um todo e não por funcionalidade. Para combater os problemas desta arquitetura, as
empresas começam a estudar uma arquitetura baseada em micro-serviços, que tem como
base, desenvolver uma aplicação dividindo-a em pequenos serviços, que são completa-
mente independentes entre si. Cada serviço implementa uma funcionalidade, permitindo
realizar o deploy e ajustar a escalabilidade, de forma desacoplada. Esta arquitetura tam-
bém apresenta desvantagens como a complexidade de implementação, sendo o número de
micro-serviços criados e a sua comunicação, um dos grandes desafios. Escolher a melhor
arquitetura para utilizar num certo produto, depende de alguns fatores, como, por exem-
plo, o tamanho da equipa ou necessidade de um melhor desempenho contra a rapidez na
implementação.
O objetivo do trabalho consistiu na realização de uma prova de conceito num ambiente
de desenvolvimento de uma aplicação real, de forma a perceber, até que ponto seria viável,
modificá-la na sua totalidade para uma arquitetura de micro-serviços. Foi escolhido uma
funcionalidade para ser extraída e implementada como um micro-serviço, tendo sido
conectada à camada cliente, com uma API Gateway. Para este protótipo, utilizaram-se
tecnologias como Docker, Kubernetes e Kong, sendo este último uma API Gateway.
De forma a ter sido tomada uma decisão, realizou-se uma análise comparativa entre
as duas soluções, em termos de desempenho e em termos de, com a política de Chaos
Engineering utilizada pela Netflix, tolerância a falhas. There are different types of architectures to develop software. The most used is mono- lithic architecture, which has the principle that all the application logic should be man- aged by one process, making this architecture strongly coupled. This architecture enables faster development, which allows the prototyping phase to happen quickly. However, this architecture has some disadvantages, particularly in order to scale, instead of only repli- cating the functionalities needed, it is only possible to scale this kind of by replicating the whole monolith on multiple servers. Due to that and the evolution of technologies, micro-service architecture is becoming more and more popular. The microservices architecture is a design approach to build a single application as a set of small independent services. Microservices architecture puts each functionality into a separate service, allowing those components to be indepen- dently deployable and scalable. Despite these advantages, there are some drawbacks like the complexity of implementation, especially the amount of services and their commu- nication. Choosing the best architecture to use in a certain product is not always easy because it depends on several factors like the team size, their skill and the need for a better performance against the faster development. The thesis goal was testing a proof of concept on a real application in a development environment on the value of migrating the whole solution to a micro-services architecture. To this extent, our work evaluated a set of possible functionalities as candidates to be migrated and developed into a micro-service and elected a relevant functionality with low coupling as an initial case study. To accomplish this migration, this work uses a set of new concepts like DevOps, Containers, Orchestration Cluster and API Gateway. After this migration is completed, the comparison between both architectures will be easier, because it will be possible to compare the performance of both architectures, when submitted to load tests. Another way to compare them is to use a Netflix tool called Chaos Monkey to analyze failure tolerance. When the migration is completed, it is possible to compare the performance of both architectures, when submitted to load tests. It was also used a Netflix concept called Chaos Monkey to analyze failure tolerance. |
| URI: | http://hdl.handle.net/10362/147386 |
| Designação: | Mestre em Engenharia Informática |
| Aparece nas colecções: | FCT: DI - Dissertações de Mestrado |
Ficheiros deste registo:
| Ficheiro | Descrição | Tamanho | Formato | |
|---|---|---|---|---|
| Banha_2019.pdf | 7,57 MB | Adobe PDF | Ver/Abrir |
Todos os registos no repositório estão protegidos por leis de copyright, com todos os direitos reservados.











