Neste artigo você vai aprender mais sobre pipelines com o dataholic João Victor.
Se você já ouviu o termo “pipeline” e ficou confuso sobre do que se tratava, esse artigo tem a intenção de clarear um pouco a sua mente a respeito desse assunto. Vale salientar que o objetivo não é um detalhamento técnico preciso, mas uma explicação simples e clara do tema. Boa leitura!
O termo “pipeline”
Em uma tradução literal, “pipeline” significa “oleoduto” ou “tubo”, também pode ser traduzida como “canalizar”. De modo geral, esse termo define o processo em que algo é transportado de um local para outro, como no caso das tubulações.
Já em outros cenários, pipeline pode assumir significados diferentes, no entanto vamos nos ater a apenas um deles, que são as pipelines da área de devops, as conhecidas pipelines de CI/CD.
O que significa CI e CD?
CI (Continuous Integration) e CD (Continuous Deployment ou Continuous Delivery) são práticas do desenvolvimento de software que visam automatizar a integração e entrega de novas features em um projeto. De forma mais direta, vamos usar o exemplo de um repositório versionado com Git. Caso ainda não tenha conhecimento sobre Git, recomendo a leitura de um de nossos artigos sobre o tema, você pode acessá-lo clicando aqui. Continuando o exemplo, digamos que, ao desenvolver uma nova funcionalidade em seu site, você faz os commits e mescla suas alterações na branch principal. Em seguida, essa nova versão do projeto é enviada para ser consumida em produção pelos clientes. A imagem abaixo apresenta de forma simplificada esse fluxo:
Para garantir que tanto o merge da pull request (integração) quanto o deploy da aplicação sejam feitos de forma segura, é necessária uma validação nas mudanças feitas no código. E é aqui que a pipeline surge para automatizar esse processo.
Automatizando processos com a pipeline
A pipeline tem o papel de verificar se o código não possui problemas que prejudiquem a versão em produção, e caso tudo esteja conforme o esperado, prosseguir com a entrega do produto. Essas checagens são realizadas em etapas, que são comumente chamadas de jobs ou steps. Dentre essas etapas podemos encontrar:
Estágios de integração:
Compilação: verifica se não há erros de build;
Testes: etapa onde os testes do projeto são executados, evitando que algum código não testado vá para o ambiente de produção;
Lint: garante que os padrões de lint do código estão sendo seguidos;
Estágios de deploy:
Compactação: Criação de um arquivo compactado contendo os arquivos do projeto;
Upload / Deploy: Onde o build da aplicação (compactado ou não) é enviado para o servidor de hospedagem, onde será acessado pelos usuários.
Vale destacar que cada etapa depende do sucesso da anterior. Por exemplo, caso algum erro seja encontrado no estágio de testes, a pipeline irá “quebrar”, ou seja, interromper o processo sem que as etapas seguintes sejam iniciadas. Dessa forma estamos seguros de que nosso deploy não terá nenhuma falha e pouparemos tempo e esforços no futuro.
Conclusão
De acordo com o que foi visto, o uso de pipelines possui inúmeros benefícios durante o decorrer de um projeto, alguns deles são:
Mais segurança contra possíveis erros no ambiente de produção;
Detecção de bugs de forma automática, contribuindo para uma correção mais rápida do problema, sem que este afete a experiência dos usuários;
Economia de tempo e esforço, já que a pipeline se encarrega do trabalho de compilação, compactação (quando necessário) e deploy;
O time de desenvolvimento mantém o foco no progresso do projeto e na criação de novas funcionalidades, gastando menos tempo testando o código.