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



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

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.

Criando o esqueleto de um jogo de tiro 2D visto de cima usando P5.js

Usando lógicas matemáticas como trigonometria para criar e calcular o esqueleto de um jogo de tiro 2D em javascript

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.

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.

Veja também

A digitalização é o jeito moderno de gerenciamento de documentos

Digitalizar documentos facilita o gerenciamento, aumenta a disponibilidade e economiza tempo, consequentemente trazendo muitos outros benefícios.

O usuário malicioso joga a isca e espera a vítima pacientemente

Phishing tem esse nome pois a vítima se torna só mais um peixe na rede. Ter conhecimento de phishing é o melhor jeito de evitar ser um desses peixes

Demonstração financeira

Conjunto de relatórios com o objetivo de fornecer informações úteis para o governo, sócios, acionistas, investidores e outros usuários.

PPM Product Portfolio Management

Em português, gestão de portofólio de produto. É uma estratégia de análise utilizada para a distribuição de recursos para um produto ou serviço.

Prova de conceito

O modelo PoC visa em avaliar uma nova tecnologia ainda não comprovada com uma demonstração, com o intuito de avaliar a sua veracidade.

Design thinking

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