Implementando um cenário de entrega contínua

Você tomou uma decisão: vai fazer a entrega contínua (continuous delivery – CD) como o primeiro passo em sua transformação para uma metodologia DevOps. Você sedimentou as bases. Estabeleceu os pré-requisitos básicos necessários para uma mudança de mentalidade: desde garantir que suas equipes tenham objetivos compartilhados até automatizar e fazer o controle de versão de tudo – tanto do app quanto do ambiente que o sustenta – para garantir que as versões de aplicativos estejam prontas para serem entregues na produção.

Você está pronto para implementar a CD. Mas, e agora? Por onde você começa?

Como o continuous delivery é um processo – e não uma ação de “desligar” e “ligar” – você precisará ter um plano, implementá-lo, dar alguns passos e estar preparado para reavaliar, revisar e reimplementar suas ações à medida que for avançando. Você está mudando toda a sua organização, prometendo uma metodologia melhor para oferecer um software melhor. Você não vai conseguir tudo em uma única tentativa. Mas você pode começar e pode ter sucesso, se procurar avançar lentamente, um passo de cada vez. Aqui vão alguns passos que as empresas bem-sucedidas têm tomado para implementar uma metodologia sustentável de entrega contínua no dia a dia do desenvolvimento de apps.

continuous-delivery

Escolha um projeto pequeno e gerenciável para começar

Um erro comum que as organizações cometem é tentar fazer tudo ao mesmo tempo. Entusiastas de entrega contínua acreditam na metodologia, e eles tendem a querer gerar grandes ganhos rapidamente para justificar o compromisso da organização. Então eles tendem a enfrentar um projeto complicado, com muitas voltas e reviravoltas. A abordagem “big bang” promete grandes recompensas, mas tende a criar grandes problemas.

Uma abordagem mais inteligente é começar com um pequeno projeto que permita à organização testar a entrega contínua e se acostumar com os novos procedimentos. Tente escolher uma nova área com novas expectativas de entrega que não esteja vinculada a nenhum pipeline legado ou a um antigo conjunto de procedimentos. Lembre-se sempre: pequenas mudanças incrementais nos aplicativos são mais fáceis de testar e mais fáceis de remediar se algo der errado. Cada mudança pode assim entrar em um pipeline mais rapidamente, permitindo que as organizações façam deploys mais curtos e mais rápidos que possam produzir resultados mensuráveis e positivos.

Defina um processo


Depois de escolher seu projeto inicial, você precisará definir o processo. Isso é tão simples como escrever os procedimentos em um quadro. Aqueles que leram o livro de Gene Kim, “The Phoenix Project”, estão familiarizados com esta etapa. A empresa retratada no livro estava enfrentando todos os problemas de entrega de TI imagináveis – até que Bill Palmer, VP de TI, implementou a entrega contínua no processo. O primeiro passo foi fazer com que cada funcionário escrevesse as etapas do processo de entrega em um quadro branco e pensasse sobre como conectá-los, criando um processo de linha de montagem. A equipe então arregaçou as mangas coletivamente, desenhou um fluxo de trabalho e automatizou-o.

O fato é que você pode comprar um grande conjunto de ferramentas, criar um conjunto agressivo de metas e fazer com que sua equipe compre a ideia. Mas até mapear um processo, entendê-lo e verdadeiramente atribuir funções, você não terá começado efetivamente.

Assegurar uma cultura sem culpa

Um pré-requisito para uma implementação de uma metodologia CD é a exigência de que as equipes de desenvolvimento, QA e operações precisam ter metas compartilhadas. Isso é essencial. Mas isso não deve ser tomado como o fim do “trabalho das pessoas”. Ao implementar o CD, você deve fazer uma verificação contínua de que está realmente promovendo uma cultura sem culpa. Questões surgirão em qualquer implementação de entrega contínua, e sua organização precisa garantir que pode distribuí-las de uma forma positiva sem ter pessoas apontando os dedos umas para as outras. As culturas DevOps bem-sucedidas aceitam o fracasso e promovem a tomada de riscos. Mover para o CD é um risco, e sua equipe precisa manter a cabeça no jogo para melhorar continuamente seus processos.

Defina métricas e meça seu sucesso

O analista da Forrester Kurt Bittner não é o único a frisar a necessidade de quantificar repetidamente o valor de um projeto. Mas ele mostra o que é possível medir em um projeto de entrega de software e como aplicar essas métricas para cada etapa do processo. Fato é que você não pode melhorar se não mensurar – sempre e muitas vezes. Assim, um movimento importante na medida em que resolver embarcar em uma viagem de entrega contínua é decidir o que deseja melhorar e como irá mensurar a melhoria. Em seguida, defina uma série de medições menores. E não se preocupe mais com isso.

Adote a configuração como código

Um aspecto chave da entrega contínua é a capacidade de automatizar a configuração. Esta prática DevOps de configuração como código garante a consistência no processo de CD, eliminando problemas que poderiam resultar da reconstrução de sua configuração – potencialmente inconsistente – toda vez que quiser enviar uma versão para produção.

Se estiver implementando a entrega contínua, tenha a certeza de que esteja aproveitando as ferramentas que permitem o gerenciamento de configurações – tais como Chef, Puppet e outras. Temos visto mais operações DevOps implementarem essas ferramentas. De acordo com um recente estudo do DZone patrocinado pela CloudBees, 49% das organizações usam uma ferramenta de gerenciamento de configuração e 48% usam um sistema de controle de versão para alterações de infraestrutura e configuração do sistema. Mas, por outro lado, 73% ainda tem que usar scripts manuais para pelo menos metade de suas alterações de infraestrutura.

Orquestrando um processo

Você definiu seu pipeline; agora precisa orquestrá-lo. Este é um longo processo, mas aqui vão alguns passos que você pode tomar – como destacado em um whitepaper assinado por Andrew Phillips, da Xebia Labs e Kohsuke Kawaguchi, da CloudBees.

Assegure compilações reprodutíveis – Configure o sistema de compilação para usar um repositório limpo conectado ao espaço de trabalho de compilação e use um repositório central compartilhado para dependências de compilação.

Compartilhe artefatos de build via pipeline – Assegure que o artefato candidato seja usado por todas as compilações subsequentes em seu pipeline.

Escolha a granularidade certa para cada trabalho – Distribua todas as etapas no pipeline em várias tarefas, permitindo identificar os gargalos mais facilmente.

Visualize o pipeline – Crie uma visualização clara e acessível do pipeline de build para permitir uma comunicação de status suave e uma transparência do processo para os gerentes de negócios e outras partes interessadas.

A entrega contínua inicialmente pode parecer um desafio assustador, mas é uma viagem que vale a pena fazer. Existem ferramentas à disposição para tornar a tarefa mais gerenciável, incluindo muitos plugins Jenkins livremente disponíveis. Com um pouco de raça e muita previsão e planejamento, você pode começar em um projeto de CD que acabará por gerar benefícios tangíveis para você, sua equipe, sua empresa e seus clientes.

Fonte: DZone.com

21