CI, CD’s, Cdflow e fluxo

Karl Marx Alexander
investigacoesholisticas
3 min readFeb 17, 2019

Tem se tornado padrão (talvez já o seja) o desenvolvimento de software pautado em metodologias ágeis. Palavras como sprint, scrum, integração e entrega continua são recorrentes em conversas entre engenheiros, projetistas e gerentes.

O conceito de integração continua (CI) consiste na possibilidade de inserir facilmente toda nova funcionalidade programada em um ambiente igual ao de produção, com todas as possibilidades de testes e acesso inerentes a elas.

Dando sequência ao desenvolvimento deste fluxo de trabalho, o próximo passo é permitir que os clientes tenham acesso rápido a novas funcionalidades, em contraste com paradigmas antigos de entrega única no final do projeto, este tipo de integração é chamado de entrega continua (CD).

Benefícios da implantação do continua[1]

Neste momento a aprovação da migração de uma nova funcionalidade em desenvolvimento para o ambiente de produção depende da aprovação manual, o próximo passo para um fluxo de trabalho que pode ser definido como implantação continua (CD), todo código que passa pelos passos de testes em um fluxo de entrega continua pode ser considerado pronto para a produção, e sua inserção é feita de forma automática neste ambiente.

Diminuir o tempo de entrega para novas funcionalidades, permitir várias iterações e validar o sistema em ciclos menores traz diversos benefícios. No entanto plataformas de infraestrutura que permitem a implantação da integração continua (e portanto os fluxos posteriores) são ainda bastante crípticos para novos usuários, o que algumas vezes torna o processo de criação do “pipeline” um processo lento, pensando nisso resolvi criar o Cdflow.

Marty, é a hora

É o que torna a integração possível

O projeto foi criado para responder a algumas necessidades que encontrei durante o desenvolvimento de certos software, com o intuito de automatizar a criação da infraestrutura para projetos no GCloud. Utilizando como entrada um arquivo JSON, é scriptado a criação de um novo repositório, os triggers para o build, novos keyrings e chaves para encriptação, e finalmente uma nova máquina para que o projeto seja executado a cada novo disparo do trigger.

Na página do pacote no npm, é possível encontrar a documentação do projeto, junto com instruções de instalação. Se você usa o GCloud para gerenciar a infraestrutura do seu projeto, já é possível criar todo o ambiente desde que se conheça as regiões/zonas e os tipos de máquinas disponíveis.

Atualidade e futuro

Atualmente existem ferramentas que permitem a criação de infraestrutura a partir de scripts de software (IAC, caso siglas signifiquem alguma coisa), como o Terraform, o AWS Cloud Formation e Heat, que possuem diversas funcionalidades, sendo o Terraform aquele que mais se aproxima do conceito pensado para o Cdflow. No entanto estes serviços adotam certas complexidades devido a sua grande generalidade. Pensando nisso, e buscando manter um nível de abstração maior, a linguagem descritiva de infraestrutura para o Cdflow é definida como um conjunto finito e pequeno de entradas interpretadas de acordo com a definição de maquina e API (GCloud no momento, AWS, DigitalOcean, entre outras no futuro).

Este nível de abstração garante que certas definições especificas possam ser manipulados pelo script, retirando do usuário a necessidade de conhecimentos profundos em infraestrutura, ao mesmo tempo em que garante conformidade entre as diversas execuções, embora exista a pretensão de que aos poucos sejam adicionados possibilidades de novas estruturas para usuários avançados.

Atualmente o projeto esta em versão alpha 0.1.2 e sendo atualizado aos poucos, você pode contribuir com ele na página do do GitHub.

Referências:

[1] CHEN, Lianping. Continuous delivery: Huge benefits, but challenges too. IEEE Software, v. 32, n. 2, p. 50–54, 2015.

[2] STÅHL, Daniel; BOSCH, Jan. Modeling continuous integration practice differences in industry software development. Journal of Systems and Software, v. 87, p. 48–59, 2014.

--

--

Karl Marx Alexander
investigacoesholisticas

The less smarter and Brazilian Feynman, Software engineer at Gaivota