Partilhar via


O que é DevOps?

O DevOps combina desenvolvimento (Dev) e operações (Ops) para unir pessoas, processos e tecnologia no planejamento, desenvolvimento, entrega e operações de aplicativos. O DevOps permite a coordenação e a colaboração entre funções anteriormente isoladas, como desenvolvimento, operações de TI, engenharia de qualidade e segurança.

As equipes adotam cultura, práticas e ferramentas de DevOps para aumentar a confiança nos aplicativos que criam, responder melhor às necessidades dos clientes e atingir as metas de negócios mais rapidamente. O DevOps ajuda as equipes a fornecer valor continuamente aos clientes, produzindo produtos melhores e mais confiáveis.

DevOps e o ciclo de vida do aplicativo

O DevOps influencia o ciclo de vida do aplicativo durante as fases de planejamento, desenvolvimento, entrega e operações . Cada fase depende das outras fases, e as fases não são específicas da função. Uma cultura de DevOps envolve todas as funções em cada fase até certo ponto.

O diagrama a seguir ilustra as fases do estilo de vida do aplicativo DevOps:

Diagrama conceitual que ilustra o ciclo de vida do aplicativo DevOps.

Objetivos e benefícios do DevOps

Quando uma equipe adota cultura, práticas e ferramentas de DevOps, ela pode alcançar coisas incríveis:

Acelere o tempo de entrada no mercado

Através do aumento da eficiência, da colaboração aprimorada da equipe, das ferramentas de automação e da implantação contínua, as equipes são capazes de reduzir rapidamente o tempo desde o início do produto até o lançamento no mercado.

Adaptar-se ao mercado e à concorrência

Uma cultura de DevOps exige que as equipes tenham um foco no cliente em primeiro lugar. Ao unir agilidade, colaboração em equipe e foco na experiência do cliente, as equipes podem entregar valor continuamente aos seus clientes e aumentar sua competitividade no mercado.

Manter a estabilidade e fiabilidade do sistema

Ao adotar práticas de melhoria contínua, as equipes são capazes de aumentar a estabilidade e a confiabilidade dos produtos e serviços que implantam. Essas práticas ajudam a reduzir falhas e riscos.

Melhorar o tempo médio de recuperação

A métrica de tempo médio de recuperação indica quanto tempo leva para se recuperar de uma falha ou violação. Para gerenciar falhas de software, violações de segurança e planos de melhoria contínua, as equipes devem medir e trabalhar para melhorar essa métrica.

Adote uma cultura de DevOps

Para implementar totalmente o DevOps, você deve adotar uma cultura de DevOps. Cultivar uma cultura de DevOps requer mudanças profundas na forma como as pessoas trabalham e colaboram. Quando as organizações se comprometem com uma cultura de DevOps, elas criam um ambiente para que as equipes de alto desempenho evoluam. Embora a adoção de práticas de DevOps automatize e otimize processos por meio da tecnologia, sem uma mudança para uma cultura de DevOps dentro da organização e de seu pessoal, você não obterá todos os benefícios do DevOps.

A imagem a seguir captura os principais aspetos da cultura do site ao vivo da Microsoft.

Diagrama da cultura do site ao vivo da Microsoft.

As seguintes práticas são componentes-chave de uma cultura de DevOps:

  • Colaboração, visibilidade e alinhamento: uma característica de uma cultura de DevOps saudável é a colaboração entre equipes. A colaboração começa com a visibilidade. As equipes de desenvolvimento, TI e outras devem compartilhar seus processos, prioridades e preocupações de DevOps entre si. Ao planear o seu trabalho em conjunto, estão mais bem posicionados para se alinharem em objetivos e medidas de sucesso à medida que se relacionam com o negócio.
  • Mudanças no escopo e na responsabilidade: à medida que as equipes se alinham, elas se apropriam e se envolvem em outras fases do ciclo de vida, não apenas as centrais para suas funções. Por exemplo, os desenvolvedores tornam-se responsáveis não apenas pela inovação e qualidade estabelecidas na fase de desenvolvimento, mas também pelo desempenho e estabilidade que suas mudanças trazem na fase de operação. Ao mesmo tempo, os operadores de TI certamente incluirão governança, segurança e conformidade na fase de planejamento e desenvolvimento.
  • Ciclos de lançamento mais curtos: as equipes de DevOps permanecem ágeis lançando software em ciclos curtos. Ciclos de liberação mais curtos facilitam o planejamento e o gerenciamento de riscos, uma vez que o progresso é incremental, o que também reduz o impacto na estabilidade do sistema. Encurtar o ciclo de lançamento também permite que as organizações se adaptem e reajam à evolução das necessidades dos clientes e à pressão competitiva.
  • Aprendizagem contínua: as equipas de DevOps de alto desempenho estabelecem uma mentalidade de crescimento. Eles falham rapidamente e incorporam aprendizados em seus processos. Eles se esforçam para melhorar continuamente, aumentar a satisfação do cliente e acelerar a inovação e a adaptabilidade do mercado.

Implementar práticas de DevOps

Você implementa o DevOps seguindo as práticas de DevOps (descritas nas seções a seguir) durante todo o ciclo de vida do aplicativo. Algumas dessas práticas ajudam a acelerar, automatizar e melhorar uma fase específica. Outros abrangem várias fases, ajudando as equipas a criar processos contínuos que ajudam a melhorar a produtividade.

Integração contínua e entrega contínua (CI/CD)

A Integração Contínua (CI) é a prática usada pelas equipes de desenvolvimento para automatizar, mesclar e testar código. A CI ajuda a detetar bugs no início do ciclo de desenvolvimento, o que os torna menos dispendiosos de corrigir. Testes automatizados são executados como parte do processo de IC para garantir a qualidade. Os sistemas de CI produzem artefatos e os alimentam para liberar processos para impulsionar implantações frequentes.

A Entrega Contínua (CD) é um processo pelo qual o código é criado, testado e implantado em um ou mais ambientes de teste e produção. A implantação e o teste em vários ambientes aumentam a qualidade. Os sistemas de CD produzem artefatos implantáveis, incluindo infraestrutura e aplicativos. Os processos de liberação automatizados consomem esses artefatos para liberar novas versões e correções para sistemas existentes. Os sistemas que monitorizam e enviam alertas são executados continuamente para aumentar a visibilidade de todo o processo de CD.

Controlo de Versões

O controle de versão é a prática de gerenciar código em versões — rastreando revisões e histórico de alterações para tornar o código fácil de revisar e recuperar. Essa prática geralmente é implementada usando sistemas de controle de versão, como o Git, que permitem que vários desenvolvedores colaborem na criação de código. Esses sistemas fornecem um processo claro para mesclar alterações de código que acontecem nos mesmos arquivos, lidar com conflitos e reverter alterações para estados anteriores.

O uso do controle de versão é uma prática fundamental de DevOps, ajudando as equipes de desenvolvimento a trabalharem juntas, dividirem as tarefas de codificação entre os membros da equipe e armazenarem todo o código para facilitar a recuperação, se necessário. O controle de versão também é um elemento necessário em outras práticas, como integração contínua e infraestrutura como código.

Desenvolvimento ágil de software

Agile é uma abordagem de desenvolvimento de software que enfatiza a colaboração em equipe, feedback de clientes e usuários e alta adaptabilidade à mudança através de ciclos de lançamento curtos. As equipes que praticam o Agile fornecem mudanças e melhorias contínuas aos clientes, coletam seu feedback e, em seguida, aprendem e se ajustam com base nos desejos e necessidades do cliente. O Agile é substancialmente diferente de outros frameworks mais tradicionais, como o waterfall, que inclui longos ciclos de liberação definidos por fases sequenciais. Kanban e Scrum são dois frameworks populares associados ao Agile.

Infraestrutura como código

A infraestrutura como código define os recursos e topologias do sistema de forma descritiva que permite que as equipes gerenciem esses recursos como fariam com o código. Essas definições também podem ser armazenadas e versionadas em sistemas de controle de versão, onde podem ser revisadas e revertidas, novamente como código.

Praticar a infraestrutura como código ajuda as equipes a implantar recursos do sistema de forma confiável, repetível e controlada. A infraestrutura como código também ajuda a automatizar a implantação e reduz o risco de erro humano, especialmente para ambientes complexos de grande porte. Essa solução confiável e repetível para implantação de ambiente permite que as equipes mantenham ambientes de desenvolvimento e teste idênticos aos de produção. A duplicação de ambientes para diferentes data centers e plataformas de nuvem também se torna mais simples e eficiente.

Gerenciamento de configuração

O gerenciamento de configuração refere-se ao gerenciamento do estado dos recursos em um sistema, incluindo servidores, máquinas virtuais e bancos de dados. Usando ferramentas de gerenciamento de configuração, as equipes podem implementar alterações de forma controlada e sistemática, reduzindo os riscos de modificar a configuração do sistema. As equipes usam ferramentas de gerenciamento de configuração para rastrear o estado do sistema e ajudar a evitar desvios de configuração, que é como a configuração de um recurso do sistema se desvia ao longo do tempo do estado desejado definido para ele.

Com a infraestrutura como código, é fácil modelizar e automatizar a definição e configuração do sistema, o que ajuda as equipes a operar ambientes complexos à escala.

Monitorização contínua

Monitoramento contínuo significa ter visibilidade completa e em tempo real do desempenho e da integridade de toda a pilha de aplicativos. Essa visibilidade varia desde a infraestrutura subjacente que executa o aplicativo até componentes de software de nível superior. A visibilidade é realizada através da recolha de telemetria e metadados e da definição de alertas para condições predefinidas que requerem a atenção de um operador. A telemetria compreende dados de eventos e logs coletados de várias partes do sistema, que são armazenados onde podem ser analisados e consultados.

As equipes de DevOps de alto desempenho garantem que definem alertas acionáveis e significativos e coletam telemetria avançada para que possam extrair insights de grandes quantidades de dados. Esses insights ajudam a equipe a mitigar problemas em tempo real e ver como melhorar o aplicativo em ciclos de desenvolvimento futuros.

Planning

Na fase de planejamento, as equipes de DevOps idealizam, definem e descrevem os recursos e capacidades dos aplicativos e sistemas que planejam criar. As equipes acompanham o progresso das tarefas em níveis baixos e altos de granularidade, desde produtos individuais até vários portfólios de produtos. As equipes usam as seguintes práticas de DevOps para planejar com agilidade e visibilidade:

Para obter uma visão geral das várias lições aprendidas e práticas que a Microsoft adotou para dar suporte ao planejamento de DevOps nas equipes de software da empresa, consulte Como a Microsoft planeja o DevOps.

Desenvolvimento

A fase de desenvolvimento inclui todos os aspetos do desenvolvimento de código de software. Nesta fase, as equipes de DevOps realizam as seguintes tarefas:

Para inovar rapidamente sem sacrificar a qualidade, a estabilidade e a produtividade, as equipes de DevOps:

Para obter uma visão geral das práticas de desenvolvimento que a Microsoft adotou para dar suporte à mudança para DevOps, consulte Como a Microsoft se desenvolve com DevOps.

Entregar

A entrega é o processo de implantação consistente e confiável de aplicativos em ambientes de produção, idealmente por meio de entrega contínua (CD).

Na fase de entrega, as equipes de DevOps:

  • Defina um processo de gerenciamento de liberação com etapas claras de aprovação manual.
  • Defina portões automatizados para mover aplicativos entre estágios até a liberação final para os clientes.
  • Automatize os processos de entrega para torná-los escaláveis, repetíveis, controlados e bem testados.

A entrega também inclui a implantação e configuração da infraestrutura fundamental do ambiente de entrega. As equipes de DevOps usam tecnologias como infraestrutura como código (IaC),contêineres e microsserviços para fornecer ambientes de infraestrutura totalmente governados.

As práticas de implantação seguras podem identificar problemas antes que eles afetem a experiência do cliente. Essas práticas ajudam as equipes de DevOps a entregar com frequência com facilidade, confiança e tranquilidade.

Os principais princípios e processos de DevOps que a Microsoft evoluiu para fornecer sistemas de entrega eficientes são descritos em Como a Microsoft fornece software com DevOps.

Operations

A fase de operações envolve a manutenção, o monitoramento e a solução de problemas de aplicativos em ambientes de produção, incluindo nuvens híbridas ou públicas como o Azure. As equipes de DevOps visam a confiabilidade do sistema, alta disponibilidade, segurança forte e tempo de inatividade zero.

A entrega automatizada e as práticas de implantação seguras ajudam as equipes a identificar e mitigar problemas rapidamente quando eles ocorrem. Manter a vigilância requer telemetria avançada, alertas acionáveis e visibilidade total dos aplicativos e sistemas subjacentes.

As práticas que a Microsoft usa para operar plataformas online complexas são descritas em Como a Microsoft opera sistemas confiáveis com DevOps.

Próximos passos

Outros recursos

Formação e Certificações