Esse é mais um artigo da nossa série sobre DEVOPS (no fim da página tem o link dos demais), nesse texto vamos falar como podemos usar o Cynefin para avaliar se realmente estamos evoluindo com a adoção do devops ou apenas rasgando dinheiro.
DEVOPS – Eliminando complexidades
Já li diversos livros, artigos, estudos e cases sobre devops. E um dia desses tive que revisitar vários deles para achar algumas soluções para alguns desafios que estou enfrentando junto a um cliente, e uma coisa me chamou muita atenção. Comecei a reparar que em vários desses textos era comum eu encontrar palavras como complexo, complexidade, simplificar e clarear. E normalmente elas eram utilizadas para definir estados atuais, e futuros desejados de processos e tarefas que encontramos num fluxo de valor de desenvolvimento de software. E automaticamente eu fiz um paralelo com Cynefin e pra mim ficou muito claro que o DEVOPS fala muito sobre como olhar para processos e atividades inerentes ao desenvolvimento de software, que atualmente podem estar nos domínios complicado, complexo e até mesmo caótico e levá-los para o domínio claro. Vamos ver alguns exemplos.
Antes de continuar a leitura, se você não conhece o Cynefin leia esse artigo do meu amigo Leandro Sanches, alias ele tem uma série inteira sobre o assunto, vale a pena conferir
Sexta from Hell
Já trabalhei numa equipe, que só fazia implantação em produção às sextas-feiras, e nós carinhosamente as apelidamos de Sexta from Hell. E realmente quando tínhamos mudança programada era o inferno na terra, todos os tipos de problemas imagináveis aconteciam, não importava se as mudanças eram grandes ou apenas uma pequena alteração no sistema, os problemas simplesmente apareciam de todos os lados, até componentes que nem tinham sido alterados paravam de funcionar. Infelizmente não foi nessa equipe que tive meu primeiro contato com DEVOPS, e sofremos com esse sistema por quase 3 anos, até que ele foi descontinuado. Nesse dia todo o time fez um happy hour para comemorar, mas foi o happy hour, mas isso é história para outra hora.
Processo de implantação
Grande parte dos processos de implantação que tenho visto apresentam cenários parecidos com o que relatei, ou às vezes um pouco melhor, não tem tantos problemas mas depende de alguns especialistas para que ocorra com sucesso, pois caso dê algum tipo de problema somente uma ou duas pessoas tem conhecimento suficiente para resolver.
Se olharmos para o Cynefin podemos então definir que normalmente os processos de implantação estão entre os domínios complexo e complicado. No case que falei acima com toda certeza o nosso processo estava no domínio complexo, nós não sabíamos exatamente o que iria acontecer, cada implantação era como se fosse a primeira, tínhamos que realizar a mudança, identificar o que aconteceu fazer uma análise, definir mais dois ou três passos, executar e voltar tudo de novo.
Mas já passei por times que tinham cenários mais controlados, sabíamos o que deveria ser feito, os engenheiros mais experientes do time ao montar o plano de mudanças, conseguiam prever boa parte dos problemas dado os componentes que seriam alterados, e apesar de ainda termos bastante problemas, o time conseguia rapidamente analisar, identificar causa e efeito e resolver os problemas. Neste caso vemos que temos um processo que está no domínio complicado do framework Cynefin, agora vamos ver como seria uma visão devops.
Implantação Devops
Quando eu olho para tudo que o devops nos trás sobre esse assunto, pra mim fica muito claro que o grande desafio é como fazemos para levar esses processos que estão no complexo e no complicado para o domínio Claro. Isso quer dizer que nosso processo de implantação deveria usar as melhores práticas, ser repetível, podendo ser executado por qualquer pessoa do time, de preferência ao clique de um botão. E fazendo isso conseguimos trazer aqueles processos de implantação extremamente complexos para um cenário muito mais controlado ou seja trazemos ele pro domínio Claro do Cynefin.
Resolvam ou cabeças vão rolar
Por quase todas as empresas que passei eu vi pelo menos uma vez a empresa enfrentar uma crise onde o sistema está totalmente inoperante e ninguém sabe ao certo o que aconteceu. E por mais que tenham toda equipe de TI concentrada, os melhores especialistas, camada gerencial, fornecedores e quem mais possa ajudar, ninguém sabe o que fazer ao certo. A empresa vira um caos, trabalhei em empresas que por sua notoriedade o caso virou notícia e foi parar até em jornais. Podemos dizer então, e o que vai de encontro com o domínio do cynefin, estamos num verdadeiro CAOS. E dependendo da cultura dessas empresas ouvi mais de uma vez a frase, “A diretoria já falou que se esse sistema não voltar cabeças vão rolar”. Só para colocar aquela pimentinha a mais no desespero já instaurado.
Resolução de problemas em produção
Claro que estou pegando casos extremos, nem todo problema em produção leva o time ao caos. Temos interrupções mais fáceis e rápidas de resolver e outras nem tanto. Então quando fazemos essa análise através do cynefin podemos ver que dependendo da gravidade do problema ele poderá ser considerado no domínio complicado, complexo ou caótico. Mas pela minha experiência, apesar dos caóticos não ocorrerem a todo momento, eles ocorrem e podem gerar grandes prejuízos e se ocorreram uma vez, com toda certeza pode ocorrer de novo.
Salvando o dia com DEVOPS
Quando falamos de resolução de problemas o devops trás diversas práticas para tornar esse trabalho mais seguro e fácil.
Quando falamos por exemplo de termos um vasto conjunto de telemetria(indicadores e dados que nos auxiliem a identificar problemas) e utilizar isso para termos uma abordagem científica, permitindo ao time fazer um link entre causa e efeito e ajudando os especialistas a elaborar um plano de ação mais efetivo. Estamos garantimos que todos os problemas se concentrem no domínio complicado do cynefin, e essas são práticas bem difundidas pelo devops.
O devops ainda fala sobre habilitar nos sistemas a capacidade de ser mais fácil recriar um ambiente do que repará-lo, quando adotamos práticas como infraestrutura devops, pipeline de implantação, temos um conjunto abrangente de testes automatizados, ambientes sob-demanda e mais algumas práticas, chegamos a um ponto que temos a capacidade de criar um novo ambiente sob-demanda, de forma segura e rápida. Com isso, quando um ambiente tem algum tipo de problema, muitas vezes é mais fácil matar esse ambiente e criar um novo, através do nosso pipeline de implantação, e reforçando fazemos isso com o clique de um botão. Se o sistema já possui essa capacidade, a resolução de alguns problemas passa a ser extremamente simples, seguindo um roteiro pré-estabelecido, o que nos remete ao domínio claro do cynefin.
Conclusão
A realidade é que não podemos nos dar o luxo de permitir que os nossos processos habitem os ambientes complexo e caótico, como um amigo meu fala, sendo movidos a preces e orações. Quando fazemos isso estamos assumindo um sério risco aos negócios da empresa, precisamos procurar as boas práticas para evitar casos como relatei nesse artigo.
Eu cheguei a conclusão que boa parte das práticas e ferramentas propostas pelo devops são maneiras de eliminar as complexidades dos nossos sistemas e processos, usando as boas práticas para levar nossos processos para cenários mais controlados e diminuindo nossos riscos.
Podemos então usar o cynefin como ferramenta de avaliação dos resultados que estamos colhendo com a adoção do devops, pegue seus processos e tarefas como processo de implantação, testes do sistema, resolução de problemas, rollback, gestão de mudanças, integração de código e tantos outros. Vocês estão conseguindo diminuir a complexidade desses trabalhos? Você está eliminando a dependência de especialistas para algumas tarefas? Você está adotando as boas práticas no dia a dia das equipes?
Resumindo, você consegue ver seus processos e tarefas navegando nos domínios do cynefin e indo para o domínio que você gostaria que eles estivessem?