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
Buscar tópicos

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

O código liberado (a versão) é 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, implementar 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 em que passível de liberação é a marca do desenvolvimento ágil. Todo o planejamento enxuto e desenvolvimento iterativo do mundo não vão significar nada se você não puder lançar o código no momento em que decidir que 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 ele 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 builds 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 estas técnicas:

  • Deixe clara a lista de materiais para cada release. As equipes de operações nem sempre têm o mesmo nível de contexto em torno da liberação que a equipe de desenvolvimento.
  • Para cada item resolvido na versão, forneça um link para o rastreador de itens e o sistema de controle de origem para que a equipe de operações tenha o mesmo nível de contexto se surgirem problemas durante a implementação.
  • Às vezes, aparecem itens ao enviar código do ambiente de desenvolvimento para o ambiente de staging. Remova esses itens, pois eles podem aparecer novamente durante o processo de produção.
  • Falhas de implementação ocorrem, portanto, sempre dê à equipe de operações um caminho de escalação claro para resolver os problemas com tranquilidade.

As equipes de operações podem auxiliar os colegas de desenvolvimento com estas sugestões:

  • Quando surgirem problemas na produção, dedique um tempo para entender as causas e soluções. Eles vão ser evitados (ou tratados mais atenciosamente) no futuro.
  • Migre os dados de configuração de volta para os ambientes de staging e desenvolvimento para evitar deriva da configuração.

À medida que o código migra de desenvolvimento para staging e produção, as principais configurações e os dados do usuário vão para a direção oposta: de produção para staging e para desenvolvimento. Ter esse relacionamento bidirecional ajuda o ambiente de desenvolvimento a modelar de perto o ambiente de produção. Isso significa menos bugs 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 estiver automatizada no momento, comece automatizando a liberação em um ambiente de staging. Assim que todos puderem ver como isso é simples, a etapa natural vai ser automatizar também as implementações da produção.

Se as liberações forem difíceis, se acostume a fazer liberações com frequência, mesmo se for apenas para staging. Fazer com que a equipe de desenvolvimento tenha contato com as dificuldades da liberação vai 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. Garanta que os tempos de build e teste sejam tão curtos quanto o possível e não se esqueça de que builds 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 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, com iniciativa, a automação para alterações futuras nos produtos. Muitas das equipes da Atlassian implementam automaticamente todas as builds bem-sucedidas de um ambiente mestre para um ambiente de teste. No momento de promover uma liberação para staging, ou liberar o produto para os clientes, essas equipes podem acionar a implementação da automação apertando apenas um botão.

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