In this article
Principais componentes do pipeline de DevOps
A cultura atual de desenvolvimento de software é focada em desenvolver, testar e implantar aplicações rapidamente. As ferramentas avançadas de automação têm um papel fundamental nesse processo. O DevOps incorpora esses elementos metodológicos e técnicos e os aplica a projetos de software do mundo real.
Esta publicação aborda os conceitos de DevOps, os principais componentes do pipeline de DevOps e oferece orientações práticas para integrar a metodologia DevOps ao ciclo de vida do desenvolvimento de software (SDLC).
O que é um pipeline de DevOps?
Um pipeline de DevOps ajuda as equipes a criar, testar e implantar software com rapidez e eficiência, combinando ferramentas e práticas. Ele também facilita a manutenção e as atualizações de software. Além disso, simplifica a integração contínua de alterações de código em um repositório upstream, oferece testes e compilações automatizados e permite resolver conflitos de código e detectar bugs e vulnerabilidades com eficiência. Assim, as práticas de DevOps reduzem o tempo de lançamento no mercado (TTM) e viabilizam processos ágeis de desenvolvimento de software.
Integração contínua (CI)
A integração contínua (CI) consiste em mesclar regularmente o código dos desenvolvedores em um repositório compartilhado e aplicar a esse código testes unitários automáticos, compilações e ferramentas de verificação de código. Os principais objetivos da CI são viabilizar um processo eficiente de verificação de código e evitar conflitos na data de lançamento.
Para isso, o código enviado ao repositório compartilhado é compilado automaticamente em um artefato e testado. Nesse processo, chamado de build, se ocorrer alguma falha, os desenvolvedores são avisados sobre os testes e asserções que falharam e causaram o problema, para que possam corrigir o código. O pipeline de CI costuma ser combinado com práticas padrão de revisão de código, como pull requests.
A CI evita problemas de “inferno da integração” e do “dia do merge”, que surgem quando é preciso conciliar diferentes branches da base de código.
Entrega contínua (CD)
A entrega contínua (CD) consiste em empacotar o código em unidades que podem ser implantadas em produção. CD não deve ser confundida com “implantação contínua”, que é a implantação automática de alterações de código em produção.
O ambiente de CD conta com um sandbox semelhante ao de produção, onde atualizações incrementais de código são testadas e lançadas. Após a revisão e os testes do código, os desenvolvedores podem enviar as alterações para produção. O lançamento de pequenas atualizações de código no ambiente de produção facilita a solução de problemas e ajuda a evitar gargalos de software e conflitos de merge. Como os testes são feitos previamente no sandbox, as aplicações implantadas em produção por meio de CD costumam ser mais estáveis e ter menos bugs.
Implantação contínua (CD)
A implantação contínua (CD) é o lançamento automatizado de atualizações de código para os usuários, sem verificações ou acionamentos manuais. Assim como na CD, o código passa por builds e testes automatizados, mas as alterações são enviadas imediatamente para produção. Por isso, a CD permite lançar produtos com mais rapidez. No entanto, há limitações. Por exemplo, a CD pode enviar para produção bugs e vulnerabilidades que passaram despercebidos pelas verificações automatizadas. Portanto, deve ser aplicada com cuidado e apenas a pequenas alterações de código. Além disso, deve ser combinada com políticas eficientes de atualização gradual (por exemplo, implantações blue/green e lançamentos canário).
Como criar um pipeline de DevOps
Um pipeline de DevOps eficiente deve incluir os seguintes componentes básicos:
Gerenciamento do controle de código-fonte
Ferramentas de automação de build
Também é possível incluir no pipeline ferramentas de segurança de contêineres e de IaC. Há muitas ferramentas de DevOps de código aberto que ajudam a criar um pipeline de DevOps eficiente.
Framework de CI/CD
Frameworks de CI/CD, como Jenkins ou Travis CI, ajudam a implementar o componente de CI/CD do pipeline de DevOps. Em geral, esses frameworks incluem um servidor capaz de realizar builds, testes e implantações de software automaticamente, com base nos commits de código recebidos. Por isso, sua ferramenta de CI/CD deve estar conectada ao repositório de código-fonte.
Gerenciamento do controle de código-fonte
As ferramentas de gerenciamento do controle de código-fonte (ou controle de versão) permitem acompanhar e gerenciar as alterações no código. Elas mantêm um histórico contínuo do desenvolvimento, incluindo commits individuais dos desenvolvedores e pull requests. Também ajudam a enviar alterações de código para repositórios remotos e a resolver conflitos entre contribuições diferentes. Entre as ferramentas de gerenciamento do controle de código-fonte, o Git tem o ecossistema mais desenvolvido e é a opção mais popular.
Ferramentas de automação de build
As ferramentas de automação de build ajudam a empacotar o código de uma aplicação em um objeto implantável. A funcionalidade dessas ferramentas varia de acordo com o tipo de linguagem de programação utilizada: compilada ou interpretada.
As ferramentas para linguagens compiladas, como C++ ou Java, não apenas compilam o código, mas também criam um ambiente de build nativo para compilar o código-fonte, criar bibliotecas, gerar wrappers e compilar executáveis em várias combinações. Ferramentas de build para linguagens interpretadas, como Grunt, Webpack, Rollup e Babel para JavaScript, podem ser usadas para concatenar arquivos JavaScript, além de ofuscá-los e minimizá-los.
Framework de testes de código
Os frameworks de testes de código ajudam os desenvolvedores a detectar erros nas aplicações durante o desenvolvimento. Em geral, essas ferramentas incluem funcionalidades de testes unitários que podem ser integradas ao código da aplicação e executadas em tempo de execução. Além disso, os frameworks de testes de código podem ser conectados às ferramentas de CI/CD existentes para automatizar o processo. Há vários frameworks de teste disponíveis para diferentes linguagens de programação (por exemplo, Pytest para Python e JUnit para Java).
Também é possível integrar verificações de qualidade de código e de vulnerabilidades ao processo de build, adicionando um teste automatizado do Snyk Code ao seu CI/CD.
Exemplo de pipeline do Azure DevOps
A maioria dos provedores de nuvem oferece várias ferramentas para criar na nuvem um pipeline de DevOps pronto para produção. Para mostrar como é um pipeline de DevOps em nuvem no mundo real, vamos analisar o pipeline do Microsoft Azure DevOps, que é composto por vários elementos, incluindo:
Essas ferramentas oferecem todos os componentes básicos de DevOps descritos acima.
Veja como pode ser o processo de uso do pipeline do Microsoft Azure DevOps:
O código de uma aplicação é atualizado.
As alterações no código são confirmadas no repositório do Azure Repos.
Um evento de CI aciona o build da aplicação e os testes unitários com o Azure Test Plans.
O Azure Pipelines cria uma implantação automatizada dos artefatos da aplicação.
Os artefatos são implantados no Azure App Service.
Após a implantação da aplicação, especialistas em DevOps podem monitorar a integridade, o desempenho e outras métricas da aplicação.
Como integrar a segurança ao pipeline de DevOps
A segurança de aplicações baseada em abordagens tradicionais, ainda usadas por muitas organizações, não é compatível com DevOps. Em geral, essas abordagens têm algumas limitações:
A segurança costuma ser incorporada ao software depois que ele entra em produção, em vez de ser integrada desde o início.
O ciclo lento de feedback das práticas tradicionais de segurança não é compatível com o ritmo acelerado do pipeline de DevOps.
As metodologias tradicionais de segurança não levam em conta os ambientes dinâmicos em que as aplicações modernas existem (por exemplo, serviços de nuvem, contêineres e sistemas de gerenciamento de contêineres como o Kubernetes).
As equipes de segurança que seguem a abordagem tradicional ficam fora dos grupos de DevOps. Em geral, respondem a outro líder de equipe e trabalham isoladas. O resultado são aplicações inseguras sendo lançadas, pois os especialistas não participam do fluxo de informações e não têm acesso às informações necessárias.
Além disso, quando as equipes de segurança entram em cena para fazer uma auditoria, elas atrasam a entrega e comprometem o objetivo de negócio inicial. Para piorar, muitas vezes as equipes de segurança têm poucos profissionais — uma situação agravada pela grave escassez de talentos no setor de cibersegurança.
Quando as equipes de segurança identificam vulnerabilidades e outros riscos, elas mesmas não conseguem corrigir os problemas. A busca por uma solução fica a cargo da equipe de desenvolvimento e, até que os problemas sejam priorizados e resolvidos, o risco permanece. Isso cria mais um gargalo para as correções de segurança.
Essas limitações das abordagens tradicionais dificultam a integração da segurança a um ambiente moderno de DevOps, baseado em automação e ferramentas de CI/CD. A segurança continua sendo externa ao processo de desenvolvimento de software e é usada como prática corretiva depois que o produto de software é criado. Felizmente, há uma solução para esse problema.
Segurança com foco em desenvolvimento e DevSecOps
Está claro que o mundo digitalmente transformado da nuvem e do DevOps precisa de uma nova abordagem de segurança. Essa abordagem, às vezes chamada de DevSecOps, deve se basear nessas novas tecnologias e metodologias, incorporando a segurança desde o início. Ela precisa incentivar equipes autônomas e acelerar os negócios, em vez de atrasá-los. Em outras palavras, deve priorizar os desenvolvedores.
O que é DevSecOps?
DevSecOps é a integração de práticas de segurança a um modelo de entrega de software DevOps. Essa abordagem é uma evolução natural do DevOps, que acrescenta uma dimensão de segurança ao conceito de “responsabilidade compartilhada”. O DevSecOps trata a segurança como um recurso integrado ao software, que requer o mesmo processo de verificação e conformidade aplicado aos demais componentes do pipeline de DevOps.
Veja alguns dos principais benefícios do DevSecOps:
Incorporação antecipada de atividades e ferramentas de segurança ao ciclo de vida do desenvolvimento de software.
Mais agilidade na entrega de software, graças à identificação antecipada de bugs e vulnerabilidades, que são corrigidos antes da implantação e permitem que os desenvolvedores se concentrem em lançar recursos úteis.
As ferramentas de automação de segurança permitem que desenvolvedores sem especialização em segurança criem software estável e seguro.

Há poucos exemplos bem-sucedidos de implementação de uma abordagem DevSecOps e de integração da segurança aos pipelines de DevOps. Na Coveo, os integrantes da equipe de DevOps conseguem gerenciar vulnerabilidades com muito mais autonomia e eficiência. O Security Champion de cada equipe tem autonomia para monitorar vulnerabilidades e decidir como e em que prazo resolvê-las. As equipes de DevOps da Coveo recebem supervisão, mas têm a responsabilidade e a autonomia para priorizar suas ações de segurança. O apoio da Snyk a essa abordagem de “confiar, mas verificar” facilitou muito a adoção em toda a organização.
“O pipeline de implantação foi criado primeiro por uma equipe pequena e, depois, disponibilizado a todos os desenvolvedores”, revelou Beaumont. “Não foi preciso convencer as equipes de desenvolvimento a adotar o novo pipeline, por conta das vantagens em termos de segurança e facilidade de uso. A transição aconteceu naturalmente.”
Conclusão
Neste artigo, vimos os principais componentes do pipeline de DevOps e como integrá-lo ao processo de desenvolvimento de software. Começar sua jornada de DevOps não é apenas escolher as ferramentas certas: é também adotar práticas organizacionais sólidas e uma cultura baseada em responsabilidade compartilhada, automação e colaboração entre desenvolvedores, administradores e especialistas de operações.
Mas lembre-se: o pipeline de DevOps não se resume a ciclos rápidos de desenvolvimento e lançamento. Também é preciso garantir a segurança das aplicações. Para isso, é necessário integrar a segurança ao pipeline de DevOps e alinhar as diferentes equipes em torno do objetivo de criar aplicações seguras desde a concepção. É por isso que as práticas emergentes de DevSecOps abordadas neste artigo vêm ganhando espaço no movimento moderno de DevOps.
Perguntas frequentes sobre DevOps
Por que precisamos de DevOps?
O DevOps permite desenvolver software com rapidez e eficiência em projetos complexos, que envolvem várias equipes e pessoas desenvolvedoras. Ao automatizar cada etapa do processo, do desenvolvimento e dos testes à implantação, o DevOps evita conflitos de merge, reduz bugs, acelera a implantação do software e facilita sua manutenção.
Como criar um pipeline de DevOps?
Um pipeline de DevOps funcional requer vários componentes conectados perfeitamente: um servidor de CI/CD para executar todas as operações de DevOps, um sistema de controle de versão conectado a ele, ferramentas de automação de builds capazes de compilar aplicações e ferramentas de cobertura de testes para testar suas aplicações automaticamente. Também é possível adicionar ferramentas de segurança automatizadas para habilitar o DevSecOps.
Qual é a relação entre DevSecOps e DevOps?
O DevSecOps integra as práticas recomendadas de segurança ao processo de desenvolvimento de software desde as etapas iniciais. Em vez de tratar a segurança como uma série de verificações ou correções de bugs após a produção, o DevSecOps a incorpora ao DevOps por meio de análise estática e dinâmica de segurança, ferramentas de segurança para IaC, análise de segurança de contêineres e muito mais.
Comece a usar o Snyk gratuitamente
Não é necessário informar um cartão de crédito.
Crie uma conta com Bitbucket e veja mais opções
Ao usar o Snyk, você concorda em cumprir nossas políticas, incluindo os Termos de Serviço e a Política de Privacidade.