CI/CD: integração contínua (CI), deploy ou implantação contínua (CD) da sua aplicação

Neste artigo você vai entender a necessidade de ter uma integração contínua, deploy ou implantação contínua na organização, e se a sua empresa realmente necessita de ter uma infraestrutura integrada seguindo as práticas de DevOps. Algumas pesquisas afirmam que muitas empresas no ramo de TI, possuem uma necessidade de ter mais agilidade na integração e entrega dos seus produtos, é necessário ter um controlo dos desenvolvimentos feitos pelos programadores antes de passar para produção, passando primeiro pelo processo de teste do código, a fim de garantir que não haja erros na fase de implantação. Reduzir ao máximo a necessidade que os consultores têm em entregar e actualizar um produto ao cliente.

Visão geral

CI/CD é um processo que visa entregar de forma frequente produtos aos clientes, introduzindo a automação nos estágios de desenvolvimento das aplicações. Os principais conceitos atribuídos ao CI/CD são integração contínua, entrega e implantação contínua. Especificamente, CI/CD apresenta automação contínua e monitoramento contínuo em todo o ciclo de vida das aplicações, desde as fases de integração e teste até a entrega e implantação. Juntas, essas práticas conectadas costumam ser chamadas de "pipeline CI/CD" e são apoiadas por equipas de desenvolvimento e operações que trabalham juntas de maneira ágil.

  A diferença entre CI e CD?

Integração Contínua (CI) é uma abreviação de Continuous Integration, que é um processo de automação ou uma prática de desenvolvimento de software na qual todos os desenvolvedores juntam alterações de código em um repositório central várias vezes ao dia. Com CI cada mudança no código aciona uma sequência automatizada de construção e teste para o projecto fornecido. CI geralmente se refere ao estágio de construção ou integração de software e requer um componente de automação e um componente cultural (por exemplo, DevOps).

Entrega e Implantação Contínua (CD) é uma abreviação de Continous Delivery ou Continous Deployment, que está associado a provisionamento e implantação de infraestrutura, ou seja, as alterações de um desenvolvedor em um software é testado automaticamente e soltar para produção. O objetivo da entrega e implantação contínua é garantir que seja necessário um esforço mínimo para implantar o novo código e entregar as alterações em produção.

Na figura a seguir temos a demonstração dos passos que cada um dos temas é abordado,e também deixar claro que são estágios de maturidade na cultura devops.

cultura devops

Principais Diferenças entre Integração contínua vs Deploy e Implantação contínua  
Aqui está uma diferença importante entre CI vs CD.

Principais Diferenças entre Integração contínua vs Deploy e Implantação contínua

Benefícios de automatizar um pipeline de CI/CD


Um pipeline de CI/CD consiste em uma série de etapas a serem realizadas para a disponibilização de uma nova versão de um software. Os pipelines de integração, entrega e implantação contínua tem como objectivo acelerar a disponibilização de softwares, adotando a abordagem de DevOps. O pipeline de CI/CD inclui monitoramento e automação para melhorar o processo de desenvolvimento de aplicações principalmente nos estágios de integração e teste, mas também na entrega e na implantação. 

Temos na figura abaixo as etapas que compõem um pipeline de CI/CD são subconjuntos distintos de tarefas agrupadas no que chamamos de estágio do pipeline.

Benefícios de automatizar um pipeline de CI/CD

Esta não é de forma alguma uma lista completa dos estágios do pipeline. Trata-se apenas de um exemplo dos estágios mais comuns.

 Temos alguns benefícios de um  pipeline automatizado:

  1. Velocidade aumentada: as equipas melhoram tanto a velocidade de lançamentos quanto a qualidade do código. Novos recursos, melhorias e correções são adicionadas continuamente em pequenos incrementos resultando num produto com menos defeitos, permitindo ser mais competitivo.

  2. Redução dos riscos e custos: A automação incentiva os desenvolvedores a verificar as alterações de código em etapas antes de avançar, reduzindo as chances de erros que poderiam ser submetidos em produção. Permite que as alterações sejam testadas de várias maneiras antes de serem implantadas em produção.

  3. Equipa de desenvolvimento mais forte: melhora a comunicação entre as equipas, porque os estágios de pipeline do deploy estão disponíveis para qualquer pessoa da equipa examinar, trazendo assim melhor colaboração entre as equipas. 

  4. Redução na pilha trabalho: os estágios de pipeline fornecem um ciclo de feedback rápido a partir de desenvolvimento  e seus clientes, com este ciclo de interação não só ajuda a construir o produto certo, mas permite que os desenvolvedores submetam melhorias mais rapidamente e reduzindo trabalho.

Na ausência de um pipeline automatizado, os engenheiros ainda precisam realizar essas etapas manualmente e, portanto, de maneira muito menos produtiva.


  Importância do Uso de CI/CD


A integração e entrega contínua podem agilizar o fluxo de trabalho dentro de uma equipa e promover maior controle através de ferramentas de automação, e escalar sistemas com segurança. 

Este é o conceito por trás dos processos de integração contínua (CI), deploy e  implantação contínua (CD) que permitem, ao mesmo tempo, agilidade no desenvolvimento de novas funcionalidades pela equipa de trabalho e o acompanhamento em tempo real do processo por parte do cliente. A implantação de uma rotina de integração, deploy e implantação contínua, porém, precede da junção entre as áreas de desenvolvimento e operação de softwares, o chamado Dev-Ops ver o artigo, sobre DevOps

Para melhorar o entendimento sobre a importância do CI/CD na empresa, temos o exemplo do "SaaS CI" que foi desenvolvido pela Alien Group, e integrado na plataforma Odoo. 

SaaS CI

"SaaS CI" é um módulo Odoo baseado em CI/CD Pipeline e  Kubernetes, que tem ajudado a equipa de desenvolvimento e de operações a ter o controlo dos processos da pipeline, bem como gerir. A equipa de desenvolvimento poderá usar o repositório git para enviar a solicitação de PR (Pull Request), que posteriormente passará automaticamente para o processo do deployment da build, e o processo de construção de builds pode ser manual, directamente do “Saas CI”.

O módulo Odoo "SaaS CI" requer uma conexão com a Internet para pesquisar e exibir os resultados, como também para receber solicitações vindas do sistema de controle de versões. Todas as informações do sistema são mantidas em um banco de dados Odoo, localizado em um servidor postgres. "SaaS CI" interage com o servidor de controle de versões, neste projecto foram usado, o Tuleap e Gitea como os servidores de controle de versão, que já se encontram preparado para gerir os repositórios internos e dos clientes, e o servidor K8s onde é feito os deployments das aplicações.

O módulo Odoo “Saas CI”  melhorou bastante a prestação de serviços aos seus clientes, trouxe maior agilidade na entrega do desenvolvimento dos seus produtos. Vem também com tudo isso evitar possíveis transtornos que seriam encarados pelos gestores, desde o controlo da qualidade do produto e a rapidez na entrega, bem como o acesso aos produtos internos da empresa. 

Ferramentas que podem apoiar o CI/CD


Abaixo algumas ferramentas que podem ajudar na sua jornada de implantação da cultura DevOps, com integração, deploy e implantação contínua:

Ferramentas que podem apoiar o CI/CD

Conclusão


Tendo chegado ao fim, pude concluir que o uso do CI/CD nas empresas é atualmente um processo indispensável, pois estas se tornaram uma forma prática, viável, econômica e muito abrangente de modo a facilitar o trabalho das equipas. No final, cabe à sua empresa decidir se a utilização das práticas DevOps de deploy ou implantação contínua e integração contínua será benéfica.

No final, todos esses “processos contínuos” contribuem para remover a sobrecarga no processo de desenvolvimento, coisas como “mesclar” código, testar recursos novamente após um “merge”, implantação manual dos serviços, etc., normalmente não contribuem para o valor de um serviço, portanto, as práticas de integração, entrega e implantação contínua, visam reduzir esses custos do processo.

Author photo

01 agosto, 2022