CI – Integração Contínua

Quando se trata de DevOps, falamos muito sobre automação, práticas que visam elevar o nível de qualidade e segurança das nossas aplicações, sobre como deixar o ciclo de desenvolvimento das aplicações mais confiáveis e como reduzir desperdícios. Muitas empresas iniciam a construção da famosa esteira de entrega de software sem uma real base conceitual e prática para implementação, o que muitas vezes pode gerar uma certa frustração nesse processo.

Uma das principais práticas para tangibilizarmos a cultura DevOps é o famoso CI — Continuos Integration (Integração Contínua). Podemos dizer que integração contínua é uma metodologia moderna de desenvolvimento de software, pois a mesma permite que o time de desenvolvimento integre continuamente cada pequena alteração em seu repositório, de forma prática e automatizada, permitindo até mesmo executar diversos testes para identificar erros, incompatibilidades e etc.

Image for post

É importante entendermos que a integração contínua não é um processo novo, porem é focado em automatizar algo que por muitos anos foi realizado manualmente e em longas etapas que superavam semanas ou até meses, seja realizado em uma periodicidade menor.

Passos para o sucesso

Para implementarmos um fluxo maduro de integração contínua precisamos nos planejar desde o início da concepção de um software, pensando não só na construção do código de negócio, mas pensando na construção de código que testa a aplicação e mede a performance e cobertura da mesma.

Não existe uma receita única para o sucesso de uma integração contínua, cada empresa tem um parque tecnológico personalizado e podem ter passos personalizados que fazem total sentido para seu contexto. Pensando em uma estrutura base para a maioria dos cenários, podemos pensar na seguinte estrutura:

Image for post

Checkout é um passo fundamental para o sucesso na integração contínua, ele se baseia no uso de um controlador de versão distribuído baseado em GIT, onde o desenvolvedor disponibiliza todo o código fonte da aplicação e inicializa automaticamente a integração contínua.

Os Testes Unitários são aqueles testes que validam a menor unidade do código, quando executamos ele na integração contínua, conseguimos medir qual a cobertura dos testes e se as novas alterações não estão quebrando a aplicação ou diminuindo o nível de qualidade.

Podemos também executar alguns testes de segurança baseado em analise estática de código durante a integração contínua, existe uma série de ferramentas Open Source e pagas que podem auxiliar neste processo.

Executar alguns testes de qualidade focados também em analise estática de código durante a integração contínua, é um grande diferencial no processo de integração contínua, existem ferramentas como o Sonar que alem de capturar código repetido, code smell e definir níveis de qualidade para as aplicações, realizam sugestões para a correção de todos os erros encontrados, facilitando a vida do desenvolvedor.

Um outro importante ponto é o build automatizado, pois esse é o passo que transforma o código fonte em um artefato, tornando o mesmo imutável e possibilitando a rastreabilidade entre diversos ambientes.

Por que a integração contínua reduz custos?

Vamos imaginar que a sua empresa esteja trabalhando no desenvolvimento de uma aplicação de missão crítica.

A complexidade de integrações e funcionalidades exigiu o envolvimento direto de diversos profissionais como UX, Tech Leaders, QA’s e Desenvolvedores.

Agora, pense como seria a organização desse trabalho se todos esses profissionais tivessem a liberdade de integrar seus códigos apenas 1 vez por semana. Consegue imaginar a quantidade de conflitos e/ou bugs de difícil localização, a baixa coesão do trabalho executado, bem como o tamanho do esforço para conseguir entender o que saiu errado e onde estão os erros?

A integração contínua promove a cultura do feedback contínuo, possibilitando a detecção imediata dos erros, possibilitando que as correções se tornem menos custosas, tornando os projetos cada vez mais dinâmicos e dotados de muito mais qualidade.

Conclusão

Como vimos acima, a Integração Contínua traz sim uma série de benefícios e tangibiliza a cultura DevOps, porem para implementarmos um fluxo maduro de Integração Contínua, precisamos planejar desde o início da concepção de um software, pensando não só na construção do código de negócio, mas pensando na construção de código que testa a aplicação e em como medir a qualidade e a segurança da mesma.

Por Willian da Silva, Arquiteto de soluções no Grupo FCamara


Quer saber mais? Veja todos os artigos que escrevemos dessa série sobre DevOps:
https://blog.fcamara.com.br/categorias/devops/

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *