O que é um pipeline de DevOps? Um guia completo
23 de maio de 2022 // 12 min read
Um pipeline de DevOps combina processos, ferramentas e a automação para permitir que organizações e equipes de software criem, testem e entreguem softwares de alta qualidade com rapidez aos usuários finais.
O DevOps redefiniu a forma como as organizações criam e implementam softwares por meio de uma combinação de pessoas, processos e produtos que afeta casa fase do SDLC (ciclo de vida de desenvolvimento de software). Seu objetivo principal: agregar valor por meio de melhores soluções de software de alta qualidade com mais rapidez para os usuários finais.
Para muitas organizações, alcançá-lo envolve a aplicação da automação em fases importantes do SLDC para melhorar a qualidade de softwares por meio de testes e agilizar a entrega. Quando combinada com as ferramentas e os processos corretos, essa automação é comumente conhecida como um pipeline de DevOps.
Neste guia, veremos o papel que um pipeline de DevOps desempenha na implementação de uma prática de DevOps de sucesso e responderemos as seguintes perguntas:
- O que é um pipeline de DevOps?
- Quais são os benefícios de um pipeline de DevOps?
- Quais são as fases de um pipeline de DevOps?
- Como criar um pipeline de DevOps?
O que é um pipeline de DevOps?
Um pipeline de DevOps é uma combinação da automação com ferramentas e práticas em todo o SDLC para facilitar o desenvolvimento e a implantação de software nas mãos dos usuários finais. É importante saber que não há uma abordagem de tamanho único para criar um pipeline de DevOps e que seu planejamento e implementação costumam variar de organização para organização. A maioria dos pipelines de DevOps, no entanto, envolve automação, CI/CD (integração contínua e implantação contínua), testes automatizados, relatórios e monitoramento.
Alguns conceitos importantes para qualquer pipeline de DevOps são que ele é repetível, contínuo e está sempre em funcionamento. Nada em um pipeline de DevOps deve ser um evento isolado, mas deve abranger um sistema mais amplo em que cada fase é definida por sua repetibilidade.
Vale ressaltar que a compilação de um pipeline de DevOps geralmente é um dos elementos mais palpáveis para as organizações que estão buscando adotar o DevOps, que é definido tanto pela sua dimensão cultural que favorece a estreita colaboração quanto pela automação e ferramentas específicas.
Com a tecnologia certa e o investimento em pessoas e processos, qualquer organização pode compilar um pipeline de DevOps em constante operação, mesmo que seja simples, apenas para começar. Mas sem a adoção completa de uma cultura de DevOps que prioriza o trabalho de desenvolvimento incremental e estreita colaboração multifuncional por todo o SDLC (ciclo de vida de desenvolvimento de software), é pouco provável que as organizações aproveitem o valor total de um pipeline de DevOps.
Quais são os benefícios de um pipeline de DevOps?
Na sua forma mais básica, um pipeline de DevOps utiliza processos automatizados e ferramentas para permitir que as organizações criem, testem e entreguem softwares com mais rapidez aos usuários finais. Isso significa que o principal benefício de um pipeline de DevOps é a rapidez na implantação.
Mas os melhores pipelines de DevOps também incluem pacotes de testes automatizados para equilibrar a rapidez na implantação com a garantia de que as organizações estão entregando softwares seguros e de alta qualidade. Isso destaca o principal objetivo de qualquer prática de DevOps: entregar melhores softwares com maior rapidez aos usuários finais.
Na prática, organizações que planejam e implementam um pipeline de DevOps com sucesso geralmente também aproveitam os seguintes benefícios:
Entrega de software mais rápida
Um pipeline de DevOps destina-se a facilitar a entrega mais rápida de valor (normalmente software) para os usuários finais por meio de um conjunto de processos automatizados, por meio do SDLC (ciclo de vida de desenvolvimento de software), ferramentas que permitem que as organizações criem, testem e entreguem softwares rapidamente e práticas que favorecem alterações de código incrementais e em ritmo acelerado. O exemplo mais comum disso vem por meio da CI/CD, que automatiza compilações, testes e entrega de software em um pipeline de DevOps para agilizar a entrega de software.
Software mais confiável e com maior qualidade
Os pipelines de DevOps normalmente aplicam testes automatizados em todo o SDLC, para avaliar tanto a funcionalidade quanto a segurança, principalmente nos casos em que as organizações adotam o DevSecOps, que se baseia no DevOps, priorizando a segurança. Embora o resultado final dependa do nível de testes que uma organização automatiza e aplica em seu pipeline, a vantagem comum que você pode esperar ver depois de criar um pipeline de DevOps são softwares mais confiáveis e com qualidade superior que foram submetidos a um conjunto consistente de testes antes da implantação. **
Redução de risco
Ao priorizar os testes automatizados aplicados consistentemente em todo o SDLC, um pipeline de DevOps permite que as organizações reduzam o risco de problemas e bugs, chegando a um software de produção. A automação também é aplicada frequentemente em tarefas repetitivas, que podem reduzir o risco de erros humanos. Esse benefício é motivado principalmente por práticas como CI/CD, o que impulsiona a automação para agilizar a entrega de softwares e testes automatizados para detectar potenciais problemas assim que foi feito o commit das mudanças de código na base de código.
A automação reduz a necessidade de esforços manuais
Um elemento essencial de qualquer pipeline de DevOps é a automação de tarefas entediantes que podem ser mais bem realizadas por computadores. Isso promove maior eficiência ao reduzir a necessidade de esforços manuais em tarefas demoradas e repetitivas. Também permite que as organizações direcionem os recursos para a criação e entrega de softwares ao liberar um dos ativos mais preciosos que as equipes de software possuem: tempo.
Tempos de revisão mais curtos (e tempos de resolução mais rápidos)
Em um pipeline de DevOps, testes automatizados são aplicados em pontos importantes do SDLC, para avaliar tanto a funcionalidade quanto o perfil de segurança das mudanças de código. Cada organização implementará seu próprio pacote de teste exclusivo, mas o benefício líquido é que um pipeline de DevOps geralmente resulta em tempos de revisão reduzidos para novos códigos. Geralmente, os pipelines de DevOps também levam a tempos de resolução mais rápidos quando problemas no código são identificados por meio de monitoramento e relatórios contínuos.
Fases do pipeline de DevOps
Um jeito comum que as pessoas usam para explicar um pipeline de DevOps é fazendo uma comparação com uma linha de montagem. Cada parte do SDLC é analisada para estabelecer um conjunto consistente de processos automatizados e manuais. O resultado é a eficiência e a consistência aprimoradas em termos do resultado geral.
Mas, diferente de uma linha de montagem, o DevOps não é um processo de ponta a ponta com um início e um fim definidos. Em vez disso, o DevOps é um ciclo de melhorias contínuas em que, mesmo após a entrega do software, as melhorias continuam.
Na prática, isso significa que, mesmo que um novo recurso percorra todas as fases do desenvolvimento, o sistema geral (e até mesmo esse recurso) passa por um ciclo contínuo de iteração.
Para entender isso, é mais fácil dividir as fases de um pipeline de DevOps e a forma como elas trocam feedback entre si.
Planejar
Cada pipeline de DevOps começa na fase de planejamento, em que os novos recursos ou correções são introduzidos e programados. Nessa fase, o principal objetivo é garantir que pessoas que desempenham funções diferentes dentro da prática de DevOps mais ampla colaborem desde o início, e isso significa trabalhar juntas para entender as necessidades dos usuários, planejar uma solução, entender as implicações da mudança e garantir que ela se encaixe perfeitamente no sistema existente.
Codificar
Na fase do código, as organizações começam a escrevê-lo de acordo com o planejado e acompanham o trabalho por meio de um sistema de controle de versão como o Git. Nesse ponto, em um pipeline de DevOps, os desenvolvedores podem usar várias ferramentas em seus ambientes de desenvolvimento para gerar consistência no estilo de código e identificar potenciais falhas de segurança. Isso pode incluir o uso de ferramentas como o IDE (ambiente de desenvolvimento integrado) hospedado em nuvem, geralmente utilizadas para promover consistência em todos os fluxos de trabalho dos desenvolvedores e aumentar a velocidade para a ativação de ambientes de codificação.
Compilar
A fase de compilação é quando um pipeline de DevOps passa a operar a todo vapor e começa assim que um desenvolvedor faz commits de mudanças de código em um repositório compartilhado. Nesse ponto, um desenvolvedor pode enviar um pull request para fazer o merge das mudanças de código na base de código. Isso alertará outro membro da equipe para que revise o código antes de aprovar o merge. Ao mesmo tempo, um pipeline de DevOps típico iniciará um processo automatizado de compilação que faz o merge na base de código e começa uma série de integrações e testes unitários. Se algum desses testes ou a compilação em si falhar, o pull request também falhará e o desenvolvedor receberá uma notificação a respeito do problema.
Esse nível de automação de fluxos de trabalho em um pipeline de DevOps ajuda as organizações a mitigarem quaisquer problemas de integração de compilação e identificarem bugs ou problemas de segurança com mais antecedência no SDLC.
Testar
Depois que uma compilação é aprovada, dá-se início à fase de testes em um pipeline de DevOps e a compilação será implementada em um ambiente de teste que se assemelha bastante ao ambiente de produção. Algumas organizações podem escolher adotar IaC (infraestrutura como código) em seus pipelines de DevOps para automatizar o provisionamento de um ambiente de teste para o preparo. Outras podem ter ambientes de teste dedicados e predefinidos prontos para novas compilações: a escolha depende muito das necessidades e recursos de computação de uma organização.
Uma vez que a compilação é implantada no ambiente de teste, ela será submetida a vários testes automatizados e manuais. Isso pode incluir testes automatizados de segurança, como DAST (teste dinâmico de segurança de aplicação) e IAST (teste interativo de segurança de aplicação) para identificar vulnerabilidades e áreas de risco. Também pode incluir um UAT (teste de aceitação do usuário), em que os membros da equipe usarão a aplicação e observarão potenciais problemas ou bugs que um cliente pode encontrar.
Cada organização terá seu próprio pacote de teste automático e manual e estratégias únicas durante a fase de testes em seu pipeline de DevOps. Essa fase, especialmente, abre espaço para as organizações aplicarem seus testes sem interromper o fluxo de trabalho do desenvolvedor.
Lançamento
A fase de lançamento marca o momento em que a compilação de um pipeline de DevOps foi totalmente testada e está pronta para a implantação. Além de testes realizados no código em si, o desempenho operacional também é apurado, fazendo com que as organizações se sintam confiantes por sua execução bem-sucedida na produção, sem ser afetada por bugs ou problemas desconhecidos.
Nessa fase, algumas organizações decidirão implantar o código automaticamente quando chega nesse ponto em uma prática comumente chamada de implantação contínua. É assim que algumas equipes de software implantam várias mudanças de código por dia. Outros, por sua vez, podem decidir lançar uma nova compilação para produção e incluir uma fase de aprovação final. Outros ainda agendarão lançamentos automatizados para certos dias ou certas horas.
Plataformas de CI/CD e outras ferramentas de DevOps permitem que as organizações criem uma cadência de lançamento que funcione melhor para eles e apliquem a automação na fase de lançamento em seu pipeline de DevOps.
Implantar
Uma vez lançada, a compilação deve estar pronta para ser implantada na produção. Nessa fase de um pipeline de DevOps, as organizações aproveitam diversas ferramentas para automatizar o processo de desenvolvimento ao provisionar novos ambientes de produção por IaC ou orquestrar uma implantação azul-verde (é aqui que as novas mudanças de código são distribuídas aos poucos para uma porcentagem de usuários em um novo ambiente, enquanto a antiga base de código permanece operacional para outros usuários em um ambiente separado). Uma estratégia de implantação azul-verde também permite que as organizações migrem rapidamente usuários de volta para uma antiga compilação caso algo dê errado.
Operação
Um pipeline de DevOps não termina assim que uma aplicação é implementada: é aí que se inicia a fase operacional e as organizações precisam garantir que tudo está funcionando perfeitamente.
Essa fase inclui a orquestração de infraestrutura e definições de configuração que vão impor regras para dimensionar recursos automaticamente para atender à demanda em tempo real. Também pode incluir mecanismos que registram as atividades de usuários dentro da aplicação, como registros comportamentais em log e formulários de feedback de clientes.
O objetivo da fase de operações está no próprio nome dessa fase: operar a aplicação e a infraestrutura subjacente com êxito e buscar maneiras de melhorar o perfil operacional do software.
Monitoramento
Com base na fase operacional de um pipeline de DevOps, as organizações definem ferramentas de monitoramento automatizadas para identificar potenciais gargalos de desempenho, problemas em aplicações e comportamento do usuário. Essa fase exige ferramentas de implementação para coletar dados de desempenho de aplicação e infraestrutura e depois retornar os itens acionáveis para as equipes de produtos, para que ela resolva os problemas pendentes ou desenvolva novos recursos para dar suporte a comportamentos do usuário existentes na aplicação.
Embora essa seja a “última” fase de um pipeline de DevOps, é importante entender que o processo em si é contínuo, isto é, as ferramentas de monitoramento ajudam as organizações a identificar áreas de planejamento e interações adicionais para fornecer feedback pelo pipeline de DevOps.
Como criar um pipeline de DevOps? Entendendo as práticas fundamentais
Não há um pipeline de DevOps exatamente igual a outro. Isso ocorre porque cada um reflete as necessidades específicas da organização que ele atende. No entanto, há elementos entre as ferramentas e o processo que costumam aparecer em típicos pipelines de DevOps.
Esses elementos essenciais são uma combinação de processos, cultura e ferramentas que incluem as seguintes áreas de práticas fundamentais:
Integração contínua (CI): Quando muitas pessoas trabalham com a mesma base de código, a diferença entre os branches de código de cada pessoa cresce à medida em que elas continuam a trabalhar. Quanto maior a mudança, mais difícil fazer o merge de volta na base de código principal. A CI incentiva cada pessoa a fazer o merge de seus trabalhos de volta no branch principal com frequência. Desse modo, os conflitos são fáceis de identificar e o trabalho de cada pessoa tem menos chances de divergir daquilo que os colegas estão fazendo.
Implantação contínua: A implantação contínua se baseia na integração contínua enviando automaticamente as novas mudanças no pipeline para vários ambientes (compartilhados de desenvolvimento, de testes, de UAT, e até mesmo de produção) de forma automatizada usando um conjunto comum de ferramentas. Considerado como um dos exemplos mais avançados de automações em uma prática de DevOps, a implantação contínua simplifica a transição de qualquer commit de código para a produção assim que passam em todos os testes pré-definidos necessários.
Testes contínuos: Quando é feito o commit de um código, a maioria dos pipelines de DevOps dá início a alguma forma de teste automático. Testes de regressão verificam se a mudança não prejudica uma funcionalidade existente. Testes unitários garantem que a mudança de código ofereça os resultados esperados. Testes funcionais podem pedir para uma pessoa intervir e usar a nova versão do código. Se um teste for reprovado, ele interromperá o pipeline e impedirá que seja feito o merge do código.
Monitoramento contínuo: Os dados são a alma do pipeline de DevOps. Ferramentas de monitoramento ajudam em todas as fases, mas são usadas principalmente na produção para fornecer uma visão geral da integridade da aplicação.
Ferramentas de DevOps específicas permitem que as organizações encarem essas áreas práticas, por exemplo, uma plataforma de CI/CD é usada para criar fluxos de trabalho automatizados para dar suporte à integração e à entrega (ou implantação) contínuas.
Mas só as ferramentas em si não criam um pipeline de DevOps de sucesso. Isso exige recursos dedicados para planejar o SDLC (ciclo de vida de desenvolvimento de software) ideal, determinar áreas importantes que podem ser automatizadas para aumentar a rapidez e a qualidade das implantações, um conjunto estratégico de testes automatizados e uma cultura que prioriza a estreita colaboração entre diferentes funções em todo o SDLC.
Saiba como criar um pipeline de CI/CD para criar sua prática de DevOps >
Crie e acelere seu pipeline de DevOps do GitHub
Fique à frente em cada etapa com a automação do código à nuvem. O GitHub é uma plataforma integrada que leva as empresas da ideia ao planejamento e à produção, combinando uma experiência de desenvolvedor focada com uma infraestrutura poderosa e totalmente gerenciada de desenvolvimento, automação e teste.
Agende uma demonstração de CI/CD >
Automação de DevOps fornecida
Invista mais tempo nos códigos importantes e menos em tarefas que atrasam seus desenvolvedores. Com ferramentas como o GitHub Actions e Packages, o GitHub tornam a CI/CD potente e a automação parte de todo o seu pipeline de DevOps.
PLANEJAR
Coordene, gerencie e atualize seu trabalho em um só lugar com issues, discussões e quadros de projetos do GitHub. Em seguida, mantenha o conteúdo organizado e no caminho certo, integrando as ferramentas de planejamento e gerenciamento de projetos que você já utiliza.
Explore ferramentas de gerenciamento de projetos
CODIFICAR
Colabore, crie, armazene código e acelere o desenvolvimento com o GitHub e o Codespaces. Adicione integrações de qualidade de código a fim de automatizar revisões de código para verificações de estilo, qualidade, segurança e cobertura de testes quando precisar delas.
Explore ferramentas de qualidade de código
COMPILAR
Entregue mais rápido com a integração contínua automatizada com as tecnologias do GitHub Actions e do Packages. Acione fluxos de trabalho com base em eventos do GitHub e publique seus pacotes onde quiser, tudo com comandos de ferramentas nativas.
Explore a CI móvel, a CI de contêineres ou todas as ferramentas de CI
TESTAR
Impeça que bugs entrem em produção, adicionando testes aos seus fluxos de trabalho do Actions, incluindo integrações de testes de nossos parceiros e da comunidade.
IMPLANTAR
Automatize a entrega contínua com o Actions ou acione integrações de implantação de provedores comuns de CI/CD e grandes nuvens públicas com o GitHub em qualquer evento.
Explore ferramentas de implantação
GERENCIAR
Conecte seu código às ferramentas de gerenciamento, registro em log, alerta e monitoramento que a sua equipe utiliza em produção. Meça facilmente o impacto, analise o desempenho e monitore o impacto do seu código em seus sistemas e usuários.
Explore ferramentas de análise, alertas, registro em log e monitoramento
PROTEGER Tenha a certeza de seu código permanece seguro em todas as etapas com o CodeQL, o Dependabot e as ferramentas de segurança que você usa atualmente.
Explore ferramentas de segurança e gerenciamento de dependências
Recursos
Melhores práticas para melhores DevOps
Como a automação e a CI/CD funcionam no GitHub | Guia do GitHub para o DevSecOps | As melhores dicas para desenvolvimento mais rápido |
---|---|---|
Comparado com outras ferramentas de automação ou CI/CD, o GitHub Actions oferece recursos nativos diretamente em seu fluxo do GitHub. Obtenha o guia > | Saiba como começar a integrar segurança em seu fluxo de trabalho e pipeline de DevOps para entregar softwares com qualidade superior. Obtenha o guia > | Obtenha as melhores práticas e percepções acionáveis sobre a como criar softwares com maior rapidez, tudo isso com as melhores equipes. Obtenha o guia > |
Junte-se às melhores equipes do mundo
CI/CD com o GitHub Actions permite a compilação, teste e implantação diretamente do GitHub. Reduzimos o tempo de compilação de 80 para 10 minutos.
Arquiteto de engenharia Pinterest
Veja como o Pinterest cria e simplifica fluxos de trabalho >
Tags