Você deve versão de aplicativos da web?

35

Recentemente, tive uma discussão com um colega de trabalho sobre o controle de versão de aplicativos da web.

Eu não acho que você precise disso, e se você quer apenas uma verificação de sanidade para confirmar que seu último lançamento está ao vivo, acho que uma data (YYMMDD) provavelmente é boa o suficiente.

Estou fora da base? Estou perdendo o ponto? Devo usar números de versão de aplicativos da web

John MacIntyre
fonte

Respostas:

31

Se você revender o mesmo aplicativo Web para vários clientes, é absolutamente necessário versioná-lo.

Se é um site que só é instalado em um local, a necessidade é menos urgente, mas ainda assim provavelmente não poderia prejudicar. Você seria menos suscetível a problemas de fuso horário e outros. Diagnosticar um problema em uma biblioteca versão 1.0.2.25 é muito melhor do que procurar a compilação da biblioteca em 3 de novembro de 2010 11h15

Adam Lear
fonte
2
Se você revender o mesmo aplicativo Web para vários clientes, é absolutamente necessário versioná-lo. 100% verdade!
Gopi
8
Eu não concordo O controle de versão de seus lançamentos é sempre importante, aplicativo da web ou não. Essa é uma prática fundamental em qualquer método de desenvolvimento (excluindo a codificação de cowboys).
Martin Wickman
2
@ Sri Kumar: ainda sendo a palavra-chave aqui :)
Martin Wickman
2
@sri, o stacktraces é altamente dependente da versão. Se você tiver um relatório de erro com um rastreamento de pilha, deverá poder - rapidamente e com certeza - ter o código-fonte correspondente a esse rastreamento de pilha, mesmo que versões mais recentes tenham sido liberadas desde então. As versões modernas do software de log Java até apresentam as informações de versão no próprio stacktrace.
11
@anna lear - Só me ocorreu que eu nunca lhe respondi sobre a coisa do encontro. No controle de versão do YYMMDD, o exemplo de "3 de novembro de 2010 às 11:15 da manhã" seria versionado como 101103. Portanto, é 'versionado' pela data.
John MacIntyre
12

Se você pode automatizar o número da versão nas DLLs do seu aplicativo, isso não será prejudicial. Isso ajudará você a acompanhar as versões.

Geralmente, os aplicativos Web são lançados apenas em um local em que você os hospeda, portanto, não é tão importante quanto um aplicativo de desktop. Pode ajudar com retrocessos, rastreamento de erros (ou seja, em qual versão estava) e acompanhar a diferença entre os servidores de desenvolvedor, preparo e produção, se aplicável.

Eu gostaria de automatizá-lo - é o tipo de coisa que você pode configurar uma vez e usá-lo se / quando precisar.

Remus
fonte
Automatizando incluindo uma tag VCS para cada build. A maioria dos sistemas de construção AFAIK pode fazer isso atualmente.
JensG
9

Seus usuários não se importam com os números de versão, pois sempre têm a versão mais recente e melhor, mas você deve a si mesmo (e à sua equipe) saber exatamente qual versão está sendo executada ao vivo. Eventualmente, sua fonte de desenvolvimento fica fora de sincronia com o código ativo e você definitivamente deve saber. Então, rotule seus lançamentos na sua árvore svn / git e marque o aplicativo Web com essa tag.

Martin Wickman
fonte
11
absolutamente. você não pode se dar ao luxo de ter código não versionado em estado selvagem. mesmo se a versão for o SVN / hg / git commit #.
Paul Nathan
9

Se você tem instâncias de desenvolvimento / teste, é muito importante que os membros da equipe do projeto possam ver qual construção / revisão estão testando.

Jeremy
fonte
4

Além do que os outros disseram, eu acrescentaria que o controle de versão também é importante do ponto de vista de marketing. Uma nova versão é algo novo que pode ser comercializado para clientes em potencial ou existentes. Permite que os clientes saibam que algo é "novo" e veem que as coisas estão avançando. Ele fornece bons agrupamentos de novos recursos. E parece mais profissional.

GrandmasterB
fonte
4

Eu digo que, para qualquer coisa, menos um aplicativo da Web trivial, você deve fazer a versão. Existem duas noções um pouco diferentes em ação aqui:

  1. aplicação como um todo
  2. arquivos individuais

Independentemente da situação, acredito que os arquivos devem ter números individuais de versão (ou revisão). Idealmente, isso seria tratado automaticamente pelo seu sistema de controle de versão. Como foi afirmado por outros, é mais fácil consultar o número da versão do arquivo do que a data e a hora.

Se você possui (ou pode ter) mais de uma instalação ativa do aplicativo, ele deve ser versionado como um todo. Essa também é uma boa prática se você tiver ambientes de desenvolvimento e teste separados (como você provavelmente deveria). Cada número de versão do aplicativo (ou release) refere-se a uma coleção de arquivos individuais em números de versão específicos. Embora lidar com tudo isso seja um fardo extra, é mais fácil fazer check-out de uma versão específica do que arquivos individuais em números de revisão específicos.


Isso me faz pensar em uma noção de linguística. Dizem que se você não pode expressar algo em um idioma, não pode pensar nisso (nesse idioma). Penso na palavra alemã "Schadenfreude". É muito mais fácil pensar (e falar) dessa noção de "sentir alegria devido ao infortúnio de outra pessoa" referindo-se a essa palavra do que à sua definição. Essa é a razão pela qual a palavra entrou em uso no idioma inglês.

Da mesma forma, os números de versão facilitam a fala (e a reflexão) do seu aplicativo e de seus arquivos em estados específicos. Se você é uma equipe de uma pessoa, trabalhando em um aplicativo, provavelmente não faz uma grande diferença. No entanto, à medida que as coisas ficam mais complicadas, é melhor ter esses rótulos disponíveis para uso.

George Marian
fonte
4

Você deve versionar seu aplicativo da web com o ID de construção do servidor de construção e ter esse ID incluído em todos os relatórios de erros.

Isso permitirá que você volte no tempo, caso precise corrigir um bug relatado em uma versão mais antiga que não está presente na produção.


fonte
1

Da sua pergunta, é claro que você tem em mente um aplicativo da web simples

  • Acessível apenas por uma GUI da Web e não por uma API da Web (serviço) . Se você tiver usuários acessando o aplicativo usando uma API, precisará fazer a versão. Se você alterar a API, interromperá os clientes, portanto, precisará manter uma versão diferente da API ao mesmo tempo.

  • Apenas uma instância em execução no momento . Mesmo se você tiver apenas o cara da web, se tiver mais instalação, precisará saber qual cliente está executando qual versão.

  • Com tempo de inatividade aceitável para atualização da versão ao vivo. Existe um problema possivelmente enorme que é o banco de dados . Alterações importantes nas versões mais recentes vêm com alterações na estrutura subjacente dos dados. Se você tiver apenas uma versão em execução no momento, provavelmente precisará desativar a versão antiga, atualizar o banco de dados e ativar a nova versão. O que resulta em tempo de inatividade do aplicativo. Isso pode ser aceitável dependendo do número e tipo de usuários.

OGrandeDiEnne
fonte
Concordando, criar uma API da Web sem versão é uma incompetência tão grosseira que a maioria das pessoas não confiaria nela. E sim, estou falando de uma instância do aplicativo.
John MacIntyre
Considere também o terceiro ponto, que ainda é válido mesmo para aplicativos de instância única.
OGrandeDiEnne
Eu li isso e, embora seja definitivamente importante e complicado, não tenho certeza de que seja um problema de versão. Isso não é mais um problema de implantação? KWIM?
John MacIntyre
Sim e não. (Isso foi há muito tempo, mas eu acho ...). O ponto era que, se você precisar fazer a versão do seu código, provavelmente precisará também a versão da estrutura db.
OGrandeDiEnne
0
  • Uso interno apenas com base de instalação limitada?
  • Ou passível de ter várias versões em estado selvagem?

Temos apenas o primeiro, portanto, use apenas o número da versão para verificar a integridade após a liberação. Não precisamos rastrear muitas versões em uso ao mesmo tempo.

gbn
fonte
0

Se o seu aplicativo da Web consistir em vários módulos, tanto no cliente quanto no servidor, cada módulo deverá ser versionado. E cada combinação de versões de módulo no cliente e no servidor deve receber um ID exclusivo, um ID que deve estar presente em todas as mensagens de log e erro.

Ao usar essa convenção, sempre será possível recriar o estado em que o aplicativo Web estava em um determinado momento.

Na minha opinião, como os aplicativos da Web atualmente são criados usando linguagens dinâmicas dos dois lados, servidor e cliente, não deve haver motivo para recarregar um aplicativo da Web atualizado, a menos que o usuário reinicie o navegador ou recarregue manualmente a página.

Somente as peças ou módulos atualizados no aplicativo Web devem ser recarregados sem afetar o estado geral do aplicativo.

Por que você pode perguntar? Bem, ao impor isso, o aplicativo da Web, por seu design, será mais robusto, correto e provavelmente mais fácil de manter. Se o aplicativo Web sempre exigir atualização simultânea de servidor / cliente, provavelmente não será o caminho certo.

Ernelli
fonte
0

Sim, você deve fazer a versão! E deve haver uma tag no seu sistema de controle de revisão (como subversion, git, mercurial etc.) que corresponda ao número da versão.

A tag permite que você volte e faça uma ramificação. Por exemplo: a versão atual da produção possui um erro, mas você não pode corrigi-lo porque o código na sua máquina simplesmente não está pronto para abrir a porta. Se você o tiver marcado no seu RCS, poderá ramificar-se nesse tag e corrigir o erro na versão exata do código que está sendo executado na produção.

Brad Cupit
fonte
0

Pessoalmente, acho que você deve fazer a versão de qualquer maneira, mas um grande benefício da versão de aplicativos da Web específicos para sites é que ele pode fazer alterações no conteúdo estático muito mais fáceis de gerenciar.

Por exemplo, digamos que você tenha um arquivo mysite.css com uma data de validade futura muito distante (que geralmente você deseja fazer para que seja armazenada em cache no navegador em cada página). Se você alterar um estilo nesse arquivo, ninguém que já esteve no seu site o verá a menos que faça algo para limpar esse arquivo do cache.

Se você estiver criando um versionamento do site, poderá alterar todas as referências css em sua compilação para algo como mysite.css? V = 1234, que permitirá manter a data de validade futura e não se preocupar com alterações futuras, como na próxima compilação será mysite.css? v = 1235.

FinnNk
fonte
0

Sim você deveria. Por razões de distribuição apontadas aqui por outras respostas.

Mas entendo, por que você está fazendo a pergunta. A abordagem de aplicativos da Web é orientada por custos. É o oposto da abordagem tradicional de redução, onde os custos incluem mídia física, distribuição, instalação, cópia impressa da documentação, treinamento e suporte técnico. Qualquer coisa que possa ser excluída deve ser excluída.


fonte
0

Só para esclarecer, suponho que você esteja falando de um tipo de versão visível ao usuário de algum tipo e não desista do controle de versão no desenvolvimento. (se você acha que não precisa de controle de versão no desenvolvimento, está errado, precisa de controle de versão).

Para um projeto de hospedagem única, não é estritamente necessário, porque, se surgir alguma dúvida, você sempre pode olhar para o host e confirmar o que está realmente em execução. É meio legal, porém, porque pode ser útil uma ou duas vezes. Cabe a você decidir se será útil ou não.

Para um projeto com várias hospedagens, não é realmente opcional. Os hosts diferentes acabarão com versões diferentes e você precisará diferenciá-los no final do usuário.

Michael Kohne
fonte