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: 620



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

Desenvolvendo o campo de visão de um personagem em um plano 2D

Detectando objetos que entram dentro do campo de visão do personagem. Útil para servir de "gatilho" para eventos em um jogo.

Criando um jogo de guerra nas estrelas em javascript usando a biblioteca p5.js

Jogo simples de guerra espacial desenvolvido em javascript. Esse jogo usa cálculos de física para simular efeitos de atrito e inércia.

Caixa eletrônico usando arquitetura limpa

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

Criando um jogo de pacman usando javascript e pixi.js (parte 1)

Desenvolvimento dos conceitos mais básicos do clássico pacman, como: mapa, animação, deslocamento e detector de colisões.

Desenvolvendo um jogo de quebra blocos em javascript

Programando um jogo clássico de arcade usando javascript e p5.js. O usuário deve quebrar os blocos utilizando uma bola ao mesmo tempo que evita que a bola saia pela parte inferior da tela

Veja também

Os bancos estão sendo substituídos pelos robôs em transações online

As criptomoedas mudaram totalmente o modo das pessoas pensarem. Usar robôs para autentificar transações online, custa muito menos comparado com os bancos em relação às taxas...

Nunca se sabe quando tem alguém nos espionando no nosso computador

Um computador conectado à internet está exposto a diversos perigos. O spyware é um deles e é esse malware responsável por roubar contas de redes sociais.

Ponto de equilíbrio

Ponto onde os custos e o lucro se igualam. Uma vez que esse ponto de equilíbrio é ultrapassado, passa-se a obter lucro, pois os custos já estão cobertos.

CRM Customer Relationship Management

O sistema de gestão de relacionamento com o cliente oferece ferramentas que melhoram a busca de informação, tomada de decisões e acompanhamento do cliente.

Design thinking

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

Compliance

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