O que é Gerenciamento de Liberação?
O gerenciamento de versões cobre todas as fases da versão do software, desde o desenvolvimento e teste até a implantação. O gerenciamento de versão é necessário sempre que um novo produto é solicitado ou até mesmo alterações em um produto existente. Existem cinco etapas básicas de gerenciamento de versão que realizamos nesta situação:
- Planejamento de liberação
- Versão de lançamento
- Teste de aceitação do usuário
- Preparação para liberação
- Implante a versão.
Planejamento de liberação
A fase de planejamento é, na maioria dos casos, intensiva, pois é nesta fase que todo o nosso lançamento é organizado do início ao fim. Um plano de liberação sólido ajuda você a permanecer no caminho certo e garantir que os padrões e requisitos sejam cumpridos de forma adequada.
Ao planejar lançamentos, acreditamos que os aplicativos desenvolvidos por várias equipes precisam de uma abordagem consistente que deve ser lançada com antecedência. É aqui que o conceito de "liberação do trem" entra em jogo. Seguindo uma abordagem de lançamento de trem, as equipes podem agendar mudanças com base nos lançamentos e enviá-los para a Play Store.
O primeiro passo, antes mesmo de começarmos a implementar a liberação do trem, é definir os intervalos de tempo para cada etapa. No nosso caso, o estágio de desenvolvimento é de duas semanas. Em seguida, você precisa determinar quanto tempo deseja gastar em testes de integração e etapas de implantação. Abaixo está nosso exemplo de espaçamento:
- Clipping: começa no dia 1.
- Teste interno de versões alfa / UAT: Três dias.
- Implantação em fases [1%] Envio para revisão.
- Duração da revisão: 3 dias.
- Um dia em 20% dos usuários.
- Um dia com 50% dos usuários, no mesmo dia o crescimento para 100% dos usuários.
Com base no exemplo acima, levará um total de 10 dias até que uma nova versão do aplicativo esteja disponível.
A próxima etapa em relação aos lançamentos é criar um fluxo de trabalho que tanto nossas equipes quanto os principais interessados podem consultar ao longo do lançamento.
O fluxo de trabalho explica imediatamente como toda a versão funciona e qual função cada membro da equipe desempenha. Usamos a ferramenta Asana para exibir esses detalhes listados abaixo:
- Cronometragem
- Tempo de entrega estimado
- Requisitos
- Escala geral do projeto
Depois de desenvolver o plano, nós o submetemos a todas as partes interessadas (grupo de lançamento, gerente de produto e líderes de alto nível) para consideração. Em seguida, obtemos seu feedback sobre quaisquer lacunas ou problemas que eles veem nos requisitos ou no aplicativo.
Assim que o plano for aprovado e finalizado, a diversão começa!
Aspectos importantes do planejamento de lançamento
Criar e usar uma versão de trem parece ótimo, mas manter o processo ativo e em execução durante o planejamento de uma versão de trem pode ser complicado. Aqui estão alguns detalhes desse processo:
- O gerenciador de liberação gerencia e coordena a liberação.
- Aceitamos apenas códigos revisados e testados.
- Existe uma fase de implementação no processo.
- Estamos monitorando a versão lançada do aplicativo.
Edifício de lançamento
Assim que o plano de lançamento estiver pronto, você pode começar a testar o produto para lançamento. Este será o "teste em nível de usuário" real do produto com base nos requisitos descritos no plano de lançamento.
Em um determinado dia e hora (digamos, segunda-feira, às 15:00), o código é congelado / cortado. Até este ponto, as equipes têm tempo para examinar, testar e mesclar recursos no branch de desenvolvimento, que deve fazer parte do lançamento do trem. Às 15:00, o gerenciador de lançamento criará um branch de lançamento do branch de desenvolvimento. Esta etapa é automatizada com Jenkins.
Ao automatizar a transição do ramal, verificamos que todos os limites de desempenho, benchmarks e automação de versões anteriores para o mercado estão definidas para a atual como uma base de comparação, e a liberação do trem é bloqueada para novas alterações.
Depois que o código é congelado, um novo ciclo de desenvolvimento começa e todas as equipes participantes começam um novo sprint e continuam o desenvolvimento. A melhor coisa sobre o lançamento de um trem é que todos sabem sobre o próximo lançamento planejado e isso ajuda as pessoas a planejarem seu trabalho de acordo.
Lançamento da filial e controle de versão
O desenvolvimento do produto geralmente não para quando o desenvolvimento de um lançamento é concluído, então a primeira coisa que pensamos é em como congelar a compilação em teste e, ao mesmo tempo, trabalhar em novos recursos para o próximo lançamento. O que acontece se aparecer um erro na versão de lançamento? Como consertar o erro se você já adicionou um monte de coisas novas antes de o erro ser encontrado?
É aqui que entra a estratégia de ramificação inteligente, que tem o conceito de ramificação. Como o nome sugere, o código de ramificação significa que, assim como os ramos de uma árvore, o código dos ramos corresponde até certo ponto e então se divide em duas cópias.
Cada ramo pode se desenvolver independentemente um do outro. Nesse caso, uma cópia - o branch de lançamento - permanece congelada no local onde você concluiu o desenvolvimento. Isso é o que chamamos de galho cortado. Outro branch (branch de desenvolvimento) pode ser alterado com novo código e correções de bugs sem afetar o branch de lançamento. Se um bug for encontrado em um candidato a lançamento, uma correção pode ser desenvolvida e adicionada ao branch de lançamento. Assim, a próxima compilação que você construir a partir do branch de lançamento novamente pode ser idêntica à primeira, exceto por uma correção de bug. Dessa forma, você pode minimizar o risco de novos bugs em uma versão e isolar os bugs do novo código. Uma correção também é aplicada ao branch de desenvolvimento para garantir que o mesmo bug não chegue na próxima versão.Outro benefício da ramificação de versão é que, uma vez que você realmente publique seu código, você tem uma ramificação “congelada”, que é uma cópia exata da base de código publicada. Você pode voltar a este código a qualquer momento para referência.
Testes de aceitação do usuário
O teste de aceitação do usuário é a etapa mais crítica para o gerenciamento de lançamento devido à quantidade de dados coletados e às correções necessárias para tornar a construção exatamente o que ela precisa para ser lançada oficialmente.
Como o nome sugere, quando se trata desse tipo de teste, a figura chave é o usuário. Os usuários são exatamente as pessoas que usarão o aplicativo. Portanto, é imperativo tornar os usuários parte da estratégia geral de garantia de qualidade no processo de desenvolvimento de software. É aqui que o UAT se torna útil. Esse tipo de teste coloca as necessidades do usuário no centro do desenvolvimento do produto como nenhum outro. Aqui estão algumas das perguntas que esse teste tenta responder:
- Os usuários podem trabalhar com o aplicativo?
- O aplicativo se comporta conforme o esperado?
- O aplicativo resolve o problema do usuário?
Sem o UAT (Teste de Aceitação do Usuário) efetivo, as chances de sucesso do projeto que está sendo desenvolvido são significativamente reduzidas. É por isso que o costume é uma parte tão importante do processo de entrega. Conforme observado anteriormente, o UAT é parte de um processo iterativo. Conforme os erros são identificados, a equipe volta para corrigi-los. O bug foi corrigido no branch de lançamento e então mesclado de volta ao branch de desenvolvimento. A construção deve passar pelo estágio UAT para que possa ser examinada para implementação e liberação final.
Dica profissional: Sempre inclua testes internos no planejamento do UAT!
Uma maneira de acelerar o lançamento do UAT foi usar as faixas de teste internas fornecidas pelo Google. Isso nos ajuda a distribuir tickets para colegas com mais rapidez e capturar seu feedback, gerando tickets JIRA automaticamente. A equipe também garante que o feedback seja levado em consideração antes de enviar o teste final.
Preparação e liberação
Essa etapa é dar os retoques finais no produto, levando em consideração tudo o que foi entendido no UAT. A preparação da liberação também inclui uma verificação de qualidade final pela equipe de CQ. Durante a inspeção, a equipe de QA conduz verificações finais para garantir que a montagem atenda aos padrões mínimos de aceitação e requisitos de negócios do plano de liberação.
Depois que a revisão for concluída, o grupo de lançamento completará a liberação para iniciar a implantação. Antes que uma montagem possa ser implantada em um ambiente ativo, ela deve ser aprovada pelas equipes responsáveis relevantes, como a equipe de design. O UAT garante que o resultado seja validado antes de ser passado para o próximo estágio.
Implantar uma versão
Finalmente, o grande dia chegou quando todo o trabalho árduo de nossa equipe valeu a pena. É hora de lançar nosso produto na natureza para produção. Além de simplesmente enviar a montagem para o ambiente de produção, a fase de implantação também contém treinamentos de como trabalhar com o produto para o usuário final e para a empresa como um todo. Por exemplo, os usuários devem ser notificados sobre as mudanças em uma versão, e é aqui que “Novidades” não aparece no campo de visão. Temos um processo Jenkins automatizado que contém as seguintes etapas:
- Criação da montagem final [especificando o ramo e o nome da versão].
- "O que há de novo" adicionado no lançamento.
- Adicionando uma porcentagem de implantação.
- Cada estágio possui entrada manual de sinais (vermelho / verde) de cada um dos comandos [UAT, benchmark, performance, automação].
Assim que os sinais permitem a construção, ela é carregada automaticamente para a Play Store com uma porcentagem de implantação definida. As etapas internas de confirmação e marcação de uma versão, salvamento de assemblies no Dropbox, publicação e atualização para o canal Slack apropriado também são feitas através do mesmo pipeline.
Nesse caso, começamos implantando para 1%. Em cada etapa, é necessário acompanhar a revisão, bem como as ferramentas de monitoramento de quedas de liberação, a fim de identificar possíveis problemas.
Se o erro se tornar perceptível a 1%, a equipe tem a chance de reagir ao problema e decidir se o corrigirá rapidamente. Nesse caso, a liberação do trem não deve atingir a próxima etapa de implantação de 5%. Em vez disso, o problema é resolvido para 1% dos usuários. Corrigido o problema e verificada a solução, a liberação do trem pode ir para a etapa de 5%.
Tal como acontece com a versão simples do lançamento de trem, apenas o engenheiro de lançamento ou equipe de lançamento cuida do processo de lançamento depois que o código é congelado. Todas as outras equipes continuam com o desenvolvimento "normal".
Análise pós-lançamento
O trabalho de gerenciamento de versão não termina quando o código é publicado, continuando até que você esteja pronto para lançar a versão novamente. Se você deseja que seu aplicativo seja bem-sucedido, ele precisa de uma boa revisão, você também precisa seguir o lançamento em produção para corrigir bugs, implementar recursos de que as pessoas precisam e resolver os problemas do usuário. Para fazer isso, usamos o Firebase Crashlytics, onde rastreamos todas as falhas que exigem correção imediata.
Além disso, as avaliações de aplicativos fornecem uma visão sobre seu produto que é muito mais difícil de obter com outras abordagens. Tanto o Google Play quanto a App Store fornecem aos desenvolvedores de aplicativos a capacidade de responder a comentários, o que pode ser uma ferramenta extremamente útil para obter mais informações dos usuários sobre problemas de aplicativos. Os depoimentos podem identificar problemas que os usuários estão enfrentando com seu aplicativo e informar sobre mudanças futuras.
Vamos resumir
O gerenciamento de liberação supervisiona um processo extremamente dinâmico. Cada versão é uma oportunidade de refinar tudo, desde nosso fluxo de trabalho até nossa lista de verificação, à medida que descobrimos áreas de melhoria com ela. Aqui estão alguns dos benefícios que obtivemos:
- Aumentamos nossa produtividade melhorando a comunicação e coordenação.
- Nossos lançamentos são entregues mais rapidamente, o que também reduz os riscos. Essas mudanças envolvem uma equipe que pode entregar lançamentos de qualidade regularmente em alta velocidade.
- O gerenciamento de liberação também apóia a organização e otimização do método de desenvolvimento e operação.
Também vimos que nosso processo de gerenciamento de lançamento tornou mais fácil para todas as pessoas - de desenvolvedores e proprietários de produtos a executivos - visualizar um plano de alto nível e obter um instantâneo de seu progresso, trabalhar em sincronia.
- Curso DevOps
- Treinamento para a profissão de ciência de dados
- Treinamento de analista de dados
- Curso de Python para Desenvolvimento Web