Uma mudança de cultura? Uma maneira de trabalhar? Ferramentas específicas?
O que é DevOps?
O DevOps é uma prática comercial holística que combina pessoas, tecnologias, práticas culturais e processos para reunir equipes anteriormente isoladas e fornecer softwares melhores com mais rapidez. As implementações bem-sucedidas de DevOps são vistas como uma mudança organizacional quando se trata de desenvolvimento de software. Saiba mais sobre DevOps e como otimizar o fornecimento de software com DevOps em todo o ciclo de vida de desenvolvimento de software (SDLC).
Definição de DevOps
Ao reunir pessoas, processos e produtos, o DevOps permite que as equipes de desenvolvimento forneçam valor aos seus clientes constantemente.
O que queremos dizer quando falamos em DevOps?
Quando se trata do significado de DevOps, é mais do que apenas automação. Na verdade, trata-se de organizações que seguem um processo viabilizado por software para ajudá-las a agregar valor. DevOps é uma prática de negócios em que as equipes de desenvolvimento, operações de TI e segurança se associam para criar, testar e fornecer feedback regular durante todo o SDLC.
Para adotar com sucesso a metodologia DevOps, as pessoas mudam a maneira como trabalham e colaboram. Da mudança de cultura à automação com integração contínua e implantação contínua (CI/CD), vamos explorar como as equipes de DevOps desenvolvem contexto, conhecimento, ferramentas e funções compartilhados para enviar produtos melhores.
Como o DevOps foi criado: de silos a fluxos de trabalho compartilhados
O DevOps define um novo padrão para a forma como criamos software. Antes de meados dos anos 2000, os desenvolvedores, as operações de TI e as equipes de segurança geralmente trabalhavam em silos e seguiam um processo linear:
Os desenvolvedores escreviam o código, empacotavam a aplicação com a documentação e a enviavam para o controle de qualidade.
A equipe de controle de qualidade testou a aplicação e a entregou à equipe de operações de produção.
A equipe de operações implementou o software na produção e gerenciou o tempo de atividade e a estabilidade do software, com pouca ou nenhuma interação direta com a equipe de desenvolvimento.
A equipe de segurança só verificou o código em busca de vulnerabilidades após a implantação.
Se alguém relatasse um problema, todo o processo começava novamente.
Essa abordagem linear do desenvolvimento de software era lenta e frustrante para todos os envolvidos. Então, em 2008, o administrador de sistemas Patrick Debois e o desenvolvedor de software Andrew Shafer criaram um grupo de trabalho para ajudar a preencher a lacuna entre as equipes de operações e de desenvolvimento. Suas práticas recomendadas iniciaram a jornada rumo aos processos de DevOps que conhecemos hoje.
Saiba mais sobre a história do DevOps
Eliminação da lacuna entre operações e desenvolvimento
Em uma cultura DevOps, as equipes trabalham juntas em um fluxo de trabalho compartilhado para melhorar continuamente os processos de entrega e gerenciamento de software. O engenheiro de DevOps desempenha uma função importante, gerenciando continuamente as comunicações da equipe e projetando e implementando estratégias. Além das tarefas relacionadas ao código, o engenheiro de DevOps é responsável por resolver problemas relacionados a testes, monitoramento, gerenciamento de versões e planejamento operacional.
O que é um modelo de DevOps?
Como cada implementação de DevOps é exclusiva para as necessidades comerciais da empresa, não existe realmente um modelo de DevOps único para todos. No entanto, as principais filosofias do DevOps incluem a quebra de silos e a ideia de que todos devem assumir a responsabilidade por um produto e trabalhar juntos como uma equipe em todas as partes do SDLC.
Benefícios do DevOps
As implantações tradicionais são difíceis, manuais e, muitas vezes, não funcionam, levando ao esgotamento dos funcionários e a ciclos de lançamento insustentáveis. Em comparação, uma pesquisa recente mostra que o uso de metodologias e princípios de DevOps, como a automação, aumenta a produtividade e melhora a experiência do desenvolvedor.
O DevOps torna o desenvolvimento de software mais rápido, mais amigável e mais colaborativo. Os engenheiros que trabalham em equipes de DevOps concentram-se em suas metas, priorizam o equilíbrio entre vida pessoal e profissional e têm mais tempo para os projetos que lhes interessam. Esse tipo de satisfação se baseia no que sabemos da psicologia organizacional: as equipes fazem seu melhor trabalho quando estão pessoalmente envolvidas no resultado.
Melhora da produtividade
Reduza as tarefas manuais e ganhe consistência, confiabilidade e eficiência.
Código pronto para a nuvem
Provisione facilmente ambientes na nuvem para ajudar as equipes a trabalhar mais rapidamente em escala e atender à demanda.
Segurança
Proteja clientes e códigos enquanto gerencia o acesso em locais e ambientes.
Colaboração
Crie e promova uma cultura colaborativa com comunicação aprimorada.
Como o DevOps funciona
O ciclo de vida do DevOps
O ciclo de vida do DevOps abrange todos os aspectos do desenvolvimento de software. As equipes de DevOps colaboram continuamente e compartilham ferramentas e responsabilidades em todas as fases do ciclo de vida para criar e enviar software com eficiência.
Quatro fases do ciclo de vida do DevOps
Idea
As equipes reúnem requisitos e feedback e começam a esboçar os recursos de que precisarão. As equipes de DevOps se concentram no planejamento contínuo: planos que podem ser atualizados com frequência, até mesmo diariamente. Para criar roteiros e acompanhar o progresso em direção às suas metas, as equipes utilizam ferramentas de gerenciamento de projetos que todos podem acessar e usar.
Stack de idealização
GitHub Issues e quadros de projetos
Compilar
À medida que os gerentes de projeto atribuem tarefas, os desenvolvedores começam a trabalhar. É aqui que o DevOps ganha vida. Com o controle de versão e os ambientes de desenvolvimento baseados em nuvem, os desenvolvedores podem fazer alterações contínuas e revisar o código juntos em tempo real. Para os desenvolvedores, ferramentas como o GitHub Codespaces facilitam a realização de alterações de forma rápida, segura e fácil, sem a necessidade de criar ou manter um ambiente de desenvolvimento de desktop. A integração contínua (CI) também entra em ação, quando ferramentas automatizadas transformam as alterações de código em compilações, executam testes em relação às verificações necessárias e mesclam e preparam o código para implantação.
Stack de integração contínua
GitHub Codespaces, GitHub Actions
Envio
Depois de passar pelas verificações iniciais, os desenvolvedores usam ferramentas de entrega contínua (CD) para enviar automaticamente as alterações de código para um ambiente de teste ou preparação que não seja de produção. As equipes de operações podem implementar imediatamente as alterações na produção, sem surpresas.
Stack de implantação contínua
Pipelines de CD com GitHub Actions, GitHub Packages, Microsoft Azure
Aprender
O software pode estar disponível para o mundo, mas o trabalho ainda não terminou. As equipes de operações ficam de olho nas versões com ferramentas de monitoramento que medem o desempenho e acompanham o impacto das alterações de código. Elas garantem a estabilidade e o tempo de atividade, reúnem o feedback dos clientes e mantêm contato próximo com os desenvolvedores para enviar as correções necessárias e resolver os incidentes mais rapidamente.
Stack de observabilidade
Netdata, Lightstep, New Relic, App Dynamics, Sentry, Raygun, Honeycomb, Splunk
Automação em todas as etapas
O DevOps enfatiza a automação e a colaboração para liberações mais rápidas. A automação de tarefas por meio de CI/CD em um pipeline de DevOps acelera o desenvolvimento e a implantação de software e ajuda a garantir resultados de alta qualidade com testes, relatórios e monitoramento.
Saiba mais sobre automação
Adoção de um modelo e cultura de DevOps
O sucesso do DevOps depende de uma mudança cultural - adotar uma abordagem de colaboração em primeiro lugar para o software originalmente desenvolvido por equipes de código aberto. No código aberto, os desenvolvedores incentivam a transparência, as cargas de trabalho compartilhadas, o feedback e as revisões contínuas e a documentação robusta. Relatórios do setor, como o DORA's State of DevOps, dos pesquisadores Nicole Forsgren, Jez Humble e Gene Kim, e estruturas populares de DevOps, como o CALMS, costumam usar essas práticas recomendadas como referência para uma cultura de DevOps bem-sucedida.
Colaboração
A colaboração é a essência do DevOps. As equipes de desenvolvedores e de operações se comunicam regularmente sobre cronogramas e metas, e todos são responsáveis pelo sucesso do projeto.
Automação
À medida que as equipes trabalham juntas e compartilham ferramentas, a automação oferece suporte à consistência, à confiabilidade e à eficiência em toda a organização, facilitando a descoberta e a solução de problemas.
Transparência
O feedback contínuo e o acesso aberto aos repositórios incentivam a colaboração dentro e fora das equipes individuais. Ele também promove o InnerSource, o processo de usar as práticas recomendadas de código aberto para criar códigos internos.
Operações de DevOps evoluídas
Com o DevOps, as equipes de operações agora estão integradas ao desenvolvimento e têm interesse em capacitar os desenvolvedores. Isso geralmente significa trabalhar mais de perto com os desenvolvedores para fornecer acesso sob demanda a ambientes e ferramentas seguros e em conformidade. Isso também significa recorrer à automação para mais tarefas repetitivas, como atualização de sistemas e resolução de incidentes.
Gerenciamento eficaz de DevOps
Os gerentes de DevOps são responsáveis pela implementação da estrutura de DevOps em todo o processo de desenvolvimento e implantação. Isso inclui assumir a responsabilidade pela entrega bem-sucedida de software, monitorar fluxos de trabalho e supervisionar o gerenciamento de lançamento de software. Os gerentes de DevOps eficazes são líderes com excelentes habilidades interpessoais e de resolução de problemas, além de uma sólida formação técnica.
Práticas recomendadas de DevOps para implementação
O DevOps é implementado seguindo as práticas de DevOps em todo o ciclo de vida da aplicação. Algumas práticas ajudam a acelerar, melhorar e automatizar uma fase específica do DevOps, e outras ajudam a melhorar a produtividade em várias fases.
Integração contínua
Os desenvolvedores usam a CI para automatizar, mesclar e testar o código. A CI ajuda a detectar bugs no início do ciclo de desenvolvimento, quando a correção é menos dispendiosa. A CI também executa testes automatizados para ajudar a garantir a qualidade. Para promover implementações frequentes, as equipes usam a CI para produzir artefatos implementáveis, incluindo infraestrutura e aplicações, que alimentam os processos de lançamento.
Implantação contínua
Nesse processo, o código é criado, testado e implantado para ser testado em ambientes de produção. Para aumentar a qualidade, as equipes implementam e testam em vários ambientes. Os sistemas de CD também são usados para processos automatizados de lançamento e correções no software existente.
Controle de versão
O uso do controle de versão é uma prática fundamental de DevOps que permite que vários desenvolvedores colaborem na criação de códigos. Um sistema de controle de versão oferece um processo claro para mesclar alterações de código, resolver conflitos e reverter alterações para versões anteriores quando necessário.
Desenvolvimento ágil de software
Por meio de ciclos curtos de lançamento, a abordagem de desenvolvimento ágil de software permite alta adaptabilidade a mudanças. As equipes ágeis oferecem melhorias contínuas aos seus clientes, coletam feedback e fazem ajustes com base nas necessidades e desejos dos clientes.
Infraestrutura como código
Ao definir as topologias e os recursos do sistema de forma descritiva, a infraestrutura como código permite que as equipes gerenciem os recursos da mesma forma que gerenciam o código. Isso os ajuda a implementar recursos do sistema de forma repetível, confiável e controlada, além de manter ambientes de teste e desenvolvimento idênticos aos de produção.
Gerenciamento de configuração
Gerenciamento de configuração significa gerenciar o estado dos recursos em um sistema, incluindo bancos de dados, máquinas virtuais e servidores. As ferramentas de gerenciamento de configuração ajudam as equipes a reduzir os riscos, implementando as mudanças de forma sistemática e controlada. As equipes também usam essas ferramentas para rastrear o estado do sistema e operar ambientes complexos em escala.
Monitoramento contínuo
Por meio do monitoramento contínuo, as equipes obtêm visibilidade total e em tempo real da integridade e do desempenho de toda a stack de aplicações. As equipes de DevOps de alto desempenho garantem a definição de alertas significativos e acionáveis e a coleta de dados de log e eventos de telemetria. Os insights derivados desses dados ajudam a equipe a atenuar os problemas em tempo real e a melhorar a aplicação em versões futuras.
O que você pode fazer com o DevOps?
Veja como as equipes de alto desempenho colocam a colaboração e a automação para trabalhar.
Dell Technologies
Padronização para dar suporte ao innersource e à escalabilidade.
The Home Depot
Modernização da infraestrutura e das ferramentas de desenvolvimento.
American Airlines
Promoção da inovação usando o GitHub como uma incubadora de ideias.
DevOps e DevSecOps
O que é DevSecOps?
Assim como o desenvolvimento e as operações, o DevSecOps integra testes automatizados de segurança em todas as partes da cultura, das ferramentas e dos processos do DevOps.
Saiba mais sobre DevSecOps
Para muitos profissionais, a segurança sempre foi pensada para fazer parte do DevOps. Em vez de acontecer no final do SDLC, a segurança do DevOps começa na fonte: o código. Essa abordagem é comumente conhecida como DevSecOps ou "shift left". O GitHub sempre considerou que DevOps bom significa DevSecOps, e as ferramentas do GitHub facilitam para as equipes de DevOps a inclusão da segurança em cada etapa do SDLC.
Usando ferramentas de segurança automatizadas, os desenvolvedores encontram e solucionam as vulnerabilidades de segurança à medida que codificam, em vez de esperar que as equipes de segurança as solucionem após a implementação. Ao capacitar os desenvolvedores a assumir a responsabilidade pela segurança em todo o ciclo de vida do DevOps, o DevSecOps permite que as equipes de desenvolvimento, operações e segurança encontrem e corrijam os problemas de segurança com mais rapidez.
Produtos de DevOps
Cada fase do ciclo de vida do DevOps tem considerações exclusivas que um ou mais produtos podem ajudar a resolver. As organizações podem investir na criação de uma coleção de ferramentas para usar em sua prática de DevOps, chamada de "toolchain de DevOps", para abordar cada fase do ciclo de vida. As organizações de DevOps mais bem-sucedidas terão esses tipos de ferramentas para ajudá-las a fornecer software de alta qualidade com mais rapidez.
Confira como o GitHub se compara a outras plataformas de DevOpsCI/CD
Ao longo deste artigo, discutimos como a CI/CD é fundamental para qualquer prática de DevOps. O GitHub Actions, uma solução completa de software de DevOps CI/CD, permite que as equipes de DevOps criem códigos mais seguros desde o início e implantem software com confiança, sem sacrificar a velocidade.
Automação de workflow
A automação é outro componente fundamental do DevOps e o GitHub Actions facilita a automação dos fluxos de trabalho do software DevOps, com CI/CD de classe mundial. Isso inclui revisões de código, gerenciamento de ramificações e triagem de problemas.
Controle de versão e do código-fonte
As melhores plataformas de controle de versão e código-fonte, como o GitHub, integram-se à toolchain de DevOps da organização e capacitam as equipes de produtos a colaborar em todo o ciclo de vida do DevOps. Elas incluem recursos de produtividade, como solicitações pull, que ajudam os desenvolvedores a obter revisões das alterações de código propostas antes de serem integradas à ramificação principal do código.
Segurança
As empresas que investem em DevOps geralmente investem em várias ferramentas para modelar ameaças e aplicar testes automatizados de segurança. Soluções integradas como o GitHub Advanced Security ajudam a garantir a segurança de software por meio de cada fase do SDLC. Por exemplo, o GitHub Advanced Security verifica o código conforme ele é criado para ajudar os desenvolvedores a protegerem o código em minutos, observa seus repositórios e os notifica sobre segredos emitidos por mais de 45 provedores de segredos líderes, além de ajudar a transformar melhores práticas em melhores processos de desenvolvimento.
Perguntas frequentes
O que é automação DevOps?
A automação DevOps permite que equipes de desenvolvimento reduzam a possibilidade de erro humano e acelerem o lançamento de software ao substituírem tarefas manuais por processos automatizados. Por exemplo, a integração e a entrega contínuas automatizam as fases de desenvolvimento, teste e implementação do ciclo de vida de DevOps.
Qual é a diferença entre DevOps e SRE?
Tanto o DevOps como a engenharia de confiabilidade de sites (SRE) aprimoram o ciclo de vida de desenvolvimento de software por meio da melhoria da automação, da colaboração e do monitoramento. A principal diferença é que as equipes de DevOps criam e atualizam software, enquanto as equipes de SRE trabalham com software que já está em produção para garantir que ele funcione corretamente e atenda aos acordos de nível de serviço.
O que é o modelo de DevOps?
Como cada implementação de DevOps é exclusiva para as necessidades comerciais da empresa, não existe realmente um modelo de DevOps único para todos. No entanto, as principais filosofias do DevOps incluem a quebra de silos e a ideia de que todos devem assumir a responsabilidade por um produto e trabalhar juntos como uma equipe em todas as partes do SDLC.
Qual é a diferença entre DevOps e DevSecOps?
O DevSecOps baseia-se no DevOps ao integrar testes automatizados de segurança em todas os aspectos da cultura, das ferramentas e dos processos do DevOps. Com isso, os desenvolvedores encontram e solucionam as vulnerabilidades de segurança à medida que codificam, em vez de esperar que as equipes de segurança as solucionem após a implementação. Ao capacitar os desenvolvedores a assumir a responsabilidade pela segurança em todo o ciclo de vida do DevOps, o DevSecOps permite que as equipes de desenvolvimento, operações e segurança encontrem e corrijam os problemas de segurança com mais rapidez.
O que é considerado um DevOps de qualidade?
Um processo de DevOps de qualidade combina o “desenvolvimento” e as “operações” para aproximar as equipes e oferecer um software melhor e mais rápido. As melhores práticas para avaliar o sucesso do DevOps incluem colaboração, automação de tarefas repetitivas e transparência, como feedback constante e aceso livre a repositórios.
O que faz um engenheiro de DevOps?
Um engenheiro de DevOps desempenha uma função importante no ciclo de vida de DevOps, gerenciando continuamente as comunicações da equipe e projetando e implementando estratégias. Além das tarefas relacionadas ao código, o engenheiro de DevOps é responsável por resolver problemas relacionados a testes, monitoramento, gerenciamento de versões e planejamento operacional.