O que é o ciclo de vida de DevOps?

Ciclo de vida de DevOps, definido

O ciclo de vida de DevOps é um processo contínuo e iterativo para desenvolvimento e implementação de software, que consiste em oito fases principais: planejar, programar, construir, testar, lançar, implementar, operar e monitorar.

O processo de DevOps descreve como o software migra da idealização, passando por produção e feedback, e retornando à idealização, com as equipes de desenvolvimento e operações trabalhando como uma unidade única e colaborativa. Compreende um fluxo de práticas e fluxos de trabalho de automação de ponta a ponta que as equipes de DevOps podem usar para planejar, desenvolver, executar e otimizar lançamentos de software.

As fases do ciclo de vida de DevOps são frequentemente descritas como parte de um "ciclo infinito", com as atividades de desenvolvimento à esquerda e as atividades de operações à direita, conectadas em um caminho contínuo.

Ciclo infinito de DevOps

No lado do “planejar → programar → construir → testar” do ciclo, as equipes refinam os requisitos de software em pequenas histórias de usuários, enviam códigos para repositórios de código de forma incremental (mas com frequência) e usam ferramentas de integração contínua (CI) para construir e testar automaticamente cada mudança de código.

Na linha de “lançar → implementar → operar → monitorar”, os fluxos de trabalho de automação enviam mudanças através dos ambientes de TI e para os usuários. Enquanto isso, as ferramentas de observabilidade monitoram a integridade do sistema, o desempenho do software e o comportamento do usuário para detectar problemas e medir o impacto geral.

O ciclo infinito enfatiza que cada fase do ciclo de vida de DevOps influencia as outras. As equipes compartilham trabalho, conhecimento e responsabilidades, em vez de passá-los para frente e para trás entre silos. O ciclo também ilustra como os fluxos de trabalho de DevOps podem simplificar os processos de entrega e otimização de software. O ideal é que cada ciclo seja mais rápido, seguro e automatizado que o anterior.

Dessa forma, o ciclo de vida de DevOps permite que as empresas alinhem pessoas, processos e ferramentas para entregar aplicações de software de alta qualidade e experiências de usuário sem atrito.

Fases do ciclo de vida de DevOps

Cada fase do ciclo de vida de DevOps informa e se sobrepõe às outras fases, mas cada uma tem um propósito claro e um conjunto de atividades associadas. As fases incluem:

Planejar

Na fase de planejamento, as equipes de DevOps traduzem as necessidades de negócios e o feedback do usuário em planos de trabalho claros, priorizados e com prazos definidos e fluxos de trabalho de gerenciamento de projetos que orientam as atividades de desenvolvimento e operações nas fases subsequentes. Essa fase esclarece a visão, o escopo e o roteiro de um lançamento de software ou construção do sistema, para que todos entendam o que estão construindo, por que isso é importante e como medirão o sucesso.

As atividades típicas de planejamento podem incluir:

  • Refino e triagem de backlogs de produtos (como novas funcionalidades, correções de bugs e dívida técnica).
  • Análise da entrada dos stakeholders para capturar as necessidades e restrições dos usuários.
  • Divisão do trabalho em tarefas, histórias de usuários (descrições de recursos de software escritas a partir da perspectiva do usuário) e épicos (histórias de usuários muito amplas para serem abordadas em uma única iteração de software), para estimar os requisitos de recursos e identificar dependências.
  • Definição de r indicadores-chave de desempenho (KPIs), indicadores de nível de serviço (SLIs) e objetivos de nível de serviço, para que as fases posteriores saibam o que é "bom".

Código

Durante a fase de programação, os desenvolvedores transformam a infraestrutura e os requisitos de software planejados em código-fonte funcional, com foco na garantia de qualidade e nas operações futuras. Não se trata apenas de escrever novo código. Também se trata de configurar todos os componentes necessários para processos automatizados de construção, teste, integração e implementação posteriormente no pipeline.

O processo de codificação envolve:

  • Escrever código para implementar novas funcionalidades, corrigir defeitos e lidar com a necessidades não funcionais (segurança, por exemplo).
  • Confirmar pequenas alterações incrementais no código para repositórios compartilhados dentro de sistemas de controle de versão (como Git e GitHub) para avaliação.
  • Testar commits de código para que possam ser construídos e integrados sem dificuldades à base de código.
  • Adicionar ou atualizar testes automatizados de unidades e componente para que futuras execuções de CI possam validar automaticamente o comportamento do código após cada commit.

Build

Na fase de construção, as alterações no código-fonte são compiladas, validadas e empacotadas automaticamente em artefatos de construção implementáveis. As ferramentas de DevOps buscam alterações de código no sistema de controle de versão, executam verificações automatizadas e produzem pacotes (como imagens de contêineres do Docker e binários compilados), que são versionados e prontos para implementação ou testes adicionais.

Mais especificamente:

  • Scripts automatizados e ferramentas de construção compilam o código-fonte, resolvem e baixam dependências (incluindo bibliotecas, frameworks e módulos) e vinculam tudo em um executável ou imagem.
  • Testes automatizados básicos são executados como parte da construção. Se a construção falhar, ela será marcada como interrompida e permanecerá na fase de construção. Se a construção for aprovada, avançará para a próxima fase do ciclo de vida.

Teste

A fase de testes (também chamada de validação) tem como objetivo ajudar a garantir que uma alteração de código se comporte conforme o esperado em condições do mundo real. As equipes de DevOps usam uma série de ferramentas avançadas de testes para validar continuamente se cada mudança é funcional, segura e eficiente antes de avançar no pipeline ou chegar à produção.

Normalmente, os processos de testes são totalmente integrados ao pipeline de integração contínua/entrega contínua (CI/CD), para que os desenvolvedores recebam feedback rápido e frequente sobre a qualidade do código.

O principal objetivo dos testes de software é identificar defeitos o mais cedo possível (quando são mais baratos e fáceis de corrigir) e evitar que construções defeituosas progridam para o lançamento. Os testes também verificam se as novas alterações não vão prejudicar a funcionalidade existente, ajudando os desenvolvedores a manter a estabilidade geral do sistema à medida que os produtos de software evoluem.

Lançamento

A fase de lançamento fornece um gateway controlado entre a "construção testada" e a "implementação em tempo real", em que as alterações de código são aprovadas para produção e se tornam visíveis para os usuários-alvo. As equipes de desenvolvimento preparam o código comprovado e testado para implementação, empacotando-o, validando se está pronto para produção e coordenando como e quando migrará para ambientes de preparação e produção.

Os processos comuns de lançamento incluem:

  • Realização de verificações finais de qualidade, segurança e conformidade em relação a critérios de aceitação predefinidos.
  • Anexação de artefatos de construção a versões de lançamento específicas e criação de logs de alterações e documentação.
  • Identificar vulnerabilidades no próximo lançamento e planejar estratégias de mitigação (como reversões) para lidar com problemas.

Implemente

Durante a fase de implementação, o código testado e empacotado é entregue automaticamente aos ambientes de destino (preparação ou produção). Ferramentas de gerenciamento de configuração e infraestrutura como código (IaC) — que usam arquivos de configuração e linguagens de programação descritivas de alto nível para automatizar o provisionamento e  a orquestração de infraestrutura para lançamentos de software — ajudam as equipes de DevOps a garantir que o software seja entregue de forma confiável e repetível.

Normalmente, a implementação é conduzida por plataformas de entrega contínua (CD) e de conteinerização ( Kubernetes, por exemplo), que orquestram os processos de implementação de software (extraindo artefatos de construção, atualização de contêineres e binários, execução de testes finais e transferência de tráfego para a nova versão).

As equipes de DevOps geralmente usam estratégias de implementação diferentes para garantir que as novas versões sejam introduzidas gradualmente e possam ser revertidas rapidamente, se necessário.

Com a implementação azul-verde, por exemplo, os aplicativos são implementados em dois ambientes de produção paralelos, e cada ambiente executa um lançamento diferente da aplicação. O ambiente "azul" executa a aplicação em tempo real, enquanto o ambiente "verde" lida com os testes e a validação de novas versões do aplicativo. Quando a nova iteração é aprovada, o ambiente verde se torna o ambiente de produção, e o azul permanece ocioso, mas disponível, para lidar com reversões.

Com as implementações canário, as equipes implementam aplicações em um pequeno subconjunto de usuários (ou "canários") para monitoramento e testes em ambiente real antes de implementar o aplicativo para toda a base de usuários.

Assim como os canários eram usados para alertar os mineradores de carvão sobre gases tóxicos, as implementações de canários avisam as equipes de desenvolvimento sobre defeitos de aplicativos sem arriscar problemas de desempenho em grande escala que afetam todos os usuários. Se a aplicação tiver um bom desempenho com o grupo de canários, os desenvolvedores a implementarão progressivamente para grupos maiores até que esteja disponível para todos os usuários.

Operar

A fase de operação se concentra em manter os sistemas ativos estáveis, com alto desempenho, seguros e disponíveis para usuários reais sob cargas de trabalho reais. Não é o “fim” do ciclo de vida das aplicações. Em vez disso, alimenta dados e insights em estágios anteriores.

Nessa fase, as equipes de DevOps:

  • Executam e supervisam aplicações no ambiente de produção, incluindo qualquer serviços de infraestrutura e dependências associados.
  • Gerenciam os processos de planejamento e escalonamento da capacidade, para que os fluxos de tráfego não se degradem com o tempo.
  • Detectam e fazem a triagem de problemas, lidam com gargalos de desempenho e aplicam correções de bugs ou reversões conforme a necessidade.
  • Aplicam correções de segurança e impõem práticas de governança (como controles de acesso e auditorias de conformidade) para otimizar a segurança do sistema.

Monitore

Na fase de monitoramento, as equipes observam continuamente as aplicações e a infraestrutura em produção para detectar problemas, entender o comportamento real dos usuários e enviar insights para o desenvolvimento e as operações.

As equipes de DevOps coletam dados de observabilidade (métricas, logs e rastreamentos) e outras informações de aplicativos, servidores, redes e bancos de dados para acompanhar o desempenho em tempo real. Elas definem limites e alertas para que anomalias (como alta latência de APIs ou padrões de acesso suspeitos) acionem notificações para uma rápida investigação e correção.

Se as ferramentas de monitoramento encontrarem um defeito de software ou problema de usabilidade, elas encaminham as informações para emitir rastreadores e backlogs, para que as equipes possam ajustar as iterações subsequentes.​

DevSecOps: a “nona fase”

O ciclo infinito não inclui explicitamente uma fase de "proteger", mas os pipelines de DevOps geralmente envolvem práticas e tecnologias que incorporam medidas de segurança durante todo o ciclo de vida.

É aí que o DevSecOps entra no framework.

O DevSecOps (abreviação de desenvolvimento, segurança e operações) é uma prática de desenvolvimento de software que muda os protocolos de segurança da direita (fim) para a esquerda (início) do ciclo de vida do desenvolvimento. Com a abordagem "shift-left", os desenvolvedores implementam protocolos de segurança (como criptografia de dados, validação de entrada, controles de acesso baseados em funções e autenticação multifator) à medida que escrevem o código.

O DevSecOps também incorpora atividades de "shift-right", estendendo as práticas de segurança para ambientes de produção pós-implementação. As práticas de shift-right priorizam o monitoramento, os testes e a proteção de aplicações em tempo de execução sob condições do mundo real. Elas complementam a segurança shift-left criando um ciclo de feedback contínuo em que os problemas de segurança descobertos na produção informam as fases de desenvolvimento anteriores.

Usadas em conjunto, a segurança shift-left e shift-right permitem que as empresas integrem controles de segurança em todas as fases do ciclo de vida de DevOps. Uma estratégia de segurança ajuda as equipes de DevOps a implementar tanto a prevenção precoce quanto a detecção e resposta a ameaças após a implementação, aprimorando a postura de segurança e impulsionando a melhoria contínua.

DevOps versus cascata versus ágil

O ciclo de vida de DevOps representa uma evolução de abordagens de desenvolvimento de software mais tradicionais, como a cascata e a ágil.

Pipeline de desenvolvimento em cascata

Cascata é uma metodologia de desenvolvimento que segue um processo linear e sequencial em que cada fase do ciclo de vida (coleta de requisitos, projeto, implantação, testes, implementação e manutenção) deve ser totalmente concluída e aprovada antes do início da próxima. Prioriza o planejamento proativo, a documentação detalhada e a previsibilidade, tornando-a adequado para projetos com requisitos estáveis e bem definidos e poucas mudanças previstas (projetos relacionados ao governo e à saúde, por exemplo).

A cascata oferece um forte controle de processos, mas as equipes de desenvolvimento estão isoladas. Fazer alterações após a conclusão de uma fase é caro e demorado. Em suma, a cascata tem dificuldades com a agilidade.

Ágil é uma metodologia de desenvolvimento iterativa que fornece incrementos pequenos e funcionais de trabalho por meio de ciclos curtos (conhecidos como “sprints”). Ela prioriza o planejamento adaptativo, a entrega antecipada e a melhoria contínua com base no feedback dos stakeholders, permitindo que as equipes de desenvolvimento respondam rapidamente às mudanças nos requisitos e nas condições.

Pipeline de desenvolvimento ágil

As metodologias ágeis podem ser eficazes para ambientes dinâmicos, como startups. Elas mitigam a rigidez linear das abordagens em cascata com equipes multifuncionais que priorizam a funcionalidade do software em detrimento de uma documentação abrangente. No entanto, as abordagens ágeis se concentram no processo de desenvolvimento de software, excluindo os processos operacionais.  

O DevOps oferece uma prática cultural e técnica moderna que integra as equipes de desenvolvimento e operações, aproveitando as ferramentas de CI/CD (como o GitLab) para testar, implementar e monitorar a automação. Ao contrário do ágil e da cascata, as práticas de DevOps podem ajudar empresas a acelerar lançamentos de software e construir aplicações que permaneçam com bom desempenho e ágeis nas arquiteturas de microsserviços altamente dinâmicas e ambientes de TI baseados em nuvem de hoje.

Os sete C's (processos contínuos) do ciclo de vida de DevOps

Os 7 Cs fornecem outra maneira de conceituar o ciclo de vida do DevOps como o produto de sete processos contínuos.

1. Desenvolvimento contínuo

O desenvolvimento contínuo envolve planejamento e programação de software, com os desenvolvedores dividindo o processo em iterações menores e mais gerenciáveis. Os desenvolvedores armazenam alterações em sistemas de controle de versão e alinham continuamente seu código com os requisitos dos stakeholders, ajudando as equipes a minimizar os riscos e se adaptar rapidamente às mudanças.

2. Integração contínua

A integração contínua mescla alterações de código de vários desenvolvedores em um repositório compartilhado, acionando automaticamente construções após cada confirmação. Ela permite que as equipes de DevOps melhorem continuamente suas aplicações de software, recebam feedback uniforme, detectem e façam correções antes que afetem o desempenho do software e entreguem software de maior qualidade em cronogramas mais previsíveis.

3. Testes contínuos

Testes contínuos possibilitam que os desenvolvedores iniciem automaticamente avaliações de código e protocolos de testes (como testes de unidade). Usam ferramentas de teste para examinar continuamente o código integrado em busca de bugs, falhas de usabilidade e problemas de desempenho. Os testes contínuos dão aos desenvolvedores o feedback rápido de que precisam para melhorar o software sem atrasar o ciclo de vida.

4. Entrega e implementação contínuas

A entrega contínua automatiza a entrega de aplicações e alterações validadas na base de código (atualizações, correções de bugs e até mesmo novas funcionalidades) para todos os ambientes de infraestrutura necessários para testes adicionais. As construções de código que são aprovadas em todos os testes de integração e estágios de validação são empacotadas e entregues a repositórios de código, que centralizam e armazenam pacotes de código em um estado implementável.

A implementação contínua leva a entrega um passo adiante, implementando automaticamente cada alteração aprovada na produção, sem intervenção humana. Quando as atualizações de código são testadas, validadas e aprovadas, as ferramentas de implementação contínua migram o artefato de software para um ambiente de preparação de pré-produção ou para servidores públicos e plataformas de distribuição (como lojas de aplicações), onde os usuários podem acessá-lo.

5. Feedback contínuo

O feedback contínuo exige que as equipes de DevOps obtenham insights dos dados de monitoramento, dados de experiência do usuário e entrada dos stakeholders para refinar o backlog do produto e determinar a urgência de cada melhoria.

6. Monitoramento contínuo

O monitoramento contínuo acompanha o desempenho das aplicações e da infraestrutura em tempo real, identificando problemas de forma proativa para manter a confiabilidade do sistema. A maioria das ferramentas de monitoramento visualiza os dados do pipeline de CI/CD usando dashboards, o que aumenta a visibilidade do stack de tecnologia e permite otimizações baseadas em dados.

7. Operações contínuas

As ferramentas de automação lidam com o provisionamento de infraestrutura, escalonamento de recursos, backups de dados, roteamento de tráfego e manutenção de sistemas, permitindo que as equipes de DevOps apliquem continuamente o feedback a novas iterações de aplicativos.

Benefícios do ciclo de vida de DevOps

O aproveitamento das melhores práticas de DevOps pode trazer inúmeros benefícios para as empresas, incluindo:

Melhor qualidade de software

Os ciclos de vida de DevOps priorizam o código contínuo e os testes de software, para que bugs e vulnerabilidades sejam detectados no início do processo de desenvolvimento e os desenvolvedores possam entregar código de maior qualidade.

Prazo menor de lançamento no mercado

Os processos de DevOps aceleram os ciclos de desenvolvimento de software ao reduzir o tempo de espera entre a integração do código e a entrega do software de semanas para minutos.

Menos risco e downtime

Atualizações pequenas e frequentes de código facilitam a resolução de bugs e erros, evitando interrupções em grande escala e reduzindo o tempo médio de reparo (MTTR).

Maior transparência

Dashboards de observabilidade e ciclos de feedback contínuos ajudam a garantir que todos os membros da equipe de DevOps tenham acesso a todas as informações de que precisam em todos os momentos, melhorando a transparência e a responsabilidade em toda a empresa.

Aumento da produtividade

A cultura de DevOps automatiza etapas manuais repetitivas (solução de problemas de construções e gerenciamento de scripts de implementação, por exemplo), para que as equipes possam se concentrar na otimização das aplicações para os usuários finais.

Chrystal R. China

Staff Writer, Automation & ITOps

IBM Think

Soluções relacionadas
IBM instana observability

Aproveite o poder da IA e da automação para resolver problemas de forma proativa em todo o stack de aplicações.

Explore o IBM Instana Observability
Soluções de DevOps

Utilize softwares e ferramentas de DevOps para desenvolver, implementar e gerenciar aplicações nativas da nuvem em diversos dispositivos e ambientes.

Explore as soluções de DevOps
Serviços de consultoria em nuvem

Acelere a agilidade e o crescimento dos negócios, modernize suas aplicações de forma contínua em qualquer plataforma utilizando nossos serviços de consultoria de nuvem.

Explore os serviços de consultoria em nuvem
Dê o próximo passo

Da detecção proativa de problemas com IBM Instana a insights em tempo real em todo o seu stack, você pode manter aplicações nativas em nuvem funcionando de forma confiável.

  1. Descubra o IBM Instana
  2. Explore as soluções de DevOps