Entendendo os benefícios do CI/CD

Natália Regina Lima Silva
4 min readJun 5, 2019

--

Todo mundo que já trabalhou em equipe no desenvolvimento de um software, sabe como pode se tornar difícil o controle sobre as fases do projeto. Seja problemas para gerenciar as versões do código, para identificar qual alteração entregue quebrou o teste, ou até mesmo ter certeza de qual código está no servidor. Com o objetivo de resolver esses problemas, a utilização dos métodos de CI e CD tem sido cada vez mais implementados nas áreas da TI.

Afinal, o que é CI e CD?

Segundo a RedHat, “CI sempre se refere à integração contínua, que é um processo de automação para desenvolvedores. A CI é bem-sucedida quando novas mudanças no código de uma aplicação são desenvolvidas, testadas e consolidadas regularmente em um repositório compartilhado. É a solução ideal para evitar conflitos entre ramificações quando muitas aplicações são desenvolvidas ao mesmo tempo.”

Sendo assim, CI(Continuos Integration) ou integração contínua(em português), nada mais é que:

Um fluxo definido, com utilização de várias ferramentas, pelo qual seu código irá passar e ser testado continuamente a cada nova entrega de software.

Um exemplo simples que podemos imaginar de CI é:

  • Um código sendo versionado no GitHub, que a cada novo push dispara uma execução no Jenkins;
  • No Jenkins é executado os testes unitários, com o JUnit(ferramenta de execução de testes para Java, por exemplo);
  • Em seguida é verificado a análise estática de código com o SonarQube(ferramenta de qualidade de código);
  • E por fim, disponibilizar o software para demais etapas(CD).

“A integração contínua coloca uma grande ênfase na automação de testes para verificar se a aplicação não está quebrada sempre que novos commits são integrados ao branch principal.” (Atlassian)

Já CD, segundo a 4Linux, “é um conjunto de práticas com o objetivo de garantir que um novo código esteja apto para ser disponibilizado em ambiente de produção.” Entretanto, a publicação no ambiente de produção depende de uma aprovação prévia da área de negócio.

Sendo assim, CD(Continuos Delivery) ou entrega contínua, nada mais é que:

A continuação do fluxo de CI, acrescido de mais etapas que visa ter os códigos prontos para serem levados a produção dependendo apenas de algum processo de testes/autorização para ser implantado.

Um exemplo de fluxo de CI/CD, seria:

  • Um código sendo versionado no GitHub, que a cada novo push dispara uma execução no Jenkins;
  • No Jenkins é executado os testes unitários, com o JUnit(ferramenta de execução de testes para Java, por exemplo);
  • Em seguida é verificado a análise estática de código com o SonarQube(ferramenta de qualidade de código);
  • Por fim, é realizado a análise de vulnerabilidades de segurança com o Fortify, por exemplo;
  • Assim, a aplicação fica em standby até os testes serem concluídos e sua implantação ser liberada para o ambiente de produção.

“A entrega contínua automatiza o processo de lançamento de software completo. Cada revisão confirmada aciona um fluxo automático que cria, testa e prepara a atualização.” (Amazon)

Além dos famosos CI e CD, existe um outro CD chamado de Continuos Deployment, que também pode ser implementado em conjunto com os demais métodos.

A implantação contínua é um passo além da entrega contínua. Toda alteração que passe pelo fluxo inteiro de testes e validações de produção será implantada diretamente para seus usuários.

“Não há intervenção humana, e apenas um teste com falha impedirá uma nova alteração de ser implementada na produção.”(Atlassian)

Um exemplo completo e simples da utilização dos métodos, seria:

  • Um código sendo versionado no GitHub, que a cada novo push dispara uma execução no Jenkins;
  • No Jenkins é executado os testes unitários, com o JUnit(ferramenta de execução de testes para Java, por exemplo);
  • Em seguida é verificado a análise estática de código com o SonarQube(ferramenta de qualidade de código);
  • Por fim, é realizado a análise de vulnerabilidades de segurança com o Fortify, por exemplo;
  • E após a aplicação passar pelo teste automatizado de aceitação, é feito a implantação da aplicação sem intervenção humana.

Diante dessas informações, é possível entender um pouquinho do que essas práticas são capazes de fazer quando são incorporadas em equipes que estejam dispostas a melhorar seu modo de trabalho, assim como, sua qualidade de entrega.

--

--

Natália Regina Lima Silva

Apaixonada por tecnologia e em trabalhar com DevSecOps. Me sinto feliz e satisfeita em compartilhar o que sei, conhecimento só é bom se for compartilhado.