Dovresti versione applicazioni web?


35

Di recente ho avuto una discussione con un collega sulle applicazioni web di versioning.

Non penso che tu ne abbia affatto bisogno, e se vuoi solo un controllo di integrità per confermare che l'ultima versione è in diretta, penso che una data (YYMMDD) sia probabilmente abbastanza buona.

Sono fuori base? Mi manca il punto? Devo usare i numeri di versione dell'applicazione Web

Risposte:


31

Se rivendi la stessa applicazione Web a più clienti, dovresti assolutamente eseguirla.

Se si tratta di un sito Web installato solo in una posizione, la necessità è meno grave, ma probabilmente non potrebbe far male. Saresti meno suscettibile ai problemi del fuso orario e simili. La diagnosi di un problema in una versione 1.0.2.25 della libreria è molto più semplice rispetto alla ricerca della build della libreria il 3 novembre 2010, 11:15


2
Se rivendi la stessa applicazione Web a più clienti, dovresti assolutamente eseguirla. 100% vero!
Gopi,

8
Non sono d'accordo Il controllo delle versioni delle tue versioni è sempre importante, app Web o meno. Questa è una pratica fondamentale in qualsiasi metodo di sviluppo (esclusa la codifica da cowboy).
Martin Wickman,

2
@Sri Kumar: pur essendo la parola chiave qui :)
Martin Wickman,

2
@sri, stacktraces dipendono fortemente dalla versione. Se hai una segnalazione di errore con uno stacktrace devi essere in grado - rapidamente e con certezza - di avere il codice sorgente corrispondente a quello stacktrace, anche se da allora sono state rilasciate versioni più recenti. Le versioni moderne del software di registrazione Java presentano persino le informazioni sulla versione nello stacktrace stesso.

1
@anna lear - Mi è appena venuto in mente che non ti ho mai risposto riguardo alla data dell'appuntamento. In YYMMDD, l'esempio di "3 novembre 2010 11:15" verrebbe aggiornato come 101103. Quindi viene "aggiornato" in base alla data.
John MacIntyre,

12

Se riesci ad automatizzare il numero di versione nelle DLL della tua applicazione, non potrebbe farti male. Ti aiuterà a tenere traccia delle versioni.

Generalmente, le app Web vengono rilasciate solo in una posizione in cui la stai ospitando, quindi non è così importante come un'applicazione desktop. Può aiutare con i rollback, il tracciamento dei bug (ovvero in quale versione era presente) e tenere traccia della differenza tra server di sviluppo, di gestione temporanea e di produzione, se applicabile.

Mi occuperei di automatizzarlo - è il tipo di cose che puoi configurare una volta e usarlo se / quando ne hai bisogno.


Automatizzazione incluso un tag VCS per ogni build. La maggior parte dei sistemi di build AFAIK può farlo in questi giorni.
JensG,

9

I tuoi utenti non si preoccupano dei numeri di versione in quanto hanno sempre la versione più recente e più grande, ma devi a te stesso (e al tuo team) sapere esattamente quale versione è in esecuzione dal vivo. Alla fine la tua fonte di sviluppo si sincronizza con il codice live e quindi devi assolutamente saperlo. Quindi etichetta le tue uscite nel tuo albero svn / git e segna l'app web con quel tag.


1
assolutamente. non puoi permetterti di avere un codice non verificato in natura. anche se la versione è SVN / hg / git commit #.
Paul Nathan,

9

Se hai un'istanza di sviluppo / test è abbastanza importante per i membri del team di progetto poter vedere quale build / revisione stanno testando.


4

Oltre a ciò che hanno detto gli altri, aggiungerei che il controllo delle versioni è importante anche dal punto di vista del marketing. Una nuova versione è qualcosa di nuovo che può essere commercializzato a clienti potenziali o esistenti. Fa sapere ai clienti che qualcosa è "nuovo" e vede che le cose stanno andando avanti. Fornisce simpatici raggruppamenti di nuove funzionalità. E sembra più professionale.


4

Dico che per tutto tranne che una banale applicazione web, dovresti versione. Ci sono due nozioni leggermente diverse al lavoro qui:

  1. applicazione nel suo insieme
  2. singoli file

Indipendentemente dalla situazione, credo che i file dovrebbero avere numeri di versione (o revisione) individuali. Idealmente, questo verrebbe gestito automaticamente dal sistema di controllo della versione. Come è stato affermato da altri, è più facile fare riferimento al numero di versione di un file piuttosto che alla sua data e ora.

Se hai (o potresti avere) più di un'installazione live dell'applicazione, è necessario che la versione sia completa. Questa è anche una buona pratica se hai ambienti di sviluppo e test separati (come probabilmente dovresti). Ogni numero di versione dell'applicazione (o rilascio) si riferisce a una raccolta di singoli file con numeri di versione specifici. Mentre affrontare tutto ciò è un onere aggiuntivo, è più facile controllare una versione specifica rispetto ai singoli file con numeri di revisione specifici.


Questo mi fa pensare a una nozione di linguistica. Si dice che se non puoi esprimere qualcosa in una lingua, non puoi pensarci (in quella lingua). Penso alla parola tedesca "Schadenfreude". È molto più facile pensare (e parlare) a questa nozione di "provare gioia a causa della sfortuna di qualcun altro" facendo riferimento a quella parola, piuttosto che alla sua definizione. Questo è il motivo per cui la parola è entrata in uso in lingua inglese.

Allo stesso modo, i numeri di versione rendono più facile parlare (e pensare) dell'applicazione e dei suoi file in stati specifici. Se sei un team di una persona, che lavora su una sola applicazione, probabilmente non fa una grande differenza. Tuttavia, man mano che le cose si complicano, è meglio avere queste etichette disponibili per l'uso.


4

È necessario eseguire la versione dell'applicazione Web con l'ID build dal proprio server di build e tale ID racchiuso in tutte le segnalazioni di bug.

Ciò ti consentirà di tornare indietro nel tempo nel caso in cui sia necessario correggere un bug segnalato su una versione precedente non attualmente presente in produzione.


1

Dalla tua domanda è chiaro che hai in mente una semplice applicazione web

  • Accessibile solo da una GUI Web e non da un'API Web (-service) . Se hai utenti che accedono all'applicazione utilizzando un'API devi eseguirne la versione. Se si modifica l'API, si rompono i client, quindi è necessario mantenere contemporaneamente versioni diverse dell'API.

  • Solo un'istanza in esecuzione al momento . Anche se hai solo il ragazzo del web, se hai più installazioni devi sapere quale cliente sta eseguendo quale versione.

  • Con tempi di inattività accettabili per l'aggiornamento della versione live. C'è forse un grosso problema che è il database . Le modifiche importanti con le versioni più recenti sono accompagnate da modifiche nella struttura sottostante dei dati. Se hai una sola versione in esecuzione al momento, dovrai probabilmente disattivare la versione precedente, aggiornare il database e attivare la nuova versione. Ciò si traduce in tempi di inattività dell'applicazione. Questo può essere accettabile a seconda del numero e del tipo di utenti.


D'accordo, la creazione di un'API Web senza rivali è un'incompetenza così grave che la maggior parte delle persone non si fiderebbe di essa. E sì, sto parlando di un'istanza dell'app.
John MacIntyre,

Considera anche il terzo punto, che è ancora valido anche per le applicazioni a istanza singola.
OGrandeDiEnne

L'ho letto e sebbene sia sicuramente importante e difficile, non sono sicuro che sia un problema di versione. Non è più un problema di distribuzione? KWIM?
John MacIntyre,

Sì e no. (È stato tanto tempo fa, ma immagino ..) il punto era che se hai bisogno di una versione del tuo codice molto probabilmente dovrai anche versione della struttura del db.
OGrandeDiEnne,

0
  • Uso interno solo con una base di installazione limitata?
  • O sei in grado di avere più versioni in natura?

Abbiamo solo il primo, quindi usa solo il numero di versione per il controllo di integrità dopo il rilascio. Non è necessario tenere traccia di molte versioni in uso contemporaneamente.


0

Se l'applicazione Web è composta da più moduli, sia nel client che nel server, ogni modulo deve essere aggiornato. E ogni combinazione di versioni del modulo sia sul client che sul server dovrebbe ricevere un ID univoco, un ID che dovrebbe essere presente in tutti i messaggi di registrazione e di errore.

Utilizzando tale convenzione, sarà sempre possibile ricreare lo stato in cui si trovava l'app Web in un determinato momento.

A mio avviso, dal momento che le webapp in questi giorni sono costruite utilizzando linguaggi dinamici su entrambi i lati, server e client, non ci dovrebbero essere motivi per ricaricare un'app Web aggiornata a meno che l'utente non riavvii il browser o ricarichi manualmente la pagina.

Solo le parti o i moduli aggiornati nell'app Web devono essere ricaricati senza influire sullo stato generale dell'applicazione.

Perché potresti chiedere? Bene, applicandolo, l'app Web sarà, dal suo design, più roboust, corretta e probabilmente più facile da mantenere. Se l'app Web richiede sempre l'aggiornamento simultaneo di server / client, probabilmente non è stata costruita nel modo giusto.


0

Sì, dovresti versione! E dovrebbe esserci un tag nel tuo sistema di controllo delle revisioni (come sovversione, git, mercurial, ecc.) Che corrisponde al numero di versione.

Il tag ti consente di tornare indietro e creare un ramo. Ad esempio: l'attuale versione di produzione ha un bug, ma non è possibile risolverlo perché il codice sul tuo computer non è pronto per uscire. Se lo hai taggato nel tuo RCS, puoi diramare quel tag e correggere il bug nella versione esatta del codice in esecuzione in produzione.


0

Personalmente penso che dovresti comunque eseguire la versione, ma un grande vantaggio del controllo delle versioni delle applicazioni Web specifico dei siti Web è che può apportare modifiche ai contenuti statici molto più facili da gestire.

Ad esempio, supponiamo che tu abbia un file mysite.css che ha una data di scadenza molto futura (cosa che generalmente desideri fare in modo che sia memorizzato nella cache del browser in ogni pagina). Se poi modifichi uno stile in quel file, nessuno che è già stato sul tuo sito lo vedrà a meno che non facciano qualcosa per cancellare quel file dalla sua cache.

Se stai eseguendo il versioning del tuo sito anche se potresti cambiare tutti i riferimenti css nella tua build in qualcosa come mysite.css? V = 1234 che ti consentirà di mantenere la data di scadenza futura e non preoccuparti di cambiamenti futuri come nella prossima build sarò mysite.css? v = 1235.


0

Si, dovresti. Per motivi di distribuzione indicati qui da altre risposte.

Ma vedo, perché stai ponendo la domanda. L'approccio alle app Web è basato sui costi. È l'opposto dell'approccio retrawind legacy, in cui i costi comprendono supporti fisici, distribuzione, installazione, copia cartacea della documentazione, formazione e supporto tecnico. Tutto ciò che può essere escluso, dovrebbe essere escluso.


0

Giusto per essere chiari, presumo che tu stia parlando di un numero di versione visibile dall'utente di qualche tipo, e non rinunciare al controllo della versione in fase di sviluppo. (se pensi di non aver bisogno del controllo della versione in fase di sviluppo, allora ti sbagli, hai bisogno del controllo della versione).

Per un progetto su host singolo non è strettamente necessario, perché in caso di domande puoi sempre guardare l'host e confermare ciò che è realmente in esecuzione. È un po 'carino, però, perché potrebbe tornare utile una o due volte. Dipende da te se pensi che sarà utile o meno.

Per un progetto multi-host, non è davvero facoltativo. Diversi host alla fine finiranno con versioni diverse e dovrai essere in grado di distinguerli dal lato utente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.