Cultura DevOps e suas dificuldades de adoção
Toda organização, seja uma startup ou uma empresa, quer adotar estratégias de DevOps em sua cultura, rotina cotidiana e na maneira de trabalhar, pensar e agir de suas equipes.
Entretanto, ainda existem muitos equívocos sobre o termo DevOps. Muitos entendem o conceito corretamente, mas acham difícil implementar em sua infraestrutura de TI e comportamento organizacional existentes.
Existe uma "parede de confusão", que é transparente, mas nebulosa, na demarcação das fronteiras entre desenvolvimento e operações. Devido a essa ambiguidade na compreensão, mesmo aqueles que afirmam ter adotado o DevOps como uma estratégia em pleno funcionamento não conseguem entender a distinção entre esses dois interconectados mundos, ou seja, tanto desenvolvimento quanto operações muitas vezes interpretam mal a forma como o outro funciona.
A equipe de desenvolvimento trabalha com muitos prazos e pressão para desenvolver as aplicações mais rapidamente e com melhor qualidade. Muitas vezes, eles acham que a equipe de operações é ineficiente e desatualizada, que leva muito tempo para preparar os ambientes e fazer as configurações necessárias. Eles dizem que a equipe de operações precisa trabalhar rapidamente como eles e, portanto, não se tornar uma barreira para sua inovação e agilidade.
Por outro lado, a equipe de desenvolvimento é vista como aquela sem conhecimento sobre o ambiente de produção e suas aplicações simplesmente não funcionam eficientemente devido às suas fracas habilidades de desenvolvimento. E sem testes de regressão e uma série de mudanças de configuração de ambiente a equipe de operações dificilmente confiaria em uma nova versão da aplicação, pois pode colocar as funcionalidades existentes em alto risco.
Ambas as áreas e suas ideias de pensamento e funcionamento são dissolvidas e integradas com o conceito de DevOps para garantir entregas frequentes, estáveis, confiáveis e de alta qualidade, isto faz com que todos sejam responsáveis por tudo enquanto trabalham juntos em direção a um objetivo comum. Um não pode alegar ter adotado o DevOps inteiramente, sem que o outro também tenha.
Práticas e Princípios de DevOps
Automação: Qualquer coisa repetitiva deve ser automatizada. Isso se torna válido para todas as atividades como codificação, teste, implantação, monitoramento, etc. Uma quantidade suficiente de conhecimento, discussão, testes e análises são necessários para que qualquer coisa seja automatizada e, uma vez implementada, você se torna 80-90% mais eficiente.
Integração, entrega e implantação contínuas: para aumentar a qualidade do código, testar regularmente seu código e obter relatórios automaticamente, você deve começar a usar a Integração Contínua, que oferece uma solução mais rápida, eficiente e códigos livres de erros. Entrega e Implantação Contínuas garantem tempo de revisão de código reduzido, tempo maior de teste, cobertura de código e eficiência na transferência de códigos de homologação para produção ou entre outros ambientes.
Controle de Versão: Este é um termo bastante comum atualmente e uma das partes mais importantes da codificação. Você, de qualquer forma, precisará atualizar seus códigos para acompanhar suas alterações, fazer verificações, restaurá-los para estados anteriores, colaborar entre as equipes e, obviamente, fazer um backup deles.
Gerenciamento de Logs, Monitoramento e Relatórios: Se você realmente deseja ver o que acontece quando seu código é executado e, simultaneamente, o que acontece no seu sistema, na sua infraestrutura e rede, você precisará ter essas capacidades desenvolvidas para possibilitar ter uma visão completa e clara sobre o que, quem, quando e como refente a sua implementação.
Gerenciamento de Configuração: Tratar sua infraestrutura como código oferece a facilidade de provisionar e implantar seus servidores e aplicações, configurá-los e ajustá-los para obter o melhor desempenho possível, tudo muito rapidamente.
Cloudification: Parece algo novo, mas é "a Internet". É apenas qualquer dispositivo ou aplicativo que está em algum lugar "invisível" e funciona sem qualquer tempo de inatividade. Agora você não precisa comprar um dispositivo. Você só precisa escolher um serviço e começar a usá-lo.
Aprender e experimentar: É a chave para melhorar e aprender com as falhas, identificar as melhores ferramentas, práticas ou processos possíveis para trazer inovação e melhorias.
Adesão da estratégia por todos: Isso é algo que certamente tem que acontecer. A adesão só acontece quando todas as partes interessadas conhecem a necessidade e a importância do DevOps assim como todas as suas práticas e abordagens.
Estas ferramentas ou abordagens serão guias para um caminho com uma base sólida e mais rápida para desenvolver, testar e implantar suas aplicações rapidamente, resultando em clientes satisfeitos. Você também terá a flexibilidade para criar, configurar e implantar uma infraestrutura completa a qualquer hora, a qualquer momento, com muito menos esforço.
Como é uma mudança completa na metodologia da abordagem de trabalhar, pensar e agir, as pessoas encontram algumas dificuldades ou barreiras que as impedem de avançar com a adoção do DevOps.
Falta de experimentação
A experimentação constrói culturas saudáveis em organizações vencedoras, porém, ainda existem muitas organizações que não experimentam nada e preferem pagar um consultor para fazer a tomada de decisões e definir as estratégias ao invés de realizar suas próprias experiências e tentativas para encontrar novos resultados.
“Experimentação exige perdas de curto prazo para ganhos de longo prazo.”
Experimente e teste todas as hipóteses que você ouve sobre as práticas e princípios de DevOps. Isso lhe dará mais confiança nas possibilidades dos resultados do que apenas receber sugestões de um consultor.
Sistemas legados
Sistemas legados, tanto de infraestrutura quanto de aplicações, são certamente um grande obstáculo para adoção do DevOps. Não foram criados, mantendo as práticas de DevOps em mente e a atualização deles também parece assustadora. Geralmente desatualizados ainda sobrevivem por causa do risco e custo associado à sua substituição.
Portanto, a saída é substituir ou adotar por outros sistemas que são construídos para apoiar as práticas de DevOps ou migrar para algum serviço na nuvem para diminuir esforços de manutenção e suporte.
Resistência a mudança
Com a tecnologia sempre evoluindo, as necessidades do cliente, economia, oportunidades e desafios torna-se inevitável mudar e se adaptar. No entanto, as pessoas ou as organizações precisam de "motivo para mudar". Sua resistência à mudança não quer que eles se desviem de um conjunto de rotinas e conforto, uma vez que estão familiarizados com o funcionamento das coisas. Se não estiver quebrado, não conserte.
"Loucura é querer resultados diferentes fazendo tudo exatamente igual!"
Aprender a aceitar a mudança como um braço de apoio, em vez de algo a ser evitado. Se você parar de experimentar coisas diferentes, ficará estagnado e interromperá seu próprio crescimento. Mas, ao mesmo tempo, torna-se importante reconhecer quando e onde você precisa de uma mudança.
Medo de falhar
Muitas mudanças tentadas nas organizações falham "e as razões são falta de conhecimento e habilidades, conflitos ocultos e cultura legada. As organizações têm medo de desequilibrar um sistema estável através da implementação de uma mudança e assim torna-se quase impossível para eles pensarem sobre mudar um sistema completo ou em planejar um processo de mudança metódica.
"Tudo o que você sempre quis está te esperando do outro lado do medo."
O fracasso é apenas uma unidade de medir sua tentativa de ação. A única maneira de superar o medo é enfrentá-lo. Obviamente, levando em consideração as alternativas, benefícios de tentativas anteriores e planos de contingência.
Não acredito que isso vai funcionar
Embora adesão do DevOps pela gestão seja importante em diferentes níveis da organização, para que a adesão das práticas de DevOps aconteça de fato é necessário a adesão em todos os níveis de liderança e equipes. Se você não tiver essa adesão total, há sempre um risco de tudo dar errado antes mesmo de começar ou eventualmente um declínio drástico nos estágios posteriores à adesão. Deve sempre haver uma disposição a nível de gestão e em todos os demais níveis da organização para implementar mudanças.
Começar a envolver a gestão e a liderança nas discussões e/ou reuniões iniciais é muito importante. É necessário atenção e aprovação de todos para que as decisões e ações tomadas para adotar o DevOps aconteçam com sucesso. Trazer fatos e dados para a mesa, fazer as entregas no prazo, e manter todas as respostas preparadas. Tudo isso vai contribuir para que a adesão aconteça mais naturalmente.
Isso não é problema meu
Algumas organizações trabalham em unidades de trabalho separadas, seus diferentes grupos ou equipes não compartilham informações, tarefas, prioridades ou ferramentas. Nem entendem como funcionam as outras equipes ou funções. Geralmente evitam, mudam ou escapam da culpa em tempos de crise. Tal estrutura impede as organizações de crescer em ritmo mais rápido.
Desfaça as unidades de trabalho separadas!!! Ter a adesão de todos na equipe para se obter uma compreensão total do objetivo é fundamental. Deve haver uma visão unificada dentro das equipes e nas lideranças para que tudo possa ser conduzido de tal forma que seja possível alcançar os objetivos desejados.
É difícil perder velhos hábitos
Existe um certo conforto com tudo o que fazemos e seguimos a cada dia e quando encontramos uma solução melhor e mais eficiente, os velhos hábitos não nos permitem usar essa nova solução. Da mesma forma, que você pensa que será capaz de vencer e superar as dificuldades que já discutimos até aqui, você vai precisar implementar mudanças em sua forma tradicional de trabalho. Os velhos hábitos interrompem a adoção das práticas de DevOps.
Novas ferramentas não podem corrigir velhos hábitos. Deixe suas experiências negativas de lado quando você for mudar ou você não vai poder adotar coisas novas. Defina suas próprias metas para atingir seus objetivos e crie um plano, sendo muito disciplinado e mantendo uma verificação periódica dos seus avanços e melhorias.
E que valor tem isso?
O verdadeiro valor das práticas de DevOps não é entendido por muitas pessoas. Acreditar que o DevOps não adiciona qualquer valor para a organização e a falha para entender o propósito do DevOps, não leva à transformação desejada.
É necessário entender que a transformação através do DevOps não significa criar uma nova equipe de DevOps. Pelo contrário, é uma mudança em sua maneira atual de pensar, planejar, colaborar e executar para obter um serviço ou produto durável, resiliente e flexível.
Concluindo...
A principal lição deste artigo é que as pessoas definem o conceito do DevOps a partir de perspectivas diferentes, porém o objetivo comum é reduzir o tempo entre a concepção de uma funcionalidade ou melhoria até e sua implantação final para os usuários, sem sacrificar a qualidade.
A adoção do DevOps enfrentará barreiras devido aos desafios culturais e técnicos. Também terá um grande impacto na estrutura da equipe, arquitetura de software e formas tradicionais de conduzir as operações.
Quem tiver a responsabilidade de adotar e implementar o DevOps precisa identificar as dificuldades apresentadas e começar a aceitar e implementar esta mudança cultural e de metodologia dentro de seus espaços de trabalho.