Assim como mencionado no artigo a adoção do DevOps e seu paradoxo com o Xadrez a implementação do DevOps é um processo complexo.

Existe um modelo de capacidade apresentado no State of DevOps Report 2014, que foi evoluindo em 4 anos, ou seja, até 2017, cujos autores tinham o grande desafio de entender o que é uma organização de alta performance e quais são os fatores e variáveis que podem influenciar para conseguir esta evolução. Eles determinaram 24 práticas chaves, presentes em estas organizações de alto desempenho, que no cenário particular, podem estar em diferentes estados de capacidade.

Quais sãos essas 24 práticas? Segue a lista a seguir com uma breve explicação sobre cada uma!

Capacidades da entrega contínua

hnz-consultoria-e-treinamentos-blog-como-implementar-devops-as-24-praticas-para-a-adocao-do-devops-capacidades-da-entrega-continua

Use o controle de versão para todos os artefatos de produção

O controle de versão é o uso de um sistema de controle de versão, como GitHub ou Subversão, para todos os artefatos de produção, incluindo código de aplicativo, configurações de aplicativos, configurações do sistema e scripts para automatizar a construção e configuração do ambiente.

Automatização do processo de implantação

A automação de implantação é o grau em que as implantações são totalmente automatizadas e não requerem intervenção manual.

Implementar a integração contínua

A integração contínua (IC) é o primeiro passo para a entrega contínua. Esta é uma prática de desenvolvimento onde o código é regularmente verificado, e cada check-in desencadeia um conjunto de testes rápidos para descobrir regressões graves, que os desenvolvedores corrigem imediatamente. O processo de CI cria compilações canônicas e pacotes que são finalmente implantados e lançados.

Uso métodos de desenvolvimento baseados em trunk

O desenvolvimento baseado em trunk tem se mostrado um preditor de alto desempenho no desenvolvimento e entrega de software. Caracteriza-se por menos de três ramos ativos em um repositório de código; branch  e forks com vida muito curta (por exemplo, menos de um dia) antes de serem fundidos em mestre; e as equipes de aplicativos raramente ou nunca têm períodos de “bloqueio de código” quando ninguém pode verificar o código ou fazer solicitações de tração devido à fusão de conflitos, congelamentos de código ou fases de estabilização.

Implementação de automação de testes

A automação de testes é uma prática onde os testes de software são executados automaticamente (não manualmente) continuamente durante todo o processo de desenvolvimento. Suítes de teste eficazes são confiáveis — ou seja, os testes encontram falhas reais e só passam pelo código liberado. Observe que os desenvolvedores devem ser os principais responsáveis pela criação e manutenção de suítes de teste automatizadas.

Suporte ao gerenciamento de dados de teste

Os dados do teste exigem uma manutenção cuidadosa, e o gerenciamento de dados de teste está se tornando uma parte cada vez mais importante dos testes automatizados. Práticas eficazes incluem ter dados adequados para executar seu conjunto de testes, a capacidade de adquirir dados necessários sob demanda, a capacidade de condicionar seus dados de teste em seu pipeline e os dados que não limitam a quantidade de testes que você pode executar. Nós alertamos, no entanto, que as equipes devem minimizar, sempre que possível, a quantidade de dados de teste necessários para a execução de testes automatizados.

Mudança para a esquerda da segurança

Integrar a segurança nas fases de projeto e teste do processo de desenvolvimento de software é fundamental para impulsionar o desempenho em TI. Isso inclui a realização de revisões de segurança de aplicativos, incluindo a equipe do Infosec no processo de design e demonstração de aplicativos, o uso de bibliotecas e pacotes de segurança pré-aprovados e os recursos de segurança de teste como parte do conjunto de testes automatizado.

Implementação da entrega contínua (CD)

O CD é uma prática de desenvolvimento onde o software está em um estado implantável durante todo o seu ciclo de vida, e a equipe prioriza manter o software em um estado implantável ao longo de trabalhar em novos recursos. Feedback rápido sobre a qualidade e a capacidade de implantação do sistema está disponível para todos os membros da equipe, e quando eles recebem relatórios de que o sistema não é implantável, as correções são feitas rapidamente. Finalmente, o sistema pode ser implantado para usuários finais ou de produção a qualquer momento, sob demanda.

Capacidades de arquitetura

hnz-consultoria-e-treinamentos-blog-como-implementar-devops-as-24-praticas-para-a-adocao-do-devops-capacidades-de-arquitetura

Uso de uma arquitetura fracamente acoplada

Isso afeta até que ponto uma equipe pode testar e implantar seus aplicativos sob demanda, sem exigir orquestração com outros serviços. Ter uma arquitetura fracamente acoplada permite que suas equipes trabalhem de forma independente, sem depender de outras equipes para suporte e serviços, o que, por sua vez, permite que eles trabalhem rapidamente e entreguem valor à organização.

Arquiteto para equipes empoderadas

A pesquisa mostra que as equipes que podem escolher quais ferramentas usar fazem melhor na entrega contínua e, por sua vez, impulsionam melhor desenvolvimento de software e desempenho de entrega. Ninguém sabe melhor do que os praticantes o que eles precisam para ser eficaz.

Capacidades de produtos e processos

hnz-consultoria-e-treinamentos-blog-como-implementar-devops-as-24-praticas-para-a-adocao-do-devops-capacidades-de-produtos-e-processos-final

Recolha e implemente o feedback do cliente

A pesquisa descobriu que se as organizações buscam ativamente e regularmente o feedback dos clientes e incorporam esse feedback no design de seus produtos é importante para o desempenho de entrega de software.

Torne o fluxo de trabalho visível através do fluxo de valor

As equipes devem ter uma boa compreensão e visibilidade sobre o fluxo de trabalho desde o negócio até os clientes, incluindo o status de produtos e recursos. A pesquisa descobriu que isso tem um impacto positivo no desempenho de TI.

Trabalhe em pequenos lotes

As equipes devem cortar o trabalho em pequenos pedaços que podem ser concluídos em uma semana ou menos. A chave é ter trabalho decomposto em pequenas características que permitam o desenvolvimento rápido, em vez de desenvolver características complexas em banch e liberá-las com pouca frequência. Essa ideia pode ser aplicada no recurso e no nível do produto. (Um MVP é um protótipo de um produto com recursos suficientes para permitir o aprendizado validado sobre o produto e seu modelo de negócios.) Trabalhar em pequenos lotes permite tempos de lead curtos e loops de feedback mais rápidos.

Promover e permitir a experimentação da equipe

A experimentação em equipe é a capacidade dos desenvolvedores de experimentar novas ideias e criar e atualizar especificações durante o processo de desenvolvimento, sem precisar de aprovação de fora da equipe, o que lhes permite inovar rapidamente e criar valor. Isso é particularmente impactante quando combinado com o trabalho em pequenos lotes, incorporando feedback do cliente e tornando o fluxo de trabalho visível.

Capacidades de gerenciamento lean e monitoramento

hnz-consultoria-e-treinamentos-blog-como-implementar-devops-as-24-praticas-para-a-adocao-do-devops-capacidades-de-gerenciamento-lean-e-monitoramento

Tenha um processo leve de aprovação de mudanças

A pesquisa mostra que um processo leve de aprovação de mudanças com base na revisão por pares (programação de pares ou revisão de código no time) produz desempenho superior de TI do que o uso de comitê de aprovação de mudanças (CABs).

Monitore através de aplicativos e infraestrutura para informar as decisões de negócios

Use dados de ferramentas de monitoramento de aplicativos e infraestrutura para agir e tomar decisões de negócios. Isso vai além de enviar mensagens as pessoas quando as coisas dão errado.

Verifique a saúde do sistema de forma proativa

Monitorar a saúde do sistema, usando avisos de limiar e taxa de alteração, para permitir que as equipes detectem e atenuem preventivamente os problemas.

Melhorar processos e gerenciar o trabalho com limites de trabalho em processo (WIP)

O uso de limites de trabalho em processo para gerenciar o fluxo de trabalho é bem conhecido na comunidade Lean. Quando usado efetivamente, isso impulsiona a melhoria do processo, aumenta o throughput e torna as restrições visíveis no sistema.

Visualize o trabalho para monitorar a qualidade e se comunicar em toda a equipe

Radiadores de informação visuais, como painéis ou sites internos, usados para monitorar a qualidade e o trabalho em processo têm sido mostrados para contribuir para o desempenho de entrega de software.

Capacidades culturais

hnz-consultoria-e-treinamentos-blog-como-implementar-devops-as-24-praticas-para-a-adocao-do-devops-capacidades-culturais-final

Apoie uma cultura generativa (como descrito por Westrum)

Esta medida da cultura organizacional baseia-se em uma tipologia desenvolvida por Ron Westrum, sociólogo que estudou sistemas complexos de segurança nos domínios da aviação e da saúde. Nossa pesquisa descobriu que essa medida de cultura é preditiva do desempenho de TI, desempenho organizacional e diminuição do burnout. As marcas desta medida incluem bom fluxo de informações, alta cooperação e confiança, ponte entre equipes e inquérito consciente.

Incentivar e apoiar o aprendizado

O aprendizado, em sua cultura, é considerado essencial para o progresso contínuo? Aprender é considerado um custo ou um investimento? Esta é uma medida da cultura de aprendizagem de uma organização.

Apoie e facilite a colaboração entre as equipes

Isso reflete o quão bem as equipes, que tradicionalmente têm sido fechadas em silos, interagem em desenvolvimento, operações e segurança da informação.

Fornecer recursos e ferramentas que tornem o trabalho significativo

Esta medida particular de satisfação no trabalho é sobre fazer um trabalho desafiador e significativo, e ser capacitado para exercer suas habilidades e julgamento. Trata-se também de receber as ferramentas e recursos necessários para fazer bem o seu trabalho

Apoie ou incorpore liderança transformadora

A liderança transformadora apoia e amplifica o trabalho técnico e de processo tão essencial nos DevOps. É composta por cinco fatores: visão, estimulação intelectual, comunicação inspiradora, liderança solidária e reconhecimento pessoal.

Ref: Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing:  Nicole Forsgren, Jez Humble, and Gene Kim

Leave a Reply