O Livro Projeto Phoenix apresenta as três maneiras como o conjunto de princípios subjacentes dos quais todos os comportamentos e padrões observados do DevOps são derivados. No artigo de hoje vamos discorrer sobre os principais pontos de cada uma dessas maneiras.
Primeira maneira
3 maneiras DevOps
A primeira maneira permite um rápido fluxo de trabalho da esquerda para a direita do desenvolvimento às operações ao cliente. Além disso enfatiza o desempenho de todo o sistema, em oposição ao desempenho de um silo específico de trabalho ou departamento.
Para intensificar o fluxo, são necessários os seguintes pontos:
Tornar o trabalho visível
Uma diferença significativa entre a tecnologia e os fluxos de valor de fabricação de produtos é que o trabalho é invisível. Para nos ajudar a ver onde o trabalho está fluindo bem e onde o trabalho está na fila ou parado, precisamos tornar o trabalho o mais visível possível. Com isso também podemos gerenciar o trabalho para que ele flua da esquerda para a direita o mais rápido possível e podemos medir o prazo de entrega de quando um cartão é colocado no quadro e quando ele é movido para a coluna “Concluído”.
Ao colocar todo o trabalho para cada centro de trabalho em filas e torná-lo visível, todas as partes interessadas podem priorizar mais facilmente o trabalho no contexto de objetivos globais. Isso permite que cada centro de trabalho execute uma única tarefa no trabalho de maior prioridade até sua conclusão, aumentando a taxa de transferência.
Limitar o trabalho em andamento (WIP)
O trabalho diário torna-se dominado pela prioridade do dia, frequentemente com solicitações de trabalho urgente em todos os mecanismos de comunicação possíveis, incluindo sistemas de emissão de tickets, chamadas de interrupção, e-mails, telefonemas, salas de bate-papo e escalonamentos de gerenciamento.
As interrupções na fabricação também são altamente visíveis e caras, muitas vezes exigindo a interrupção do trabalho atual e descartando qualquer trabalho incompleto em andamento para iniciar o novo trabalho. Esse alto nível de esforço desencoraja interrupções frequentes.
Estudos demonstraram que o tempo para concluir tarefas simples, diminui significativamente quando existe multitarefa. Obviamente, como nosso trabalho no fluxo de valor da tecnologia é muito mais complexo cognitivamente, os efeitos da multitarefa no tempo do processo são muito piores
Reduzir o tamanho do lote do trabalho
Outro componente essencial para criar um fluxo suave e rápido é executar trabalhos em lotes pequenos.
Antes da revolução da fabricação enxuta, era prática comum fabricar em grandes tamanhos de lotes (ou tamanhos de lotes), especialmente para operações em que a configuração ou a alternância de tarefas demorava ou era cara.
Uma das principais lições do Lean é que, para reduzir os prazos de entrega e aumentar a qualidade, precisamos nos esforçar para reduzir continuamente os tamanhos dos lotes. O limite inferior teórico para o tamanho do lote é o fluxo de peça única, onde cada operação é executada uma unidade de cada vez.
Reduzir o número de transferências
O trabalho que passa de equipe para equipe, exige todo tipo de comunicação: solicitação, especificação, sinalização, coordenação e, muitas vezes, priorização, agendamento, eliminação de conflitos, testes e verificação. Cada uma dessas etapas é uma fila potencial onde o trabalho vai esperar quando dependemos de recursos que são compartilhados entre diferentes fluxos de valor (por exemplo, operações centralizadas).
Mesmo nas melhores circunstâncias, algum conhecimento é inevitavelmente perdido a cada entrega. Com entregas suficientes, o trabalho pode perder completamente o contexto do problema que está sendo resolvido ou o objetivo organizacional sendo apoiado. Por exemplo, um administrador de servidor pode ver um ticket recém-criado solicitando que as contas de usuário sejam criadas, sem saber para qual aplicativo ou serviço é, porque ele precisa ser criado, quais são todas as dependências ou se é realmente um trabalho recorrente.
Para mitigar esses tipos de problemas, nos esforçamos para reduzir o número de entregas, seja automatizando partes significativas do trabalho ou automatizando para entregar valor ao próprio cliente, em vez de ter que ser constantemente dependente dos outros. Como resultado, aumentamos o fluxo reduzindo o tempo que nosso trabalho gasta esperando na fila, bem como a quantidade de tempo desperdiçado do de valor agregado.
Identificar e mitigar restrições
Para reduzir os prazos de entrega e aumentar a produtividade, precisamos identificar continuamente as restrições de nosso sistema e melhorar sua capacidade de trabalho. ” Se melhorarmos um centro de trabalho que está posicionado antes da restrição, o trabalho simplesmente se acumula no gargalo ainda mais rápido, esperando que o trabalho seja executado pelo centro de trabalho gargalhado”.
Por outro lado, se melhorarmos o núcleo de trabalho posicionado após o gargalo, ele permanece frouxo, aguardando trabalho para eliminá-lo. Como solução, o Dr. Goldratt definiu as “cinco etapas de foco”:
- Identifique a restrição do sistema.
- Decida como explorar a restrição do sistema.
- Subordine tudo o mais às decisões acima.
- Eleve a restrição do sistema.
- Se nas etapas anteriores uma restrição foi quebrada, volte para a etapa um, mas não permita que a inércia cause uma restrição no sistema.
Eliminar atritos e desperdícios no fluxo de valor
Shigeo Shingo, um dos pioneiros do Sistema Toyota de Produção, acreditava que os resíduos constituíam a maior ameaça à viabilidade dos negócios – a definição comumente usada no Lean é “o uso de qualquer material ou recurso além do que o cliente exige e está disposto a pagar. Ele definiu sete tipos principais de resíduos de fabricação: estoque, superprodução, processamento extra, transporte, espera, movimentação e defeitos.
A primeira maneira tem como foco a compilação, integração, teste e implantação. Com isso ela proporciona um aumento da qualidade do trabalho, aumento do rendimento e aumento da competitividade do negócio.
A segunda maneira
A segunda maneira exige que ampliem os feedbacks para evitar que os problemas ocorram novamente ou permitam uma detecção e recuperação mais rápidas.
Os seus pontos principais são os seguintes:
Trabalho com segurança em sistemas complexo
Uma das características definidoras de um sistema complexo é que ele desafia a capacidade a em ver o sistema como um todo e entender como todas as peças se encaixam.
Sistemas complexos geralmente têm um alto grau de interconectividade de componentes fortemente acoplados, e o comportamento no nível do sistema não pode ser explicado apenas em termos do comportamento dos componentes do sistema. Portanto, como a falha é inerente e inevitável em sistemas complexos, devemos projetar um sistema de trabalho seguro, seja na manufatura ou na tecnologia, onde possamos realizar o trabalho sem medo, confiantes de que quaisquer erros serão detectados rapidamente, muito antes de causar resultados catastróficos, como acidentes de trabalho, defeitos no produto ou impacto negativo no cliente.
Projetar sistemas perfeitamente seguros provavelmente está além de nossas habilidades, mas podemos torná-lo mais seguro para trabalhar em sistemas complexos quando as quatro condições a seguir são atendidas:
- Trabalho complexo é gerenciado para que problemas de design e operações sejam revelados
- Os problemas estão repletos e resolvidos, resultando na construção rápida de novos conhecimentos
- Novo conhecimento local é explorado globalmente em toda a organização
- Líderes criam outros líderes que crescem continuamente esses tipos de recursos
Ver os problemas à medida que ocorrem
O objetivo a ser alcançado com esse ponto é o de aumentar o fluxo de informações em nosso sistema de tantas áreas quanto possível, mais cedo, mais rápido, mais barato e com a maior clareza possível entre causa e efeito.
Quanto mais suposições pudermos invalidar, mais rápido podemos encontrar e corrigir problemas, aumentando nossa resiliência, agilidade e capacidade de aprender e inovar. O feedback e os loops de antecipação fazem com que os componentes de um sistema se reforcem ou se neutralizem.
No fluxo de valor da tecnologia, geralmente obtemos resultados ruins devido à ausência de feedback rápido. Isso inclui a criação de processos automatizados de compilação, integração e teste, para que possamos detectar imediatamente quando uma mudança foi introduzida que nos tira de um estado corretamente implantável e funcionando.
Também criamos telemetria abrangente, para que possamos ver como todos os componentes do sistema estão operando no ambiente de produção, para que possamos detectar rapidamente quando eles não estão operando conforme o esperado.
Aglomerar para construir novos conhecimentos
Quando os problemas ocorrem, devemos aglomerar, mobilizando quem for necessário para resolver o problema. “Ao fazê-lo eles constroem um conhecimento cada vez mais profundo sobre como gerenciar os sistemas para realizar nosso trabalho, convertendo a inevitável ignorância inicial em conhecimento”.
O modelo desse princípio é a corda Toyota Andon. Na fábrica da Toyota, acima de cada centro de trabalho há um cordão que todo trabalhador e gerente é treinado para puxar quando algo dá errado; por exemplo, quando uma peça está com defeito, quando uma peça necessária não está disponível ou mesmo quando o trabalho leva mais tempo do que o documentado.
A aglomeração é necessária pelos seguintes motivos:
- Impede que o problema avance rio abaixo, o custo e o esforço para repará-lo aumentam exponencialmente e a dívida técnica é permitida a acumulação.
- Impede que se inicie um novo trabalho, o que provavelmente introduzirá novos erros no sistema.
- Se o problema não for solucionado, o centro de trabalho poderá ter o mesmo problema na próxima operação (por exemplo, cinquenta e cinco segundos depois), exigindo mais correções e trabalho.
A qualidade próxima da fonte
Podemos inadvertidamente perpetuar sistemas de trabalho inseguros devido à maneira como reagimos a acidentes e incidentes. Em sistemas complexos, adicionar mais etapas de inspeção e processos de aprovação realmente aumenta a probabilidade de falhas futuras.
A eficácia dos processos de aprovação diminui à medida que afastamos a tomada de decisões de onde o trabalho é realizado. Fazer isso não apenas reduz a qualidade das decisões, mas também aumenta nosso tempo de ciclo, diminuindo a força do feedback entre causa e efeito e reduzindo nossa capacidade de aprender com sucessos e falhas. Isso pode ser visto até em sistemas menores e menos complexos.
Quando os sistemas burocráticos de comando e controle de cima para baixo se tornam ineficazes, geralmente ocorre porque a variação entre “quem deve fazer alguma coisa” e “quem está realmente fazendo alguma coisa” é muito grande, devido à clareza e à atualidade insuficientes.
Otimize o trabalho mais adiante
De acordo com Lean, o cliente mais importante é o próximo passo a frente. Otimizar nosso trabalho para eles exige que tenhamos empatia por seus problemas, a fim de identificar melhor os problemas de design que impedem o fluxo rápido e suave.
No fluxo de valor da tecnologia, otimizamos os centros de trabalho a diante projetando para operações, onde os requisitos não funcionais operacionais (por exemplo, arquitetura, desempenho, estabilidade, testabilidade, configurabilidade e segurança) são priorizados tanto quanto os recursos do usuário. Ao fazer isso, criamos qualidade na fonte, provavelmente resultando em um conjunto de requisitos não funcionais codificados que podemos integrar proativamente em todos os serviços que criamos.
Através dos pontos acima, se cria qualidade na fonte e se gera e integra conhecimento onde é necessário. Com eles também são permitidos criar sistemas de trabalho cada vez mais seguros, onde os problemas são encontrados e corrigidos muito antes de ocorrer uma falha grave e o rápido e constante fluxo de feedback da direita para a esquerda em todas as etapas do fluxo de valor.
A terceira maneira
3 maneiras DevOps
Na terceira maneira se cria sistemas de trabalho cada vez mais seguros, sendo mais aptos a assumir riscos e realizar experiências que ajudam a aprender mais rápido do que a concorrência e ganhar mercado.
Se cria um sistema de trabalho para pode multiplicar os novos conhecimentos, transformando as descobertas locais em melhorias globais e concentra-se em criar uma cultura de aprendizado e experimentação contínuos.
Seus principais pontos são os seguintes:
Estimule uma aprendizagem organizacional e uma cultura de segurança
Quando trabalhamos dentro de um sistema complexo, por definição, é impossível prever perfeitamente todos os resultados de qualquer ação que realizamos. É isso que contribui para resultados e acidentes inesperados, ou mesmo catastróficos, em nosso trabalho diário, mesmo quando tomamos precauções e trabalhamos com cuidado.
Patológico | Burocrático | Generativo |
Orientado para o poder | Orientado por regras | Orientado para o desempenho |
Baixa cooperação | Cooperação modesta | Alta cooperação |
Mensageiros são destruídos | Mensageiros são tolerados | Mensageiros treinados |
Responsabilidades evitadas | Responsabilidades são compartimentadas | Responsabilidades são compartilhadas |
Novas ideais são esmagadas | Novas ideias criam problemas | Novas ideias são bem-vindas |
A ligação entre equipes é desencorajada | A ligação entre equipes permitida. Mas desencorajada | A ligação entre equipes é recompensada |
As falhas são encobertas | A organização é justa e misericordiosa | A falha causa investigação |
Melhoria do trabalho diário
As equipes geralmente não são capazes ou não estão dispostas a melhorar os processos em que operam. O resultado não é apenas que eles continuam sofrendo com os problemas atuais, mas também sofrem com o tempo.
No Toyota Kata, na ausência de melhorias, os processos não permanecem os mesmos – devido ao caos e à entropia, os processos realmente se degradam com o tempo.
No fluxo de valor da tecnologia, quando evitamos corrigir nossos problemas, contando com soluções diárias, nossos problemas e dívidas técnicas se acumulam até tudo o que estamos fazendo é executar soluções alternativas, tentando evitar desastres, sem ciclos remanescentes para o trabalho produtivo.
Mike Orzen, autor de Lean IT, observou: “Ainda mais importante que o trabalho diário é a melhoria do trabalho diário”.
Descobertas locais em melhorias globais
Quando novas aprendizagens são descobertas localmente, também deve haver algum mecanismo para permitir que o restante da organização use e se beneficie desse conhecimento.
Quando equipes ou indivíduos têm experiências que criam conhecimento, nosso objetivo é converter esse conhecimento tácito (conhecimento difícil de transferir para outra pessoa por meio de anotação ou verbalização) em conhecimento explícito e codificado, que se torna a experiência de outra pessoa através da prática.
No fluxo de valor da tecnologia, precisamos criar mecanismos para criar conhecimento global, como tornar todos os nossos relatórios post-mortem sem culpa, pesquisáveis por equipes que tentam resolver problemas semelhantes e criar repositórios de código-fonte compartilhados que abrangem toda a organização, onde compartilhados códigos, bibliotecas e configurações que incorporam o melhor conhecimento coletivo de toda a organização podem ser facilmente utilizados.
Injetar resiliência em nosso trabalho diário
Anti-fragilidade: padrão emergente que resulta de tipos de rituais de aprimoramento não apenas melhora o desempenho, mas também melhora a resiliência, porque a organização está sempre em um estado de tensão e mudança.
No fluxo de valor da tecnologia, podemos introduzir o mesmo tipo de tensão em nossos sistemas, buscando sempre reduzir os prazos de implantação, aumentar a cobertura do teste, diminuir o tempo de execução do teste e até re-arquitetar, se necessário, para aumentar a produtividade do desenvolvedor ou aumentar a confiabilidade.
Também podemos realizar exercícios do dia do jogo, onde ensaiamos falhas de grande escala, como desativar data centers inteiros. Ou podemos injetar falhas de escala cada vez maiores no ambiente de produção (como o famoso “Chaos Monkey” da Netflix, que mata processos e calcula servidores de produção aleatoriamente) para garantir que somos tão resistentes quanto queremos.
Liderança reforçam a cultura do aprendizado
O papel do líder é criar as condições para que sua equipe possa descobrir a grandeza em seu trabalho diário. Em outras palavras, criar grandeza requer líderes e trabalhadores, cada um dos quais depende mutuamente.
Os líderes devem elevar o valor do aprendizado e da resolução disciplinada de problemas.
Esses são os princípios que permitem a criação constante de conhecimento individual, que é transformado em conhecimento organizacional e de equipe. A terceira maneira permite a criação de uma cultura generativa de alta confiança que apoia uma abordagem dinâmica, disciplinada e científica para a experimentação e o cuidado do risco, facilitando a criação de aprendizagem organizacional
Se inscreva na nossa newsletter e receba toda semana conteúdos sensacionais sobre DevOps! Clique aqui!
Gostaria de saber mais sobre tema? Então confira o vídeo que preparamos para você!
3 maneiras DevOps