Please use this identifier to cite or link to this item: https://hdl.handle.net/10316/102181
Title: CI/CD Pipelines for Microservice-Based Architectures
Other Titles: CI/CD pipelines para arquiteturas baseadas em micro-serviços
Authors: Pinheiro, Gabriel Marco Freire
Orientador: Laranjeiro, Carlos Nuno Bizarro e Silva
Cunha, Rui
Keywords: Cloud; Microservices; DevSecOps; Continuous Integration; Continuous Delivery; Cloud; Microservices; DevSecOps; Continuous Integration; Continuous Delivery
Issue Date: 12-Jul-2022
Serial title, monograph or event: CI/CD Pipelines for Microservice-Based Architectures
Place of publication or event: WIT Software S.A.
Abstract: O 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.
Description: Dissertação de Mestrado em Engenharia Informática apresentada à Faculdade de Ciências e Tecnologia
URI: https://hdl.handle.net/10316/102181
Rights: openAccess
Appears in Collections:UC - Dissertações de Mestrado

Files in This Item:
File Description SizeFormat
Report.pdf10.57 MBAdobe PDFView/Open
Show full item record

Page view(s)

249
checked on Apr 30, 2024

Download(s)

182
checked on Apr 30, 2024

Google ScholarTM

Check


This item is licensed under a Creative Commons License Creative Commons