ChatOps, GitOps, GitFlow: Ferramentas e abordagens para equipes DevOps

Neste post, trataremos dos conceitos de ChatOps, GitOps e GitFlow,  indispensáveis para que as equipes DevOps possam desenvolver cada fase do projeto de acordo com um pipeline muito bem projetado.

ChatOps: Conversation-Driven DevOps

 

Fonte: chatbotslife.com

O ChatOps, por exemplo, permite que as equipes de operações e engenharia trabalhem de maneira multifuncional e executem operações e comandos diretamente por meio do chat. Muito simples, não é mesmo? Pode ser definido como um modelo de colaboração que conecta pessoas, ferramentas, processos e automação em um fluxo de trabalho (workflow) transparente. Em um ambiente ChatOps, o cliente de chat atua como o canal de comunicação principal para o trabalho em andamento.

As ferramentas que os desenvolvedores e gerentes de operações já usam são integradas a um ambiente de comunicação colaborativo para melhorar o rastreamento de tickets e a resposta automatizada a incidentes. O raciocínio é simples e a abordagem é bem prática: por estarem em uma sala de chat, membros das equipes DevOps podem digitar comandos para executar no chatbot via scripts e plugins personalizados.

Esses comandos podem cobrir desde implantações de código a notificações de membros da equipe e respostas a eventos relacionados à segurança do sistema. Isso cria um sistema em tempo real para gerenciamento de incidentes de produção ao mesmo passo em que mantém, de forma automatizada, a documentação detalhada de toda a comunicação e processo durante um incidente.

A transparência fortalece o ciclo de feedback, melhora o compartilhamento de informações e aprimora a colaboração entre as equipes – um dos motivos pelos quais o ChatOps é popularmente chamado de “conversation-driven collaboration” (colaboração orientada por conversação) ou “conversation-driven DevOps” (DevOps orientado por conversação). Isso sem falar na cultura e treinamento multidisciplinar entre as equipes de desenvolvimento.

De fato, o ChatOps é uma ramificação do DevOps com foco na comunicação entre as equipes DevOps. O ambiente ChatOps engloba as ferramentas de comunicação e colaboração usadas pela equipe: notificações, servidores de chat, bots, sistemas de rastreamento de problemas etc., e pode ser dividido em 3 categorias principais de ferramentas para implementar um ambiente de trabalho ChatOps:

  • Sistemas de notificação, como o disponibilizado na solução One Platform.
  • Chatbots, como Qbot ou Hubot.
  • Ferramentas de integração de chatroom, como Slack, Atlassian HipChat e CA Flowdock.

Para motivação da implementação, é interessante saber que tipo de tarefas operacionais podem ser automatizadas de forma conveniente com uso de ChatOps. Temos muitas possibilidades, mas algumas de destaque são:

  • Automação da implantação de uma nova versão de aplicação em algum ambiente;
  • Verificação completa de status das aplicações e serviços de um Produto;
  • Automação de processos manuais de diagnóstico que podem envolver VPNs, consultas a bancos de dados, APIs e outras fontes de dados;
  • Obtenção de indicadores de engenharia ou produto;
  • Download de grandes volumes de arquivos de uma origem remota;
  • Reclassificar a criticidade de um incidente e notificar pessoas envolvidas;

GitOps: DevOps aplicado ao Git

Antes de falar sobre GitOps, é importante falarmos sobre o Git, que é um sistema de controle de versão distribuído projetado para coordenar o trabalho entre programadores e rastrear alterações em qualquer conjunto de arquivos no código durante o desenvolvimento de software. Ao englobarmos as melhores práticas DevOps e aplicá-las à automação da infraestrutura, temos o GitOps, que funciona como uma estrutura operacional centrada no Git para hospedar todas as informações e documentação; ao usar o Git, as equipes de TI podem lidar com o gerenciamento de configuração e implementações com maior facilidade, já que a abordagem GitOps tem por objetivo aproximar o fluxo de trabalho de implantação entre os desenvolvedores.

A abordagem GitOps concentra alguns benefícios a serem considerados: 

  • Permite a colaboração em alterações de infraestrutura
  • Controle de acesso aprimorado
  • Tempo de lançamento no mercado mais rápido
  • Menos riscos
  • Custos reduzidos
  • Menos sujeito a erros

GitFlow: colaboração e dimensionamento entre equipes DevOps

Fonte: dev.to

Da mesma forma que no GitOps, também o GitFlow tem relação com o Git, funcionando como um modelo de trabalho com branches para esse sistema de controle de versão distribuído. O GitFlow permite “congelar” o código mesmo que um membro da equipe esteja trabalhando nele, sem impedir que os demais membros possam trabalhar na próxima versão. Por essa razão, o GitFlow acaba sendo bastante recomendado para a colaboração e dimensionamento das equipes de desenvolvimento – dois princípios básicos e fundamentais do DevOps.

Um dos principais benefícios do GitFlow é justamente tornar o desenvolvimento paralelo muito mais fácil, ao isolar o novo desenvolvimento do trabalho concluído. O novo desenvolvimento (como recursos e correções de bugs não emergenciais) é feito em “Feature Branches” e só é “mergeado” à branch Main do código quando o desenvolvedor responsável avaliar que o código esteja pronto para o lançamento.

Se o desenvolvedor alternar de uma tarefa para outra, tudo o que precisa fazer é “commitar” suas alterações e, em seguida, criar um novo Feature branch (ou um “ramo”) para sua nova tarefa. Quando essa tarefa estiver concluída, basta fazer a verificação no Feature branch e seguir de onde parou.

Os Feature branches também tornam mais fácil para dois ou mais desenvolvedores colaborarem no desenvolvimento do mesmo recurso, porque cada Feature branch é uma sandbox onde as únicas alterações são as necessárias para fazer o novo recurso funcionar – ou seja, um ambiente de teste isolado que permite aos usuários executar programas ou arquivos sem afetar o aplicativo como um todo. Isso torna muito fácil ver e acompanhar o que cada colaborador está fazendo.

O Gitflow é ideal como abordagem de desenvolvimento envolvendo uma quantidade de pessoas que já envolve algumas implementações realizadas simultaneamente e que precisam ser integradas para posterior disponibilização para os clientes finais.

As técnicas descritas neste artigo são complementares às descritas no post anterior, sobre Estratégias de Implantação, e muito poderosas quando utilizadas em conjunto.

Rolar para cima