O Scrum, é método ágil mais conhecido para gestão e planejamento de projetos e produtos, estimula o crescimento de uma cultura colaborativa, simular ao DevOps. Desta forma, as práticas dentro dessa metodologia (e outros frameworks ágeis), focam nos aspectos de construção de software, e menos nos aspectos de entrega e operacionais – resultado da incorporação do Agile ao movimento Devops.

O pensamento DevOps prevê que se repense o modo como uma equipe é formada, visando autonomia e alinhamento de objetivos com foco em resultados, que além dos backlogs e construção, que devem incluir escalabilidade, implantação, monitoramento, entre outros. Ele deve estar presente desde o momento da contratação, planejamento e construção dos produtos até a implantação, operação e manutenção.

A cultura Agile tem muitas iniciativas para garantir que a entrega do produto aconteça do jeito esperado pelo cliente, dentro de alguns limites de orçamento e prazos. Para ter resultados ainda melhores, nada mais interessante do que evoluir algumas ideias e princípios com a riqueza do DevOps, não é mesmo?

A seguir, veja como integrar Agile e DevOps de forma satisfatória!

Intregrar Agile e DevOps é possível?

Agile e DevOps

Você provavelmente sabe que a maioria dos produtos passa a maior parte de suas vidas precisando de suporte e manutenção logo após serem lançados. É sempre necessário fazer correções, atualizações e melhorias. Estatísticas nos orientam que de longe existem esforços concentrados na operação, correção e evolução, se confrontados com a sua contrução.

Um relatório da Gartner de 2006 relata que uma empresa gasta até 80% do seu budget para manter uma solução no ar. Outra pesquisa mais recente, da empresa de consultoria CEB, descobriu que 57% de um budget vai para manutenção e atividades obrigatórias em Compliance.

O DevOps ensina que os Recursos Operacionais, ou “Operabilidade”, são, na verdade, algo importantíssimo, e devem ser tratados com tanto cuidado e consideração quanto qualquer outra característica de um produto. Isso é devido a que o usuário é que utiliza o serviço, sendo este o real objetivo do software. A forma de conseguir isso é construindo qualidade em todo o processo do ciclo de vida do software, promovendo uma cultura de colaboração entre os times de desenvolvimento e operações.

DevOps e Ágil caminham lado a lado há alguns anos já. Entretanto, ainda há uma certa polêmica em relação a ambos. Isso porque muitas pessoas acham que DevOps é uma subclasse do desenvolvimento ágil, ao passo que outras o definem como um acerto do Agile.

Scrum e sua importância no DevOps

Entregar um software funcionando, com qualidade e que possa ser gerenciado, que seja monitorado em seus ponto críticos, escalável, mantido e cuidado facilmente é algo de que o mundo da entrega de software precisa muito.

A execução e operação de um software é algo que mudou drasticamente desde os dias em que o framework de desenvolvimento ágil foi criado.

O Continuous Delivery 

Continuous Delivery deve ser baseado na teoria “nós construímos, nós gerenciamos” para a entrega de software. Ao contrário de antes, em que cada profissional se responsabilizava pelas suas tarefas sem envolvimento dos impactos do seu trabalho, agora deve haver um senso de propriedade e colaboração total entre os times – embora ainda haja uma certa resistência em algumas companhias.

 

O mesmo acontece com o DevOps. Seu objetivo é preencher a lacuna entre Dev e Ops, diminuindo as transferências maçantes e aumentando a colaboração, para que atividades como integração, testes, “implantação”, correção, escalabilidade, monitoramento e suporte não sejam negligenciadas no processo.

 

Quando há separação entre a equipe Dev e a equipe DevOps, cria-se outro silo, que faz pouco para aumentar a colaboração – algo que não deve acontecer de forma alguma.

 

Para que isso não aconteça, é primordial usar as práticas do DevOps desde o início, utilizando-as nos processos e práticas diárias. Isso requer alguns ajustes e mudanças nos frameworks ágeis.

Atualização das práticas ágeis e DevOps

Agile e DevOps

Para garantir o desenvolvimento de softwares de maneira ágil e, ao mesmo tempo, entregar produtos e serviços estáveis de acordo com as mais atualizadas e melhores práticas do DevOps, uma dica é usar o conceito Shift Left.

Nesta parte, deve-se adicionar histórias e tarefas de funcionalidade ao backlog, junto com as dicas de usuários. O backlog, de repente, vira um conjunto completo de tarefas e narrativas que ajudam a entregar os produtos com sucesso, e a mantê-los depois de lançados.

Algumas dicas para que isso aconteça são:

1. Equipes

Especialistas em operações, suporte ou infraestrutura. Você pode argumentar dizendo que não existe demanda suficiente para que tais especificações estejam em cada equipe ágil, e talvez você tenha razão. Mas não se esqueça que foi dito a mesma coisa sobre os testers e arquitetos, engenheiros de banco de dados e UXs, dentre outros…

Se é importante a maneira que você entrega, mantém, atualiza e escala um produto, então você realmente precisa dessas habilidades na sua equipe.

2. Backlog

Eles também precisam ser multifuncionais. É preciso ter uma nova abordagem focada nos aspectos operacionais dos serviços. Serviços são produtos que precisam ser evoluídos, testados, implantados, escaláveis, mantidos, monitorados e ter um suporte.

Uma boa gestão de backlog deve conter (além das funcionalidades dos usuários):

  • As condições de escalabilidade de um produto/serviço: está diretamente associada com a distribuição de sistemas, capacidade e demanda esperada;
  • O processo de implantação/ deploy: o serviço tem que ser implantado na hora em que for lançado sem algum tempo de inatividade?;
  • Monitoramento do serviço: quais aspectos precisam ser monitorados?; Como atualizamos nosso sistema de monitoração com cada upgrade e mudança nova?;
  • Registro de dados (logging): quais informações devem ser registradas? Por quê? E como?;
  • Alertas e avisos: a quem? Quando? Como?;
  • Como realizar os testes para um serviço;
  • Aspectos relacionados à segurança e compliance, tais como modelos de criptografia, proteção de dados, PCI compliance e legislação de dados;
  • Performance operacional.

3. Histórias de usuários

Ajudam vários desenvolvedores a enxergar os problemas do ponto de vista do usuário final, pensando em soluções para tais problemas ao invés de simplesmente seguir instruções.

Não é muito raro ver “itens de backlog técnicos” escritos em um backlog sem usar o formato “Como a… Eu quero…Para que…” e, do mesmo jeito, esse formato não é recomendado para recursos operacionais. É melhor usar o formato “O que e porquê”, que enumera O QUE precisa ser feito e POR QUÊ.

4. Sprints

Sprints que duram duas semanas são a melhor opção para o desenvolvimento de novos recursos e para melhorar a implantação e os testes. Se os Sprints durassem mais tempo, seria difícil manter o foco e manter atualizada a lista de feedback loop.

Se o tempo fosse ainda mais curto, digamos de uma semana, e reuniões passassem a ocupar uma porcentagem grande desse tempo reservado para o Sprint, significa que o tempo que você realmente tem para realizar os Sprints é bem pequeno.

A velocidade de um backlog é uma estimativa de tempo em que se pode completar as atividades planejadas relacionadas ao produto e serviço, enquanto a velocidade não planejada é a quantidade de trabalho realizado durante o Sprint. Saber esses dois tipos de velocidades nos permite planejar de forma mais eficaz.

Outra opção viável é o método Kanban, que possui três campos: O que precisa ser feito, Em execução e o Finalizado – ele muitas vezes usa o framework escolhido pelas equipes que têm menos visão de futuro em termos do que vão fazer na semana seguinte.

5. Planejamento do Sprint

Para que se tenha uma perspectiva DevOps no seu plano, é preciso fazer o seguinte:

  • Convidar os responsáveis pelas operações, infraestrutura e o time de suporte para a reunião de planejamento;
  • Discutir sobre a funcionalidade do produto, assim como seus recursos operacionais;
  • Organizá-las para que estejam no próximo Sprint.

Tenha em mente o tempo e o trabalho que serão consumidos por “interrupções”, ou seja, trabalhos que não estavam planejados vindos da solução em produção, tais como correções de erros, escalas, etc.

A junção do Agile e Devops vem do seguinte se pensarmos no Scrum como método mais usado: o Scrum foi criado em uma época na qual as equipes não se preocupavam com problemas operacionais, incluindo escalabilidade, implementação, monitoramento e manutenção.

Consequentemente, as práticas dentro desse método (e outros frameworks ágeis), focam bastante no que podemos definir como os aspectos de entrega de software, e bem menos nos aspectos operacionais.

O DevOps ajuda a corrigir esse desequilíbrio, mas tem pouca influência sobre as práticas que ocorrem durante a fase de desenvolvimento. Por isso, para maximizar o valor do ágil e do DevOps, é preciso utilizar alguns dos princípios do DevOps logo no início do seu processo de desenvolvimento.

Por exemplo: algumas regras existentes no Scrum precisarão ser mudadas nesse processo. Na realidade, ele será uma mistura de Scrum (talvez junto com kanban) e DevOps.

Outra opção é realizar a transição para um papel de Agile Coach, no qual os principais valores das técnicas ágeis são usados.

Em um ambiente de Agile e DevOps, o Product Owner precisa, mais do que qualquer outra pessoa, entender a importância da fase de gestão de operação, ou seja, incorporar uma visão de serviço. O valor está em como os serviços funcionam, gerando resultados como economia de tempo e dinheiro, melhor desempenho, riscos reduzidos, melhoria na segurança ou qualquer outro “valor” oculto.

Outra dica é usar o CD (Continuos Delivery) como um mecanismo de entrega e também como guia de regras de princípios. Isso é de extrema importância, pois a entrega contínua consegue colocar os times de desenvolvimento e de operações juntos, em uma mesma equipe. Também usar princípios Lean que com uma visão de eliminação de desperdícios, foco no valor do cliente, e estabelecer um processo de fluxo de uma peça, diminuindo o tamanho desta, podemos aplicar Teoria das Restrições, que permite uma melhoria continua no processo de adoção.

Agile e DevOps são duas abordagens e pensamentos que se complementam muito. Vale a pena saber mais a respeito de sua integração e investir nisso!

Newsletter HNZ

Fique por dentro de nossos conteúdos se cadastrando na nossa newsletter semanal! Clique aqui!

Artigos relacionados:

Agile SCRUM para Gerenciar suas atividades

Ferramentas que todo engenheiro DevOps deveria conhecer

HNZ

HNZ

Leave a Reply