BLOG

O que é uma pipeline para desenvolvimento de softwares: para iniciantes


O que é uma pipeline? Qual problema ela resolve? Qual valor ela trás para seu produto ?

Pipeline

A origem da palavra vem do inglês, que podemos entender como um duto ou tubo daqueles que podem passar oléo, água ou qualquer outro material liquido ou gasoso. O termo também vem sendo muito utilizado em indústria como um conjunto de instrução, ou uma esteira de processos ou comandos que alguém ou algo deve seguir sempre, por exemplo uma pipeline de vendas, onde tem sempre os passos e estratégias a serem seguidas.

No mundo da engenharia da computação, o termo pipelining é utilizado para descrever a estratégia onde o CPU procura a próxima instrução para executar, como se numa esteira de instruções já enviadas que são executadas, um comando após o outro.

Pipeline no mundo do desenvolvimento

Na indústria de software o termo também continua com a mesma ideia. Uma pipeline é desenvolvida ou pensada como uma forma de reduzir trabalhos manuais do dia a dia de um desenvolvedor como:

  • Fez um código novo e precisa testar
  • Fez alguma alteração brusca
  • Testar a instalação de todas ferramentas necessárias
  • Subir todas as suas alterações para validar se tudo está OK

Pode parecer bobeira, mas em um projeto onde vários desenvolvedores estão trabalhando em entregas independentes, esse tipo de processo pode economizar muito tempo. Por exemplo, se você leva 5 minutos para subir todas as alterações que você fez para testar, imagine 10 desenvolvedores também tendo que esperar todo esse tempo, você poderia usar esses 5 minutos para fazer alguma outra coisa enquanto esse conjunto de instruções, ou essa pipeline, faça todos esses passos para você.

Para concluir, uma pipeline nada mais é que um conjunto de instruções, steps, scripts, passos que deverão ser executadas sequencial que representam operações manuais, desde instalação de dependencias, build, start e etc.

Para aprofundar mais a fundo no tema, aconselho a leitura desse capítulo do SRE Boos do Google.

Como pensar numa pipeline ?

A melhor forma de desenvolver uma pipeline seria entrevistar o passo a passo de quem conhece a aplicação no detalhe. Jamais assuma ou presuma todos os passos de uma pipeline ( principalmente se você trabalha como/com DevOps ), sempre entreviste todos que estão envolvidos no projeto, entenda desde versão do sistema operacional no qual eles trabalham e qual o sistema esteja rodando, conheça todos os comandos necessários para criar o set up inicial do ambiente, quais comandos disparam os testes, o build e o que for necessário para aplicação.

Entenda a necessade de notificação das pipelines em caso de sucesso ou erros, qual é o publico alvo que deverá receber esses dados, se há necessidade de salvar todas essas informações em algum sistema secundário para controle e etc.

Tipos de pipeline

Geralmente as pessoas pensam que um projeto tem que/deve ter uma pipeline, porém isso é totalmente relativo. Você pode ter diversos cenários, como:

  • Ter várias pipelines para o mesmo projeto, uma com o ciclo completo, uma apenas com o ciclo de testes, outra apenas para popular dados
  • Ter várias pipelines para o mesmo projeto com disparos diferentes como: manuais, automáticos, por branchs, por determinados perfis

Eu poderia ficar aqui escrevendo diversos cenários onde você usar os benefícios do uso de uma pipeline, por isso vale muito questionar e entender todas as necessidades desse processo de automação, pois o céu é o limite.

Onde eu posso criar minha pipeline ?

Pensando sempre no impacto, custo e tempo de adaptação na implantação de uma pipeline, eu sempre prezo pela comodidade e simplicade. Muitas empresas acabam utilizando prestadores de serviços como Bitbucket, AzureDevOps, GitLab e GitHub e todos eles além de dar o suporte para fazer a gestão de todo seu código, também contém sua própria solução de pipelines e a diferença de um para o outro geralmente é a interface gráfica, pois geralmente a parte de configuração e crianção de scripts são bem parecidas, mudando apenas alguns pequenos detalhes. Não caia na pegadinha de tentar procurar a melhor solução pois ela não existe, cada prestador de serviço tem seus defeitos e qualidades e cabe a você decidir qual atende o cenário da sua empresa em termo de custos, implantação e manutenção. Temos também a opção de utilizar outros serviços focados em pipelinas também como o TravisCI, Circle CI e Jenkins.

GitHub Actions — https://docs.github.com/pt/actions

Azure DevOps Pipelines — https://docs.microsoft.com/pt-br/azure/architecture/example-scenario/apps/devops-dotnet-webapp

GitLab Runners — https://docs.gitlab.com/runner/

Bitbucket Pipelines — https://bitbucket.org/product/br/features/pipelines

CircleCI — https://circleci.com/

Travis — https://travis-ci.org/

Jenkins — https://www.jenkins.io/

Onde uma pipeline pode agregar valor no meu projeto ou empresa ?

Uma pipeline poderá agregar valor na sua empresa ou no seu projeto de diversas formas, tais como:

  • Poderemos eliminar trabalhos repetitivos que fazemos manuais
  • Poderemos deixar toda a automação acontecer em paralelo executando todos os passos e podemos usar esse tempo para novas atividades
  • Podemos simular testes manuais de forma automatizadas usando por exemplo Selenium para prever futuras falhas
  • Podemos criar a cultura de ser mais proativo do que reativo, fazendo com que percebamos erros no software antes mesmo de mandar para produção
  • Podemos melhor organizar o projeto, criand automação para documentar nossas entregas usando CHANGELOGs ou Releases Notes
  • Podemos criar passos para validação de segurança usando ferramentas como TruffleHog, GitLeaks e Trivy

Por fim, no próximo artigo irei aprofundar nos detalhes da construção de uma pipeline, tratei um pouco das minhas experiências e aprendizados vividos, até a proxima! 😀


Tem interesse em aprender mais sobre? Entre em contato conosco ❤️!

Toolbox Devops Consultoria

Toolbox Devops Consultoria

Simplicando seu dia-a-dia na cloud

Esta gostando do conteúdo ? Compartilhe!