O que é DevOps?
Em um modelo tradicional de desenvolvimento de software, os desenvolvedores escrevem grandes quantidades de código para novos recursos, produtos, correções de bugs e outros, e depois passam seu trabalho para a equipe de operações para implantação, geralmente por meio de um sistema automatizado de emissão de tíquetes. A equipe de operações recebe essa solicitação em sua fila, testa o código e o prepara para a produção, um processo que pode levar dias, semanas ou meses. Nesse modelo tradicional, se as operações tiverem algum problema durante a implantação, a equipe envia um tíquete de volta aos desenvolvedores para informá-los sobre o que deve ser corrigido. Eventualmente, depois que esse vai-e-vem é resolvido, a carga de trabalho é colocada em produção.
Esse modelo torna a entrega de software um processo demorado e fragmentado. Os desenvolvedores geralmente veem as operações como um obstáculo, que atrasa os cronogramas de seus projetos, enquanto as equipes de operações se sentem como um depósito de problemas de desenvolvimento.
O DevOps resolve esses problemas unindo as equipes de desenvolvimento e operações durante todo o processo de entrega de software, permitindo que elas descubram e corrijam problemas mais cedo, automatizem testes e implantações e reduzam o tempo de lançamento no mercado.
DevOps não é
- Uma combinação das equipes de desenvolvimento e operações: Ainda há duas equipes; elas apenas operam de forma comunicativa e colaborativa.
- Sua própria equipe separada: Não existe um "engenheiro de DevOps". Embora algumas empresas possam nomear uma equipe de DevOps como piloto ao tentar fazer a transição para uma cultura de DevOps, DevOps refere-se a uma cultura em que desenvolvedores, testadores e pessoal de operações cooperam durante todo o ciclo de vida de entrega de software.
- Uma ferramenta ou conjunto de ferramentas: Embora existam ferramentas que funcionam bem com um modelo DevOps ou que ajudam a promover a cultura DevOps, o DevOps é, em última análise, uma estratégia, não uma ferramenta.
- Automação: Embora seja muito importante para uma cultura DevOps, a automação por si só não define o DevOps.
Definição de DevOps
Em vez de os desenvolvedores codificarem grandes conjuntos de recursos antes de entregá-los cegamente às operações para implantação, em um modelo DevOps, os desenvolvedores frequentemente entregam pequenas quantidades de código para testes contínuos. Em vez de comunicar problemas e solicitações por meio de um sistema de emissão de tíquetes, as equipes de desenvolvimento e operações se reúnem regularmente, compartilham análises e são co-proprietárias de projetos de ponta a ponta.
Pipelines de CI/CD
DevOps é um ciclo de integração contínua e entrega contínua (ou implantação contínua), também conhecido como pipelines de CI/CD. O pipelines de CI/CD integra as equipes de desenvolvimento e operações para melhorar a produtividade por meio da automação da infraestrutura e dos fluxos de trabalho, além de medir continuamente o desempenho dos aplicativos. É assim:

- A integração contínua exige que os desenvolvedores integrem o código em um repositório várias vezes por dia para testes automatizados. Cada check-in é verificado por uma compilação automatizada, permitindo que as equipes detectem problemas antecipadamente.
- A entrega contínua, que não deve ser confundida com a implantação contínua, significa que o pipeline de CI é automatizado, mas o código deve passar por verificações técnicas manuais antes de ser implementado na produção.
- A implantação contínua leva a entrega contínua um passo adiante. Em vez de verificações manuais, o código passa por testes automatizados e é implantado automaticamente, dando aos clientes acesso instantâneo a novos recursos.
DevOps e segurança
Um dos problemas do DevOps é que a segurança muitas vezes passa despercebida. Os desenvolvedores se movem rapidamente e seus fluxos de trabalho são automatizados. A segurança é uma equipe separada, e os desenvolvedores não querem diminuir a velocidade das verificações e solicitações de segurança. Como resultado, muitos desenvolvedores implantam sem passar pelos canais de segurança adequados e, inevitavelmente, cometem erros de segurança prejudiciais.
Para resolver isso, as organizações estão adotando o DevSecOps. O DevSecOps pega o conceito por trás do DevOps - a ideia de que os desenvolvedores e as equipes de TI devem trabalhar juntos, em vez de separadamente, durante a entrega do software - e o amplia para incluir a segurança e integrar verificações automatizadas em todo o pipelines de CI/CD. Isso resolve o problema de a segurança parecer uma força externa e permite que os desenvolvedores mantenham a velocidade sem comprometer a segurança dos dados.