O que é uma DevOps Toolchain e porque ela importa para seus resultados de negócios?

Uma DevOps Toolchain – na tradução livre: “cadeia de ferramentas DevOps” – é uma coleção de ferramentas que operam em conjunto, porém como uma unidade integrada, a fim de projetar, construir, testar, gerenciar, medir e operar software e sistemas. Uma DevOps toolchain inclui as ferramentas e a tecnologia que possibilitam que as equipes de desenvolvimento (dev) e operações (ops) colaborem em todo o ciclo de vida do software. Engloba os principais fundamentos do DevOps, incluindo integração contínua e entrega contínua (CI/CD), automação e colaboração.

Como o DevOps é uma mudança cultural onde desenvolvimento x operações funcionam como uma unidade integrada, não existe uma ferramenta “específica” que magicamente faz os princípios e as práticas do DevOps acontecer. Em vez disso, uma DevOps toolchain, geralmente proveniente de uma série de fornecedores, que operam como uma unidade integrada a fim de projetar, construir, testar, gerenciar, medir e operar software e sistemas. Vale ressaltar também que organizações e equipes com frequência acabam experimentando diferentes combinações de ferramentas até encontrar a toolchain mais apropriada para cada caso.

Se analisarmos um produto DevOps mais sofisticado, o que veremos é a toolchain sendo capaz de lidar com diferentes partes do ciclo de vida de desenvolvimento muito rapidamente, oferecendo alternativas para diferentes usuários. Essa é uma cadeia capa de incluir ferramentas de desenvolvimento que abordem cada fase do ciclo de vida de desenvolvimento do produto, incluindo integração e entrega contínuas (CI/CD), automação de testes e deploy de altíssima velocidade. No lado das operações, o “Ops” do DevOps, as ferramentas devem incluir funcionalidades que ajudem no monitoramento e gerenciamento de incidentes. Além disso, todas as ferramentas em conjunto devem unir desenvolvimento e operações, fornecendo feedback e logs contínuos.

Quando temos dois lados, um relacionado ao Produto e o outro ao lado da Operação, o Gerente de Produto que coloca um novo recurso em produção está interessado em ver como o projeto se divide em tarefas e user stories. O desenvolvedor do lado do Produto precisa visualizar como mover o recurso para a produção, incluindo tickets, users stories e dependências. Se os desenvolvedores estão em linha com o princípio DevOps “you build it, you run it”, pode apostar: eles também estão interessados na resolução de incidentes.

Passando para o lado da Operação do ciclo de vida do projeto, o Site Reliability Engineer precisa entender quais serviços podem ser medidos e monitorados para que, caso haja algum problema, ele possa ser corrigido. Quando temos um cenário onde não existe um conjunto de ferramentas integradas interligando todos esses processos, o que temos de fato é um ambiente um tanto confuso, não correlacionado e absolutamente caótico. Agora, por outro lado, quando há um conjunto de ferramentas bem integrado, é possível obtermos um contexto melhor de tudo o que está acontecendo.

Dicas para criar uma DevOps Toolchain


Ao decidir a toolchain ideal, é importante primeiro entender as melhores práticas DevOps fundamentais e, mais que isso ainda, entender como as ferramentas da cadeia auxiliam na execução dessas práticas. Em seguida, estabeleça uma estratégia das ferramentas comuns que possibilitarão às equipes colaborar no desenvolvimento, teste e implantação de um produto.

Escolher a configuração certa é importante, pois ela molda os processos DevOps das equipes.

Quando as organizações adotam o DevOps, elas geralmente se deparam com duas opções:

1) uma toolchain do tipo “all-in-one” ou “tudo numa coisa só”
2) uma toolchain customizável

Agora vamos aos prós e contras de cada uma.

Opção “all-in-one

Fornece uma solução completa que pode não se integrar muito bem com outras ferramentas de terceiros. Essa estratégia, no entanto, pode ser útil para empresas ou grupos que estão iniciando sua jornada DevOps ou mesmo uma equipe que deseja iniciar um projeto rapidamente. A desvantagem desse tipo de toolchain é que a maioria das equipes estabelecidas já possuem uma toolchain de preferência, que pode não se integrar a uma solução completa. Além disso, uma toolchain muito abrangente pode sofrer da síndrome do “pau para toda obra, mestre de obra nenhuma“. Em outras palavras, é preciso ter em mente que uma única ferramenta simplesmente não dará conta de evoluir em diferentes mercados passando por rápidas e frequentes mudanças. Por fim, na maioria das vezes, as empresas precisam integrar ferramentas legadas em uma toolchain DevOps e, naturalmente, uma opção all-in-one pode limitar muito isso.

Toolchain sob medida

A outra abordagem é usar uma toolchain pensada sob medida para as necessidades de uma equipe, contando com ferramentas diferentes. Isso permite que as equipes tragam as ferramentas de preferência para somar em um conjunto de ferramentas DevOps mais amplo. Por exemplo, uma equipe pode usar Jira para planejamento e rastreamento de fluxo de trabalho, Kubernetes para provisionamento de ambientes de desenvolvimento individuais, Github para codificação colaborativa, Jenkins para integração contínua e assim por diante. As organizações podem personalizar seus fluxos de trabalho por equipes e/ou por projeto.

A integração é essencial para esses tipos de toolchains. Se as diferentes ferramentas não se integrarem, pode ser um desafio compartilhar informações entre as ferramentas, os membros das equipes vão acabar gastando tempo desnecessário alternando entre telas e fazendo login em vários locais. Essa não é uma ótima experiência para desenvolvedores ou qualquer pessoa tentando entender o que está acontecendo. Se você está respondendo a um incidente, não tem tempo para olhar um manual e tentar encontrar informações importantes sobre uma nova ferramenta.

Do Agile ao DevOps

Quando os princípios ágeis ganharam ampla adoção, cerca de 10 anos atrás, eles revolucionaram a forma como criamos produtos. As equipes eram pequenas e multifuncionais, com sprints de uma a duas semanas que produziam artefatos prontos para produção. Os ciclos de feedback eram apertados, com foco em melhoria contínua. Os produtos eram entregues com mais rapidez e menos dores de cabeça.

É incrível como as coisas mudam rapidamente. Agora, com a evolução da computação em nuvem, SaaS e serviços sempre ativos, o ciclo de vida do produto é muito mais rápido. É comum que vários estágios de desenvolvimento e testes ocorram simultaneamente. Embora o Agile normalmente tenha sprints de uma a duas semanas, as equipes nos ambientes nativos da nuvem atualmente iteram e fazem deploys várias vezes ao dia. Fluxos de trabalho e bases de código evoluem constantemente. As equipes usam feature flags, implementações progressivas e testes A/B para garantir o deploy contínuo de códigos limpos e de qualidade.

A abordagem DevOps trata de quebrar silos e tornar o ciclo de vida de desenvolvimento mais rápido, altamente automatizado e colaborativo – seja multifuncional ou dentro de uma equipe. Escolher as ferramentas DevOps certas que funcionam juntas é, antes de mais nada, dar uma boa olhada no desenvolvimento de software atual e no processo de operações de TI e decidir onde você precisa melhorar.


Fonte: DZone.com

Rolar para cima