Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 1362 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Consultores
Postado

Olá pessoal.

   Levanta aí que vamos falar da atualização do ACBr.

Wake Up Holiday GIF by Dunkin’

   Resolvemos criar esse tópico devido a muitas dúvidas relacionadas a isso e depois de um debate interessante sobre o assunto. Principalmente quando entra a questão de quando atualizar o programa no cliente.

   Na sua empresa, vocês devem entender que o Projeto ACBr tem uma forma de desenvolvimento própria. Vocês não precisam seguir o mesmo pra seu desenvolvimento porque os objetivos talvez sejam diferentes. Mas vamos entrar em detalhes depois... agora...

A pergunta mais importante: Quando Atualizar o ACBr?

   Podemos resumir no seguinte: atualize o o mais frequentemente quanto possível. Mas a resposta completa vai depender da sua equipe, do tamanho da empresa e das alterações que foram disponibilizadas.

   A chave é que vocês devem se sentir como desenvolvedores do ACBr. O código é open-source e é também de vocês. Afinal, ele roda na sua aplicação e afeta seus clientes. Além disso, geralmente as funções que usamos do ACBr são cruciais no sistema.

   Mesmo que vocês sejam desenvolvedores que utilizam as libs ou o ACBrMonitore e, tenham a impressão que não se encaixam nesse perfil, os princípios delineados aqui podem ajudar.

Como é o fluxo de desenvolvimento do ACBr?

   No Projeto ACBr, em especial no desenvolvimento dos componentes, nós usamos um fluxo de desenvolvimento que não é totalmente orientado a versões. Esse fluxo é algo mais parecido com o trunk based development do que com um GitFlow.

   Para quem vê de fora, isso significa basicamente:

  1. Controlamos a versão dos componentes via o versionamento do próprio SVN. Assim, podemos reproduzir qual versão uma pessoa tem instalada apenas sabendo a revisão do código que ela usa;
  2. Não ficamos criando branches para desenvolvimento de funções e recursos. Nós temos um repositório branches, mas não ficamos desenvolvendo recursos nos componentes atuais nele a menos que seja estritamente necessário (Por exemplo: um refactoring total do componente);
  3. Quem usa os componentes tem os novos recursos, correções, e respostas muito mais rapidamente do que teria de outra forma;

   Pra não delongar mais nisso (que não é o foco desse artigo), se quiser ver um exemplo de empresa que usa esse tipo de desenvolvimento, recomendo esse artigo "Moving away from GitFlow" (de Niklas Gray).

   Mas isso funciona pra nós em especial porque (a) quem usa os componentes também é desenvolvedor e (b) temos uma resposta muito rápida quando acontecem problemas. Assim, isso não significa necessariamente que vai funcionar na sua empresa.

   Voltando a pergunta importante...

Como estabelecer uma rotina de avaliar se e quando deve ser feita a atualização do ACBr?

   Se vocês não tem nenhuma rotina pra avaliar quando e se devem atualizar o ACBr, sugerimos que estabeleçam uma.

   A princípio, sugerimos o seguinte: Leiam os logs do SVN pelo menos uma vez por dia. Não é preciso atualizar para ler o log. Basta usar o "Show Log" do SVN.

   Ao ler o log do SVN, verifique se:

  1. Alguma alteração feita afeta seus clientes em produção? (correção de bug, alteração de legislação, etc...)
  2. Algum novo recurso que você quer utilizar foi implementado?
  3. Se são poucas alterações e elas não são essenciais, você (ou alguém na sua equipe) tem tempo para testar?
  4. São muitas alterações que foram feitas?
  5. Já passou muito tempo desde que foi feita a última atualização? Por exemplo mais de 3 semanas?

   Caso a resposta a qualquer pergunta acima seja "sim", atualize e teste seu desenvolvimento. No mínimo você vai estar mantendo o código do seu aplicativo com o mínimo de alterações possíveis. Então quando surgir uma situação que vocês precisem atualizar com urgência, não vai haver uma grande quantidade de trabalho acumulado.

   Caso negativo, siga com as suas tarefas.

   É claro que, se vocês estão no meio de uma situação que precisa que todo o desenvolvimento fique focado no produto de vocês, talvez não seja possível atualizar o ACBr. Por exemplo, pode ser que um problema no software esteja exigindo a atenção urgente de toda equipe. Mas geralmente, pelo menos um dev deve conseguir dar uma lida nos logs e fazer a avaliação se é necessário ou não atualizar.

   Nota: Vale lembrar também que nem toda atualização precisa de uma reinstalação. Você precisa reinstalar quando:

  • As alterações envolvem partes visuais dos componentes;
  • Os fontes não são recompilados ao fazer um build em sua aplicação;

   Depois de atualizar, teste as partes de sua aplicação que usam os componentes modificados assim que possível. Primeiro na sua máquina de desenvolvimento, depois em outras máquinas.

   O último a ser atualizado é o servidor de Build. A partir daí já entra no "deploy", quer dizer, na entrega do software para o cliente.

Como impactar da menor maneira possível meu cliente com meu software após atualização do ACBr?

   Gostaria de enfatizar que você precisa ter estratégias diferentes. Uma para quando você deve atualizar o ACBr (desenvolvimento) e uma para quando você deve atualizar o seu sistema no seu cliente (deploy). Tudo bem que as duas estratégias podem ser interligadas, como é o caso quando se usa um sistema de "Implantação Contínua". Mas são duas coisas diferentes que você precisa ter em mente.

   Para reduzir o impacto nos clientes, faça o "deploy" de forma escalonada. Quer dizer, instale a nova versão primeiro em clientes selecionados. A princípio, escolha apenas dois, três ou no máximo quatro. Quanto mais crítica a alteração, mais seletivo você precisa ser.

   Dentre sua carteira de clientes, minha sugestão é para escolher aqueles que:

  • Precisam da "novidade" apresentada no novo executável
  • Tem um movimento menor (e assim darão um grau menor de dor de cabeça caso algum imprevisto aconteça)
  • Ficam mais próximos de sua empresa (posso deslocar um técnico ou até mesmo um "dev" pra lá rapidamente se realmente necessário, nem que seja virtualmente?)
  • São mais pacientes e compreensivos (paciência nunca é demais, apenas cuide de não abusar deles)

   Só depois de um tempo de teste nesses clientes, envie a nova versão para os outros.

   Você pode continuar escalonando a entrega avaliando o tamanho da sua equipe e número de clientes que possui.

   De qualquer maneira você precisa avaliar o que é melhor pra sua empresa. Mas como decidir? Muitas questões devem ser levadas em conta.

   É verdade que ninguém deveria ficar desesperado para instalar uma nova versão se não teve condições de fazer testes. Também, antes de enviar uma versão aos clientes é preciso levar em conta a quantidade de clientes, o tamanho da equipe de desenvolvimento, da equipe de suporte e até o plano de negócios da empresa.

   Mas por outro lado, as seguintes perguntas precisam também ser analisadas: Só se envia uma nova versão ao cliente para resolver problemas? Não são apresentadas ao cliente os novos recursos como algo que facilita a vida dele? Não seria muito mais interessante comercialmente se o programa tivesse sempre novidades para cativar o usuário? Não será muito mais difícil encontrar e resolver um problema se de uma versão para outra houverem muitas alterações no código? Que controle se faz de versão do software que está instalado no cliente? Consegue-se facilmente reproduzir no ambiente de desenvolvimento? Sua equipe tem tamanho suficiente pra cuidar de várias versões diferentes?

   Temos certeza que a análise dessas questões vão ajudar vocês a tomarem boas decisões.

  Bom trabalho por aí.

Lets Go GIF by TELUS

  • Curtir 12
  • Obrigado 4

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.