A jornada de uma organização para incorporar o DevOps é muito parecida com a de um aprendiz de artes marciais: longa, desafiadora, muitas vezes frustrante, mas, no fim das contas, recompensadora.
O conhecimento teórico é crucial para orientar a prática correta e levar à transformação. No caso do DevOps, uma abordagem estruturada de engenharia pode ajudar a pavimentar o caminho e direcionar esforços de maneira eficiente.
Mapeando o DevOps
Em seu livro Engineering DevOps: From Chaos to Continuous Improvement … and Beyond (“Engenharia DevOps: Do Caos ao Aprimoramento Contínuo… e Além”, em tradução livre), Marc Hornbeek delineia 24 práticas necessárias para que uma organização consiga incorporar o DevOps de maneira eficiente e com alta performance.
Deste mapeamento, destacamos 8 categorias práticas que fazem parte da abordagem de “engenharia”.
Sistemas de Gerenciamento de Versões: É essencial manter um registro organizado de versões do código-fonte, dos dados de configuração e das imagens executáveis do software. Isso demanda sistemas de gerenciamento de código, repositórios de artefatos e sistemas de gerenciamento de configuração.
Infraestrutura “as-a-service”: Nuvem virtualizada e recursos dedicados devem ser colocados em servidor de modo efêmero para resolver demandas de carga de trabalho e armazenamento. Para isso, é preciso dominar a prática de orquestrar serviços dedicados, em nuvem, híbridos ou “multi nuvem”, e o deployment de aplicações para a infraestrutura.
Automação de lançamento de Aplicação: Direcionar e monitorar mudanças de software ao longo do pipeline de CI/CD demanda orquestragem de processo e data analysis um nível acima do próprio pipeline de CI/CD.
Gerenciamento de Fluxo de Valor (Value Stream Management – VSM): Um serviço aplicado, composto por múltiplos microsserviços de aplicação e serviços de dados exige que você saiba orquestrar e analisar um conjunto de serviços, de ponta a ponta, ao longo do fluxo de valor – do planejamento às operações.
Catálogo de Serviços: Coleções organizadas de stacks de software, de ferramentas e de pipelines pré-configurados, disponibilizados por meio de portais, viabilizam operações de DevOps-as-a-Service e simplificam o uso (acesso, configuração, controle e evolução) de recursos de DevOps por parte das equipes da organização.
Prevenção e recuperação de desastres: Por meio de um monitoramento proativo, acompanhado por configurações de alta-disponibilidade e práticas de mitigação de desastres, é possível minimizar as consequências e orquestrar uma restauração rápida de serviços de DevOps se necessário.
Engenharia de confiabilidade de site (Site Reliability Engineering – SRE): Esta combinação de práticas ajuda a realizar o “shift left” do conhecimento de produção das operações para o desenvolvimento. Inclui objetivos de nível de serviço (SLOs), budgets de erro, monitoramento, políticas de compartilhamento de tarefas, práticas proativas de anti-fragilidade e post-mortem sem “atribuição de culpa”.
Governança: A escala e o escopo das soluções de DevOps são controladas por meio de políticas de governança “em código”, implementadas por meio de catálogos de serviço, dashboards de gerenciamento e políticas de budget de erros.
Extra: Os 9 Pilares Iniciais do DevOps
De acordo com Hornbeek, há 9 pilares que pavimentam o início da jornada de implementação do DevOps. São temas a respeito dos quais falamos constantemente aqui na Prime Control, e sua importância é auto evidente:
- Apoio da Liderança;
- Cultura colaborativa;
- Design alinhado ao DevOps;
- Integração Contínua;
- Testagem Contínua;
- Infraestrutura flexível;
- Monitoramento Contínuo;
- DevSecOps (Segurança Contínua);
- Entrega Contínua.
Uma abordagem estruturada, inspirada em princípios de engenharia, ajuda a organizar ideias e delinear planos de ação. Sem ordem, o DevOps acaba se tornando praticamente inatingível, e a organização deixa de colher os inúmeros frutos que vêm com sua implementação.