Relatório DORA 2019: Como melhorar o desempenho do DevOps



Alguns anos atrás, muitas organizações viam o DevOps como um experimento promissor, e não como uma abordagem básica para o desenvolvimento de software. Agora, o DevOps é um conjunto comprovado e poderoso de práticas e ferramentas de desenvolvimento e implantação que aceleram o lançamento de novos produtos e aumentam a produtividade. Mais importante, o efeito DevOps visa o crescimento geral dos negócios e aumenta sua lucratividade.

A equipe do Mail.ru Cloud Solutions traduziu o mais interessante do relatório Accelerate State of DevOps de 2019 , compilado por especialistas da DevOps Research & Assessment (DORA). O estudo envolveu 31.000 profissionais de todo o mundo. Vamos ver o que mudou no setor em 2019 e como uma empresa pode aumentar a eficiência da entrega de software.

Como o tamanho da indústria e da empresa afeta o DevOps


O estudo não identificou uma ligação entre o desempenho do DevOps e o setor da organização, com exceção do varejo, onde o desempenho foi um pouco melhor. Isso se deve, em particular, ao fato de os varejistas precisarem responder rapidamente às flutuações na demanda e nas necessidades dos clientes. Segundo o estudo, qualquer empresa, incluindo o setor financeiro e o setor público, pode atingir um alto nível no DevOps.

Os indicadores de desempenho do DevOps em empresas com mais de 5.000 funcionários foram menores do que em empresas com menos de 5.000 funcionários. Provavelmente, isso se deve ao fato de que em grandes organizações, processos maiores, controle mais rigoroso, arquitetura mais complicada dos sistemas de TI, o que introduz atrasos no processo de desenvolvimento e implementação de código. Ao mesmo tempo, os especialistas acreditam que a escala da empresa não impede o sucesso na criação de DevOps, apenas em alguns casos, pode exigir mais esforço.

Como avaliar o nível de DevOps em uma empresa


Os especialistas compararam os processos de DevOps com uma referência, dividindo os participantes da pesquisa em quatro grupos com os melhores, bons, médios e baixos indicadores.

Foram usadas quatro métricas principais para avaliar a eficácia do DevOps: o tempo necessário para concluir as alterações durante o desenvolvimento do software, a frequência da implantação, a frequência das falhas e o tempo de recuperação.

Quatro níveis de DevOps - avalie onde sua empresa está localizada:

Métrica de avaliação de desempenho de entrega de software para os principais serviços e aplicativos da empresa
Equipas com melhor pontuação
Boas equipes
Equipes Médias
Equipes de baixa pontuação
Frequência de implantação
Com que frequência uma empresa implanta código na produção ou o libera para os usuários finais.
Sob solicitação, várias implantações por dia
Uma vez por dia a uma vez por semana
De uma vez por semana a uma vez por mês
Uma vez por mês / vários meses
Alterar lead time
Quanto tempo leva para mudar de um teste para o software que funciona com sucesso na produção.
Em menos de um dia
De um dia a uma semana
De uma semana a um mês
Mês a seis meses
Tempo de recuperação do serviço
Quanto tempo leva para restaurar um serviço após um incidente ou bug que afeta os usuários.
Menos de uma hora
Durante o dia
Dentro de uma semana
Semana a mês
Alterar taxa de falha
Qual porcentagem de atualizações ou novos lançamentos leva a um serviço ruim e precisa ser corrigido.
0-15%
0-15%
0-15%
46-60%

O estudo revelou a seguinte tendência: o número de equipes com um alto nível de indicadores quase triplicou, passando de 7% de todos os entrevistados em 2018 para 20% em 2019.


Distribuição de equipes de desenvolvimento por níveis de desempenho.

Comparado às equipes do grupo de baixo desempenho, as equipes de DevOps de alto desempenho:

  1. Concluiu 208 vezes mais implantações de código.
  2. 106 vezes menos tempo gasto na implantação de código.
  3. 7 vezes menos chances de encontrar falhas.
  4. 2,604 vezes mais rápido para restaurar o software após falhas.

Além disso, as equipes de DevOps com pontuações altas têm duas vezes mais chances de atingir ou exceder suas métricas de desempenho organizacional do que as equipes com pontuações baixas.

Muitos especialistas pensam que é impossível conseguir um aumento em todos os indicadores ao mesmo tempo, devemos nos comprometer. Portanto, algumas pessoas acreditam que o aumento da velocidade de lançamento de versões pode afetar adversamente a confiabilidade do processo de entrega de software e a prestação de serviços. No entanto, estudos mostraram que a velocidade e a estabilidade dos resultados não são mutuamente exclusivas.

No crescimento do número de equipes de DevOps, não vejo nada de surpreendente, é lógico: a filosofia do DevOps agora é popular e o número de startups está crescendo.

Mas, na minha opinião, os especialistas escolheram parâmetros não muito corretos para avaliar a eficácia do DevOps.

Avaliando-o pela velocidade de implementação do código é pelo menos estranho. Isso se aplica apenas a empresas iniciantes, nas quais o parâmetro principal será a velocidade com que o produto será lançado no mercado e, frequentemente, o produto será exibido na forma bruta. Em tais circunstâncias, mecanismos que aceleram o desenvolvimento e a entrega da produção são vitais. Porém, para softwares bem estabelecidos, como financeiro ou médico, o parâmetro da frequência de falhas pode não existir - as falhas podem ser inaceitáveis.

Da mesma forma, com o tempo de recuperação de um serviço: para qualquer serviço desenvolvido, ele deve ser calculado em segundos e, para muitos serviços, um simples é inaceitável, por isso eles inventaram tecnologias de rolagem contínua (por exemplo, verde / azul).

Além disso, não se concentre no número de implantações de código - isso depende da necessidade e das competências da equipe de desenvolvimento. Se a implantação envolver adicionar novas funcionalidades, isso é uma coisa e se a correção dos erros cometidos nas implantações anteriores é completamente diferente.

Denis Romanenko, especialista freelancer Mail.ru Cloud Solutions

Como melhorar os processos de DevOps


O relatório apresenta duas áreas que ajudarão a melhorar o DevOps: melhorar a eficiência do desenvolvimento e entrega de software e melhorar a produtividade.


Cada uma das instruções inclui seus próprios componentes, melhorando o que você pode alcançar o objetivo desejado.

Segundo o relatório, a chave para a transformação digital é a cultura corporativa. As equipes de DevOps altamente eficazes precisam de uma cultura de confiança e segurança psicológica, um entendimento dos resultados do trabalho e objetivos claros. Esse ambiente permite que os membros da equipe tomem decisões informadas, expressem suas opiniões e sejam mais criativos.

Tecnologias em nuvem, entrega contínua, teste de recuperação de desastres e gerenciamento de mudanças também ajudarão a melhorar a eficiência do desenvolvimento e entrega de software. A produtividade da mão-de-obra pode ser aprimorada investindo em ferramentas fáceis de usar, reduzindo a dívida técnica, ou seja, reduzindo a porcentagem de código ineficiente e tecnologias obsoletas, organizando uma base de conhecimento corporativa e acesso a soluções externas.

Eu acho que a metodologia e a ideologia do DevOps são precisamente que esses processos não dependem de condições externas, como uma nuvem ou seu próprio hardware. A nuvem em si nada mais é do que uma ferramenta; em algum lugar ela ajudará, em algum lugar que dificultará ou não será procurada.

Denis Romanenko, especialista freelancer Mail.ru Cloud Solutions

Abaixo, veremos alguns dos componentes que melhoram o desempenho da equipe do DevOps.

A tecnologia em nuvem contribui para o sucesso do DevOps


Em 2019, mais e mais organizações estão escolhendo soluções em nuvem que aumentam significativamente a produtividade das equipes de DevOps.


Quais infraestruturas usam comandos do DevOps.

A DORA descobriu que 80% dos entrevistados hospedam aplicativos ou serviços essenciais em uma plataforma em nuvem . No entanto, apenas 29% dos entrevistados implementaram todas as cinco principais características da computação em nuvem no Instituto Nacional de Padrões e Tecnologia - esse é o padrão mais importante para avaliar o valor da nuvem no DevOps.

Recurso
Porcentagem Utilizada
Auto-atendimento sob demanda
Os consumidores podem fornecer automaticamente recursos de computação
conforme necessário, sem a participação do provedor.
57%
(+ 11% desde 2018)
Amplo acesso à rede
Os recursos de nuvem estão disponíveis em várias plataformas,
como telefones celulares, tablets, laptops e estações de trabalho.
60%
(+ 14% desde 2018)
Conjunto de recursos
Os recursos do provedor são combinados em um modelo de multilocatário, em que os recursos físicos e virtuais são atribuídos dinamicamente sob demanda.
58%
(+ 15% desde 2018)
Escalabilidade e elasticidade
Os recursos são dimensionados horizontal ou verticalmente sob demanda, são praticamente ilimitados e podem ser emitidos em qualquer quantidade a qualquer momento.
58%
(+135 desde 2018)
Transparência
Os sistemas em nuvem controlam, otimizam e relatam automaticamente o uso de recursos, dependendo do tipo de serviço: armazenamento e processamento de dados, quantidade de tráfego,
Contas de usuário ativas
62%
(+ 14% desde 2018)

A plataforma como serviço (PaaS) está se movendo cada vez mais para um modelo de implantação centrado em contêineres. As plataformas em nuvem simplificam a implantação do software, portanto, as equipes precisam se preocupar em executar o próprio código do aplicativo. A escala, o planejamento de recursos, a administração e a manutenção da infraestrutura também estão do lado dos fornecedores.

Para os provedores de nuvem, o padrão universal é o fornecimento de uma variedade de serviços: redes de máquinas virtuais, controle de identidade e acesso (IAM), armazenamento e bancos de dados, aprendizado de máquina, Internet das Coisas (IoT), soluções de contêineres, soluções de segurança e outros.

Os clientes dos provedores de nuvem pagam apenas os recursos que usam, o que garante transparência de custos, em contraste com os data centers tradicionais, nos quais é difícil ou impossível obter informações sobre o custo de desenvolvimento. Os entrevistados de empresas que atendem às características de nuvem listadas acima são 2,6 vezes mais precisos na estimativa do custo do trabalho de software, 2 vezes mais compreendem quais aplicativos consomem mais recursos e 1,65 vezes mais permanecem dentro do orçamento alocado para TI.

Às vezes, é mais lucrativo contratar um especialista competente e aproveitar as capacidades alocadas no data center do que pagar pela nuvem. Qual opção é melhor depende do perfil e da escala da empresa, da disponibilidade de sua própria equipe de especialistas e conhecimentos de TI. Por exemplo, é conveniente usar a nuvem no início de um negócio ou se a empresa não tiver seu próprio departamento de TI. Ao dimensionar, pode ser mais econômico conter toda ou parte da infraestrutura local.

Denis Romanenko, especialista freelancer Mail.ru Cloud Solutions

Práticas técnicas DevOps


Muitas organizações que desejam implementar o DevOps estão procurando um conjunto de instruções ou práticas recomendadas. No entanto, não existem empresas idênticas; portanto, quais práticas escolher dependem do estado atual dos negócios e de seus objetivos.

Ao mesmo tempo, existem orientações gerais que ajudam a melhorar a eficiência do DevOps: algumas são desenvolvidas no nível da equipe, outras requerem esforços no nível da organização.

Quais são as direções de crescimento para as equipes de DevOps em 2019:

Nível de organização
  • arquitetura fracamente acoplada
  • implementação de mudanças
  • suporte de código
Nível da equipe
  • integração contínua
  • automação de teste
  • automação de implantação
  • monitoramento
  • pipeline de desenvolvimento
No nível de equipe e organização
  • uso de serviços em nuvem
  • teste de recuperação de desastres

O estudo confirmou o impacto positivo da arquitetura fracamente acoplada no desempenho do DevOps.

Uma arquitetura fracamente acoplada ocorre quando as equipes podem testar, implantar e modificar sistemas de maneira independente, sob demanda, independentemente de outras equipes, sem suporte, recursos ou aprovação adicionais, com menos feedback. Isso permite que você trabalhe com mais eficiência, mas requer um alto nível de organização e gerenciamento.

Essa abordagem é possível apenas para startups e com algumas reservas. Outras empresas podem ter uma situação diferente. Um bom exemplo: bancário / fintech. Somente soluções proprietárias podem ser usadas lá, mas as práticas de DevOps serão aplicadas.

Denis Romanenko, especialista freelancer Mail.ru Cloud Solutions

As equipes bem-sucedidas de DevOps automatizam tudo


A integração e entrega contínuas (CI / CD) permitem levar serviços e aplicativos ao produto com menos custo e risco, além de manter lançamentos de acordo com os objetivos da organização.

Um CI / CD bem-sucedido também significa que as equipes podem implementar alterações na produção sob demanda, ver imediatamente o feedback sobre a qualidade da implantação, podem ser rapidamente elaboradas e o próximo ciclo de implantação pode ser aprimorado.

O relatório mostra que as equipes bem-sucedidas do DevOps investem em uma ampla gama de processos, práticas e ferramentas de suporte:

  • 92% usam ferramentas de montagem automatizadas;
  • 87% usam testes de unidade automatizados;
  • 57% estendem a automação a testes de aceitação;
  • 72% automatizam a implantação em ambientes de teste, 69% fazem o mesmo para implantação na produção;
  • 69% integram chatbots no processo de implantação;
  • 57% integram-se às ferramentas de monitoramento.

É importante escolher as ferramentas e a tecnologia certas.


Ao criar sistemas complexos e gerenciar infraestruturas críticas para os negócios, é importante escolher as seguintes tecnologias:

  • que são fáceis de usar durante a primeira conexão e em operação constante;
  • que ajudam a alcançar seus objetivos.

O relatório examinou as ferramentas usadas para implantar software via CI / CD e as ferramentas de automação de teste - essas são as tecnologias subjacentes ao DevOps.

Quais tecnologias usam os comandos do DevOps:

Tecnologia
Equipes de baixa pontuação
Equipes Médias
Boas equipes
Equipes de alta pontuação
Combinação de produtos proprietários, de código aberto e comerciais de caixas
30%
34%
32%
33%
Soluções em caixa de código-fonte aberto e altamente personalizadas
17%
8%
7%
10%
Soluções principalmente de código aberto e baseadas em caixa, com pequenos ajustes
14%
21%
18%
20%
Soluções Comerciais Principalmente In a Box
8%
12%
8%
4%
Desenvolvimento interno e soluções proprietárias para a empresa
20%
6%
5%
6%
Primeiro de tudo, código aberto com forte personalização
6%
7%
5%
12%
Primeiro código aberto com alguns ajustes
5%
12%
24%
15%

A conveniência das ferramentas afeta significativamente a capacidade da equipe de maximizar o valor da pilha de tecnologia selecionada: engenheiros com tecnologias fáceis de usar têm 1,5 vezes mais chances de pertencer a equipes com altas taxas.

Na minha opinião, esta tabela dá a sensação de que, para ser uma equipe bem-sucedida de DevOps, você precisa seguir o mod, e não a tarefa técnica.

Um especialista competente seleciona as ferramentas para a tarefa e não vice-versa. Para resolver qualquer problema, sempre existem várias ferramentas e abordagens. Uma ferramenta específica é determinada por: os detalhes da tarefa; quão familiar a equipe está com essa ferramenta (quão grande é o limite de entrada se a ferramenta for nova); componente financeiro, se houver.

Denis Romanenko, especialista freelancer Mail.ru Cloud Solutions

Recuperação de desastre


Cada organização cujo trabalho depende da operação do software deve ter um plano de recuperação de desastres . O relatório mostra que tipos de teste de tolerância a desastres são usados ​​por várias empresas.

Que tipos de testes as empresas usam para recuperação de desastres

Tipo de teste
Equipes de baixa pontuação
Equipes Médias
Boas equipes
Equipes de alta pontuação
Média
Testes que não afetam sistemas reais
35%
26%
27%
30%
28%
Failover de infraestrutura (incluindo data center)
27%
43%
34%
38%
38%
Teste de falha de aplicativo
25%
46%
41%
49%
43%
Simulação de incidentes com sistemas de teste com defeito
18%
22%
23%
29%
23%
Modelando incidentes com sistemas de trabalho com mau funcionamento
18%
11%
12%
13%
12%
Criando automação e sistemas que interrompem
sistemas de produção em uma base regular e contínua
9%
8%
7%
9%
8%

Apenas 40% dos entrevistados realizam testes de recuperação de desastres anualmente usando um ou mais desses métodos. Ao mesmo tempo, as empresas que realizam testes de recuperação de desastres têm um nível mais alto de disponibilidade de serviço. O relatório mostra que as equipes de DevOps com alto desempenho têm 1,4 vezes mais chances de levar em consideração os dados de teste de recuperação de desastre nos processos de desenvolvimento e implantação de software.

É importante que as equipes de DevOps tenham acesso a informações


Manter o desempenho dos comandos do DevOps em um nível alto ajudará na recuperação fácil de informações para resolver problemas. Isto é especialmente verdade em um ambiente tecnológico moderno, que consiste em sistemas complexos.

As fontes dessas informações podem ser divididas em dois grupos:

  1. Fontes internas : documentação da empresa para criar e manter código, bases de conhecimento corporativas, repositórios e muito mais. As equipes de DevOps que usavam fontes internas de conhecimento eram 1,73 vezes mais produtivas.
  2. Fontes externas : mecanismos de pesquisa e reposição de pilhas. As equipes externas de DevOps foram 1,67 vezes mais produtivas. As tecnologias externas oferecem uma grande vantagem para aprendizado e crescimento, especialmente o uso de nuvens públicas e ferramentas de código aberto.

É importante que as empresas reduzam a dívida técnica


A dívida técnica inclui código ou sistemas com bugs conhecidos, mas não corrigidos; cobertura de teste insuficiente; código ou design de baixa qualidade; artefatos que não são usados, mas não excluídos; implementações que a equipe não pode apoiar efetivamente; tecnologia desatualizada; documentação incompleta ou desatualizada.

Especialistas descobriram que a dívida técnica afeta negativamente o desempenho do DevOps. Equipes com alta dívida técnica foram 1,6 vezes menos produtivas. As equipes com altas taxas tiveram uma probabilidade 1,4 vezes maior de ter baixa dívida técnica.

Principais descobertas da pesquisa DevOps


  1. A porcentagem de equipes de DevOps de alto desempenho quase triplicou em 20%. Isso significa que os negócios entendem a promessa de práticas para melhorar o desenvolvimento e a entrega de software; as empresas estão introduzindo ativamente o DevOps em seus departamentos de TI.
  2. A rápida entrega de aplicativos e serviços está no centro da transformação tecnológica e organizacional. A velocidade e a estabilidade dos lançamentos aumentam o lucro e a satisfação do cliente.
  3. A tecnologia em nuvem continua sendo a chave para alcançar as equipes de DevOps de alto desempenho. O uso de nuvens permite organizar a entrega do software na velocidade certa, fornece disponibilidade, escalabilidade e produtividade da infraestrutura.
  4. A eficácia das equipes de DevOps pode ser melhorada se você prestar atenção à produtividade dos membros da equipe, fornecer uma atmosfera psicológica confortável e o uso de ferramentas convenientes.
  5. Aumentar a velocidade de lançamento de lançamentos com a abordagem correta não afeta a estabilidade dos serviços e aplicativos da empresa.

Source: https://habr.com/ru/post/pt483444/


All Articles