CI/CD Pipelines for Microservice-Based Architectures

Detalhes bibliográficos
Autor(a) principal: Pinheiro, Gabriel Marco Freire
Data de Publicação: 2022
Tipo de documento: Dissertação
Idioma: eng
Título da fonte: Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)
Texto Completo: http://hdl.handle.net/10316/102181
Resumo: Dissertação de Mestrado em Engenharia Informática apresentada à Faculdade de Ciências e Tecnologia
id RCAP_0a073109ab4ed6052ce07879d7d3ee13
oai_identifier_str oai:estudogeral.uc.pt:10316/102181
network_acronym_str RCAP
network_name_str Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)
repository_id_str 7160
spelling CI/CD Pipelines for Microservice-Based ArchitecturesCI/CD pipelines para arquiteturas baseadas em micro-serviçosCloudMicroservicesDevSecOpsContinuous IntegrationContinuous DeliveryCloudMicroservicesDevSecOpsContinuous IntegrationContinuous DeliveryDissertação de Mestrado em Engenharia Informática apresentada à Faculdade de Ciências e TecnologiaO presente documento descreve o trabalho realizado por Gabriel Pinheiro, no âmbito da unidade curricular Dissertação/Estágio em Engenharia de Software, com o título original “CI/CD Pipelines para arquiteturas baseadas em micro-serviços”, promovido e sob o acolhimento da empresa WIT Software S.A. De forma a conseguir adaptar a mudanças e ao crescimento de operações na indústria de desenvolvimento de aplicações e software, o objetivo do estágio consistiu na criação de uma plataforma que permitisse criar um padrão único dentro das equipas de desenvolvimento de software. Esta plataforma estabelece um padrão base para atuais e futuros projetos de desenvolvimento, sendo que permite que sejam feitos ajustes e adaptações ao seu funcionamento consoante o projeto que a mesma integrar. Esta adoção de serviços de automação procura criar uma mudança de cultura dentro da organização, de forma que haja uma sensibilidade diferente quando se aborda problemas relacionados com o processo que decorre nos bastidores da criação de software. Com o intuito de aprendizagem, o estágio iniciou-se com um estudo de conceitos essenciais ao entendimento do objetivo do projeto. Aqui, criou-se um alicerce sob o qual o restante trabalho se iria fundar, obtendo-se conhecimento relacionado com tecnologias cloud-native, arquiteturas baseadas em micro-serviços, culturas de automação, metodologias onde a automação é aplicada e a forma como é aplicada, e, por fim, a análise de informação da aplicação já em produção. Tendo conhecimento destes conceitos, estudou-se as melhores práticas associadas à criação de uma infraestrutura em cloud para uma aplicação baseadas em micro-serviços, à criação de uma pipeline CI/CD e como esta deveria ser adotada dentro de uma organização, mantendo o aproveitamento das vantagens de serviços cloud-native. A fase de estudo terminou com estudo e análise de possíveis soluções que permitem aplicar estas boas práticas num ambiente de produção. De modo a garantir um produto final que fosse ao encontro das espectativas da organização, foi feito um levantamento de requisitos e um planeamento do projeto de desenvolvimento, desde a fase de provisionamento de infraestrutura até às ferramentas disponibilizadas às equipas de operações, integrando a análise de métricas e mensagens comunicadas pela aplicação. Para além do planeamento do projeto, foi preparado uma representação gráfica da arquitetura das três facetas da pipeline. Isto é, da pipeline responsável por criar a infraestrutura, da pipeline responsável por entregar a aplicação ao seu ambiente de produção, e, por fim, a arquitetura necessária para garantir observabilidade da aplicação. A solução final deste estágio pretende realizar uma mudança de cultura na organização, começando pela adoção de uma infraestrutura cloud-native, onde o seu provisionamento é feito on-demand e taxado consoante o nível de utilização. Este processo permite criar componentes computacionais em meros minutos, ao invés de requerer vários dias para equipas de IT realizarem pedidos de vários colaboradores. A infraestrutura é copulada com uma pipeline CI/CD que estabelece uma ponte de ligação entre developers de software e a infraestrutura referida anteriormente. Esta pipeline permite automatizar tarefas de build, testes unitários e análise de código de forma recorrente e consistente, acelerando o processo de entrega de software aos seus utilizadores. Com este padrão estabelecido em todos os projetos e esta cultura a tornar-se intrínseca a todos as equipas de desenvolvimento, todos os stakeholders envolvidos têm algo a desfrutar desta alteração.This document looks to present the work carried out by Gabriel Pinheiro, within the context of the Dissertation/Internship in Software Engineering course. The original title of the Project is CI/CD Pipelines for Microservice-Based architectures, promoted and coordinated by WIT Software S.A.In an effort to adapt to changes and the rapid growth of operating within the software development industry, the goal of the internship consists in creating a framework which establishes a standard within software development teams. This framework creates the Foundation on which current and future projects will base themselves, allowing for customization and alterations where necessary to fit the different contexts. The adoption of this product begins the adoption process of a culture based on automation services, in order to create a different view when facing problems related to the back-stage process of software development.The internship began with a study of concepts that were considered essential for a better understanding of the project in itself. With this study, a cornerstone was formed on which the remainder of the internship’s work would be based on, obtaining in-depth knowledge into how cloud-native technologies operate, what a microservices architecture consists of, what are known automation-based development cultures and how they can be adopted, and, finally, how application observability can be obtained when in production and dealing with microservices. Once concluded, a further study was conducted into understanding which are the best practices associated with creating cloud-native infrastructures, along with the best practices required when creating a CI/CD pipeline, and its adoption into a new organization. This study concluded with establishing which the best suited solutions should be used to apply these practices within an organization. In order to guarantee a final product which met the expectations of the organization, a list of requirements was established with those responsible for the internship itself, along with a detailed planning of the development project, beginning with the phase of infrastructure provisioning, through to the tools made available to operations teams. Furthermore, a graphic representation was created in order to define the framework’s architecture.The final product of this internship looks to apply a change in the organization’s culture of software development, beginning with the adoption of a cloud-native infrastructure, which allows for on-demand usage, billed according to the level of use. This means of provisioning allows computational components to be created and made available in a matter of minutes, contrasting strongly to the traditional reality which would require several days for IT teams to give access to developers. The infrastructure is coupled with the CI/CD pipeline which a bridge between said infrastructure and software developers, a pipeline which automates build tasks, including automated tests, code analysis and dependency verification in a consistent and recurring manner, without the loss of software quality. With this foundation in place, along with the culture of automation becoming more intertwined with the development teams, all stakeholders involved with this process can reap its benefits.2022-07-12info:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesishttp://hdl.handle.net/10316/102181http://hdl.handle.net/10316/102181TID:203062205engPinheiro, Gabriel Marco Freireinfo:eu-repo/semantics/openAccessreponame:Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)instname:Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informaçãoinstacron:RCAAP2022-09-27T20:42:26Zoai:estudogeral.uc.pt:10316/102181Portal AgregadorONGhttps://www.rcaap.pt/oai/openaireopendoar:71602024-03-19T21:19:13.843767Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) - Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informaçãofalse
dc.title.none.fl_str_mv CI/CD Pipelines for Microservice-Based Architectures
CI/CD pipelines para arquiteturas baseadas em micro-serviços
title CI/CD Pipelines for Microservice-Based Architectures
spellingShingle CI/CD Pipelines for Microservice-Based Architectures
Pinheiro, Gabriel Marco Freire
Cloud
Microservices
DevSecOps
Continuous Integration
Continuous Delivery
Cloud
Microservices
DevSecOps
Continuous Integration
Continuous Delivery
title_short CI/CD Pipelines for Microservice-Based Architectures
title_full CI/CD Pipelines for Microservice-Based Architectures
title_fullStr CI/CD Pipelines for Microservice-Based Architectures
title_full_unstemmed CI/CD Pipelines for Microservice-Based Architectures
title_sort CI/CD Pipelines for Microservice-Based Architectures
author Pinheiro, Gabriel Marco Freire
author_facet Pinheiro, Gabriel Marco Freire
author_role author
dc.contributor.author.fl_str_mv Pinheiro, Gabriel Marco Freire
dc.subject.por.fl_str_mv Cloud
Microservices
DevSecOps
Continuous Integration
Continuous Delivery
Cloud
Microservices
DevSecOps
Continuous Integration
Continuous Delivery
topic Cloud
Microservices
DevSecOps
Continuous Integration
Continuous Delivery
Cloud
Microservices
DevSecOps
Continuous Integration
Continuous Delivery
description Dissertação de Mestrado em Engenharia Informática apresentada à Faculdade de Ciências e Tecnologia
publishDate 2022
dc.date.none.fl_str_mv 2022-07-12
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/masterThesis
format masterThesis
status_str publishedVersion
dc.identifier.uri.fl_str_mv http://hdl.handle.net/10316/102181
http://hdl.handle.net/10316/102181
TID:203062205
url http://hdl.handle.net/10316/102181
identifier_str_mv TID:203062205
dc.language.iso.fl_str_mv eng
language eng
dc.rights.driver.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
dc.source.none.fl_str_mv reponame:Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)
instname:Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação
instacron:RCAAP
instname_str Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação
instacron_str RCAAP
institution RCAAP
reponame_str Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)
collection Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)
repository.name.fl_str_mv Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) - Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação
repository.mail.fl_str_mv
_version_ 1799134086902579200