CI/CD Integração contínua e entrega contínua

Prática que automatiza os processos de integração, análise e implantação de software, aumentando a produtividade dos desenvolvedores.

Categoria de Management

Postado em 05 julho 2023

Atualizado em 05 julho 2023

Palavras-chave: integração,contínua,implantação,análise,entrega,delivery,integration,deploy,test,management

Visualizações: 781



O uso da programação para desenvolvimento de soluções de software só tem se tornado mais comum. Os softwares estão em todos os lugares, operando dentro de aparelhos eletrônicos que interpretam os dados em formato binário. Computadores, televisões e smartphones são bons exemplos de aparelhos eletrônicos que possuem softwares instalados dentro deles.

A grande maioria dos aparelhos eletrônicos possuem um software chamado sistema operacional (OS). O sistema operacional é um software básico para usuários ordinários terem a capacidade de interagir com o aparelho através de uma interface do usuário. Além do sistema operacional, existem milhares de softwares que auxiliam os usuários de alguma forma.

É importante destacar que todo software é desenvolvido por programadores. Para um software ser publicado ele precisa passar por uma série de etapas. Alguns exemplos de etapas são:

  • Desenvolvimento
  • Build (compilação)
  • Teste
  • Liberação (release)
  • Implantação (deployment)

As etapas acima não podem ser ignoradas. O ciclo de vida do desenvolvimento de um software se repete toda vez que ele sofre uma nova atualização. Todas essas etapas geram custos e exigem tempo. Felizmente, é possível diminuir os custos e o tempo necessários para as etapas após o desenvolvimento. Essas etapas podem ser automatizadas com o uso de tecnologias de CI/CD.

O que é CI/CD?

CI/CD é a sigla para “Continuous Integration and Continuous Delivery”. Em português: “integração contínua e entrega contínua”. Em resumo, CI/CD é o uso de tecnologias para automatizar o processo de atualização de softwares. Apenas na etapa de desenvolvimento, a modificação do código fonte é realizado de forma manual. Após essa modificação ser enviada (git push) ao repositório remoto, as etapas posteriores irão ser realizadas automaticamente.

ci/cd integração contínua entrega contínua

As etapas posteriores são customizáveis e podem ser elaboradas de acordo com as necessidades do software. No exemplo da imagem acima, após o programador enviar uma modificação ao repositório remoto, essa modificação irá passar por múltiplos processos até chegar no último estágio (prod). Geralmente, softwares que usam CI/CD são publicados automaticamente após o desenvolvedor enviar a modificação ao repositório.

As ações a serem tomadas caso aconteça algum problema nas etapas automatizadas também são customizáveis. Quando há erros no código, eles serão detectados e deverão ser reparados (manualmente) para que o software possa ser divulgado. Mesmo automatizando processos como o processo de teste, softwares ainda podem necessitar de teste manual. Tanto o teste automatizado quanto o teste manual podem ser realizados em sequência para atender as demandas do software.

Toda vez que uma nova modificação ser enviada ao repositório, ela deverá passar pelas mesmas etapas. Ao automatizar os processos repetitivos, o desenvolvedor não precisa se preocupar em ficar compilando, testando e atualizando o ambiente de modo manual.

Um ponto forte do CI/CD é a centralização dos processos. Após a etapa de “build” o artefato ou programa executável é testado e pode ser arquivado em um servidor, como a nuvem, se tornando acessível para outros membros do projeto de modo remoto. Essa centralização facilita o gerenciamento do projeto, principalmente se os membros estão desenvolvendo os componentes de um mesmo software de modo isolado. Projetos volumosos com um grande número de membros pode ter o desempenho melhorado usando serviços de CI/CD.

Como usar o CI/CD?

Uma grande porção dos serviços de integração e entrega contínua podem ser adquiridos gratuitamente. Após a instalação de um serviço CI/CD, ele deve ser configurado na máquina local (localhost), em um servidor remoto ou em um ambiente virtual. Após a configuração do serviço na máquina, ele pode ser executado e acessado geralmente através do navegador.

Um bom exemplo de serviço CI/CD de código aberto é o Jenkins. Além de ser integrável com outros serviços, Jenkins pode ser facilmente configurado em uma máquina. Jenkins possui uma interface amigável ao usuário e quase não necessita de linhas de código para realizar a automação das tarefas.

Outros serviços como GitLab também oferecem serviços de CI/CD. A grande vantagem desse tipo de serviço (nuvem) é que ele pode ser utilizado de modo totalmente remoto, não exigindo a instalação de softwares na máquina. A desvantagem é que ele não é gratuito dependendo do número de desenvolvedores.

O que é integração contínua (CI)?

Integração contínua é uma prática que junta diferentes pedaços de código em um único repositório de modo eficiente. Quando múltiplos desenvolvedores trabalham em um mesmo projeto, várias modificações (pedaços de código) são enviados (push) constantemente em um repositório remoto. Problemas como colisão, duplicação acidental e surgimento de bugs podem ocorrer facilmente. Nesse caso, antes de continuar enviando novas modificações ao repositório, os desenvolvedores devem resolver o problema primeiro. No pior das hipóteses, problemas podem ser descobertos posteriormente, aumentando o estrago. A resolução desses problemas exige tempo, afetando a produtividade e atrapalhando o desenvolvimento.

ci integração contínua

A integração contínua ajuda a evitar esse tipo de problema e mais um pouco. Ela testa, compila, armazena os artefatos em um servidor remoto, analisa e monitora o código. O que pode ser feito na integração contínua depende de como ela foi programada e os serviços utilizados. Existe uma grande quantidade de serviços que auxiliam na integração contínua de softwares, melhorando o desenvolvimento e aumentando a produtividade dos programadores.

O que é entrega contínua (CD)?

A entrega contínua permite que o software seja entregue ao usuário final a qualquer momento. Logo, quando uma modificação é enviada ao repositório e não apresenta problemas, ela poderá ser disponibilizada imediatamente. A disponibilização se refere tanto ao ambiente de desenvolvimento como ao de produção.

cd entrega contínua implantação contínua

A entrega contínua (Continuous Delivery) é diferente da implantação contínua (Continuous Deploy). Na entrega contínua o processo de implantar o software no ambiente de produção será feita de modo manual. Na implantação contínua a implantação do ambiente de produção será automático.

Enfim, a entrega contínua automatiza processos de atualização de ambientes. Após um software ser modificado, a sua nova versão será implantada em todos os ambientes ou quase todos.

Conclusão

CI/CD é uma prática de automatização de processos após a modificação do código de um software. Softwares devem seguir uma cadeia de etapas até serem implantados em um ambiente de produção. CI/CD automatiza todo ou parcialmente esses processos, diminuindo o tempo de integração manual e aumentando a produtividade no desenvolvimento do código.

Projetos práticos

Integrando Laravel com o protocolo MQTT para comunicação entre dispositivos

Projeto de comunicação entre dois dispositivos ESP8266 e Raspberrypi4. Laravel irá funcionar como servidor e receptor de dados de temperatura e umidade coletados com o DHT11.

Implementando um algoritmo de pathfinding

Implementando um programa que encontra a menor distância entre dois pontos dentro de um labirinto usando o algoritmo A* (a-estrela).

Caixa eletrônico usando arquitetura limpa

Usando JavaFX e arquitetura limpa para criar um aplicativo de caixa eletrônico extremamente simples.

Criando artes de texto usando imagens

Convertendo imagens para ascii art usando o valor da intensidade das cores cinzentas.

Tutorial de programação do jogo da serpente em javascript

Programando o clássico jogo da serpente usando o framework p5.js. Tutorial indicado para iniciantes da programação que querem aprender os conceitos básico da área criando jogos.

Veja também

O DNS torna a interface do navegador mais amigável aos usuários

Antes de podermos visualizar o site, o endereço que digitamos na barra de endereço do nosso navegador passa por várias etapas, para só então podermos visualizar o site pela primeira vez...

Os três pilares de segurança da informação são o requerimento mínimo para um serviço seguro

A quantidade de programadores só tende a aumentar com o tempo. Porém, muitos programadores ainda não conhecem os três pilares de segurança da informação.

Compliance

Compliance tem muitas vantagens se bem compreendida pelos funcionários, seu objetivo é combater irregularidades dentro da empresa.

HR Tech

HR Tech é um software que auxilia na gestão de pessoas, tornando-se possível o gerenciamento centralizado na área de recursos humanos.

Risco reputacional

O risco reputacional é o risco que qualquer empresa pode sofrer por motivos como atos imorais, decadência de produto ou reputação inadequada

Design thinking

Design thinking é um método bastante flexível que procura atender os desejos humanos com o intuito de inovar ou solucionar problemas.