CI/CD Pipelines for Microservice-Based Architectures
Autor(a) principal: | |
---|---|
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 |