Três elementos para ótimas versões de software

Combinar uma parte de arquitetura com duas partes de trabalho em equipe. Adicionar automação, e trabalhar.

Dan Radigan Dan Radigan

Em algum momento de sua carreira – se já não tiver passado por isso – você estará envolvido em uma versão de software monolítica. Ou seja, uma versão com erros difíceis e interdependências, que exige o trabalho de toda a equipe. Sem mencionar que, assim que for para produção, provavelmente serão necessários vários patches.

Enviar um código –liberá-lo– é um ótimo medidor da agilidade dos desenvolvedores de software. Todos os esforços para tornar o planejamento, a codificação e o teste mais rápidos são em vão se a liberação não for um processo suave. Para tornar a liberação um caso ágil, implantar a automação é fundamental, pois reúne os codificadores e os operadores no início da fase de desenvolvimento, praticando a integração contínua e abordando problemas imediatamente.

Manter o código em um estado passível de liberação é a característica do desenvolvimento ágil. Todo o planejamento enxuto e o desenvolvimento iterativo do mundo não terão significado se não for possível enviar o código no momento em que você decidir que ele está pronto. 

Ótimas versões de software começam com arquitetura modular

Em qualquer programa de software, é melhor fazer liberações frequentes e facilmente. Uma equipe pode tornar a liberação uma parte natural da cultura ágil ao criar (ou refatorar) uma arquitetura modular. Em vez de ter um aplicativo grande (como o monólito mencionado acima), modularize-o em várias partes desde o início do programa. Agrupe recursos similares em aplicativos ou componentes menores e tenha contratos de API claros entre os aplicativos e os componentes. Esses APIs podem ser testados automaticamente em todas as compilações para garantir a compatibilidade e reduzir o risco na liberação de software.

Uma arquitetura modular significa que não é necessário liberar toda a pilha de software em uma grande liberação rápida, e os contratos de API facilitam a atualização dos componentes e garantem a compatibilidade entre as versões. Em poucas palavras: versões modulares exigem menos partes móveis. E isso é convertido em liberações mais simples.

Excelentes versões de software começam são impulsionadas por ótimos relacionamentos

O desenvolvimento de software é raramente feito sem contexto. De fato, um ótimo desenvolvimento de softwareenvolve toda a equipe, desde gerenciamento de produtos até operações. Por exemplo, a equipe de operações é uma parceira fundamental na entrega do software para produção, pois ela ajuda na entrega do software aos usuários finais.

As equipes de desenvolvimento podem ajudar a informar e impulsionar as equipes de operações com essas técnicas:

  • Fazer uma lista de materiais clara para todas as liberações. As equipes de operações nem sempre têm o mesmo nível de contexto em relação à liberação que a equipe de desenvolvimento.
  • Para cada problema não resolvido na liberação, forneça um link para seu rastreador de problemas e o sistema de controle de origem para que a equipe de operações tenha conhecimento do contexto se surgirem problemas durante a implantação.
  • Às vezes os problemas aparecem ao levar o código do ambiente de desenvolvimento para o ambiente de preparo. Atente-se a esses problemas, pois eles poderão aparecer novamente durante a produção.
  • Falhas de implementação acontecem, então sempre forneça à equipe de operações um caminho de escalonamento claro para resolver os problemas de modo simples.

As equipes de operações podem auxiliar seus colegas de desenvolvimento com essas sugestões:

  • Quando surgirem problemas na produção, reserve um tempo para entender as causas e as soluções. Eles poderão ser evitados (ou tratados de modo melhor) no futuro.
  • Migre os dados de configuração da produção de volta para os ambientes de desenvolvimento e preparação para evitar desvios na configuração.

À medida que o código migra do desenvolvimento para a preparação e a produção, as principais configurações e os dados do usuário vão para a direção oposta: da produção para a preparação e para o desenvolvimento. Ter esse relacionamento bidirecional ajuda o ambiente de desenvolvimento a modelar de perto o ambiente de produção. Isso significa menos erros e surpresas no dia da liberação.

Ótimas liberações de software | Coach Agile Atlassian

Ótimas versões de software são simples de lançar

Automatize! Automatize! Automatize!

Automatizar uma liberação é o melhor modo de aprimorar a cultura de liberação. Se a liberação não for automatizada hoje, comece automatizando-a em um ambiente de preparação. Assim que todos puderem ver como isso é simples, a etapa natural será automatizar também as implantações da produção.

Se as liberações forem difíceis, tenha como prática fazê-las frequentemente – mesmo se for apenas para preparação. Fazer com que a equipe de desenvolvimento tenha contato com as dificuldades da liberação inspirará inovação para que o processo seja mais fácil (e automatizado).

O teste automatizado e a integração contínua são disciplinas fundamentais que impulsionam grandes liberações. Certifique-se de que os tempos de compilação e teste sejam tão curtos quanto o possível e lembre-se de que compilações fáceis de validar são fáceis de liberar. Isso porque o ciclo de validação segue mais de perto a equipe. 

Ótimas versões de software são excelentes!

Manter o código em um estado passível de liberação é a característica do desenvolvimento ágil.

Como fazemos isso

Liberações pequenas e frequentes são mais fáceis de gerenciar em relação a nossas propriedades SaaS. Para produtos para download, uma colaboração estreita entre as equipes de desenvolvimento, operações e engenharia é fundamental. Esses grupos devem trabalhar juntos para automatizar liberações e adaptar, proativamente, a automação para alterações futuras nos produtos. Muitas das equipes da Atlassian implantam automaticamente todas as compilações master bem-sucedidas em um ambiente de teste. No momento de promover uma liberação para preparação, ou liberar o produto para os clientes, essas equipes podem acionar a implantação da automação apertando apenas um botão. 

Como desenvolvedores de software, a liberação deveria ser o destaque de nosso ciclo de inovação. Vemos clientes interagindo com o código que escrevemos e eles fornecem feedback. Tornar as liberações uma parte natural do nosso trabalho diário facilitar colocar o código em produção e temos a satisfação de dizer: "Esse é o meu código!"