Multi Stage em Desenvolvimento de Software

Multi Stage em Desenvolvimento de Software

Em desenvolvimento de software, multi stage consiste em instâncias do software instaladas em variados ambientes para que o mesmo seja testado e observado por diferentes perspectivas. Geralmente, os stages mais comuns são:

  • Development: Onde os programadores testam e observam as funcionalidades desenvolvidas;
  • Staging: Onde os stackholders validam as funcionalidades do software pela perspectiva da lógica de negócio;
  • Production ou Live: Software em uso.

A quantidade de stages e o planejamento de cada um deles é definido conforme o tamanho e complexidade do software. Em cada um dos stages o software é testado e observado de perspectivas diferentes conforme planejamento da equipe de software.

Um exemplo

Considere o desenvolvimento de um sistema para o gerenciamento de uma imobiliária e da qual a administração da mesma requer novas funcionalidades. Resumidamente, o que deve ser feito é:

  1. Desenvolver as funcionalidades;
  2. Apresentar as funcionalidades aos gestores da imobiliária;
  3. Disponibilizar o software com as novas funcionalidades para os usuários.

Para que a equipe de programadores avance no desenvolvimento das funcionalidades, faz-se necessário testar as mesmas e observar o comportamento do software. Para tal, os programadores precisam de uma instância do software para fazerem estas observações. Esta instância deve ser inacessível aos usuários do sistema e, convenientemente, esta instância pode ser chamada de stage Development.

Uma vez que as funcionalidades estejam implementadas no stage Development e aprovadas pela equipe de programação, antes de disponibilizar o software para os usuários, faz-se necessário que os gestores e profissionais que entendam da lógica de negócio imobiliário testem o software e validem suas funções. Para tal, pode se criar uma nova instancia do software que é uma cópia do software no stage Development e disponibilizar acesso aos profissionais que farão os testes, convenientemente, esta instância pode ser chamada de stage Staging.

Caso a instância do software no stage Staging não seja aprovada pelos gestores, os programadores reiniciam o ciclo fazendo correções e testando no stage Development. Assim que concluírem as correções, uma nova instância do software será instalada no stage Staging para que possa receber a validação dos gestores.

Uma vez que os gestores validem as novas funcionalidades, o software poderá ser disponibilizado para os usuários. Geralmente a instância do software acessível aos usuários é chamada de stage Production ou Live.

E assim, sempre que o software passar por um upgrade, antes do mesmo ser disponibilizado no stage Production, deve primeiro passar pelos stages Development e Staging.

Os principais benefícios do multi stage são:

  • Evitar que bugs sejam inseridos diretamente no stage Production;
  • Evitar que erros de lógica de negócio sejam inseridos diretamente no stage Production;

O uso de ferramentas como o Git e Gitflow ajudam a fazer o gerenciamento de modificações no código de forma eficiente onde cada stage pode ser um branch do Git. O Gitflow inclusive sugere um fluxo para o processo de gerenciamento de modificações de código (novas features, correções de bug, etc).

Veja aqui o tutorial de uso do Gitflow