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 você vai estar envolvido — se é que já não esteve — em uma versão de software monolítica. Ou seja, uma versão de software com erros difíceis e interdependências, que exige o trabalho de toda a equipe o tempo todo. Sem mencionar que, assim que for para produção, deve precisar de várias correções.

O lançamento de código (da versão do software) é um ótimo medidor de agilidade para 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 o lançamento não for um processo tranquilo. É por esse motivo que as equipes ágeis e de DevOps recorrem à automação e unem desenvolvimento e operações no início da fase de desenvolvimento, praticam a integração contínua e lidam com os problemas na hora.

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 que os lançamentos sejam frequentes e fáceis. Uma equipe pode tornar o lançamento uma parte natural da cultura ágil ao criar (ou usar o refatoramento para alcançar) uma arquitetura modular. Em vez de ter um aplicativo grande (como o monólito mencionado acima), faça a modularizaçã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. Essas APIs podem ser testadas automaticamente em todos os builds para garantir a compatibilidade e reduzir o risco no lançamento de software.

Com a arquitetura modular, não é necessário lançar toda a pilha de software em um lançamento grande e rápido, e os contratos de API facilitam a atualização dos componentes e garantem a compatibilidade entre as versões. Resumindo: versões modulares de software exigem menos partes móveis. Assim, os lançamentos ficam 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 cada lançamento de software. As equipes de operações nem sempre têm o mesmo nível de contexto em relação ao lançamento 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 o lançamento de software é a melhor maneira de melhorar a cultura de lançamentos. Se o lançamento de software não estiver automatizado, comece essa automatização no ambiente de staging. Quando todos puderem ver como é simples, a próxima etapa natural vai ser automatizar também as implementações da produção.

Se os lançamentos forem difíceis, estabeleça como prática que sejam frequentes — mesmo se for apenas para staging. Fazer com que a equipe de desenvolvimento tenha contato com as dificuldades do lançamento 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

Lançamentos de software pequenos e frequentes são mais fáceis de gerenciar em relação às propriedades SaaS. Para produtos para download, uma colaboração estreita entre as equipes de desenvolvimento, operações e engenharia de build é fundamental. Esses grupos devem trabalhar juntos para automatizar lançamentos de software e ter proatividade na adaptação da automação para alterações futuras nos produtos. Muitas das equipes da Atlassian usam a implementação automática de todos os builds bem-sucedidos do ambiente principal ao de teste. Na hora de promover um lançamento de software para staging, ou lançar o produto para os clientes, essas equipes podem acionar a automação da implementação apertando apenas um botão.

Para desenvolvedores de software (como a gente), o lançamento do software deve ser o destaque do ciclo de inovação. É a oportunidade de ver clientes interagindo com o código que a gente escreveu e receber feedback deles. Ao tornar os lançamentos uma parte natural do trabalho diário, fica mais fácil colocar o código em produção e ter a satisfação de dizer: "Esse é o meu código!"