Devez-vous version des applications Web?

35

J'ai récemment discuté avec un collègue de la gestion de versioning d'applications Web.

Je ne pense pas que vous en ayez besoin du tout, et si vous voulez juste un contrôle de cohérence pour confirmer que votre dernière version est en direct, je pense qu'une date (AAMMJJ) est probablement suffisante.

Suis-je en dehors de la base? Est-ce que je manque le point? Devrais-je utiliser les numéros de version d'applications Web

John MacIntyre
la source

Réponses:

31

Si vous revendez la même application Web à plusieurs clients, vous devez absolument la mettre à niveau.

S'il s'agit d'un site Web qui n'est jamais installé qu'à un seul endroit, le besoin est moins pressant, mais cela ne risque probablement pas de nuire. Vous seriez moins susceptible aux problèmes de fuseau horaire et autres. Diagnostiquer un problème dans une bibliothèque version 1.0.2.25 est beaucoup plus agréable que de rechercher la bibliothèque créée le 3 novembre 2010 à 11h15.

Adam Lear
la source
2
Si vous revendez la même application Web à plusieurs clients, vous devez absolument la mettre à niveau. 100% vrai!
Gopi
8
Je ne suis pas d'accord Le contrôle des versions de vos versions est toujours important, application Web ou non. Ceci est une pratique fondamentale dans toute méthode de développement (codage cowboy exclu).
Martin Wickman
2
@Sri Kumar: c'est pourtant le mot clé :)
Martin Wickman
2
@sri, les stacktraces dépendent fortement de la version. Si vous avez un rapport d'erreur avec un stacktrace, vous devez pouvoir disposer - rapidement et avec certitude - du code source correspondant à ce stacktrace, même si de nouvelles versions ont été publiées depuis. Les versions modernes du logiciel de journalisation Java présentent même les informations de version dans le stacktrace lui-même.
1
@anna learn - Je viens de penser que je ne vous ai jamais répondu à propos de la date. Dans le contrôle de version AAMMJJ, votre exemple de "3 novembre 2010 à 11h15" serait au numéro de version 101103. Il est donc "versionné" à la date.
John MacIntyre
12

Si vous pouvez automatiser le numéro de version sur les DLL de votre application, cela ne fait aucun mal. Cela vous aidera à garder une trace des versions.

En règle générale, les applications Web sont publiées uniquement à un endroit où vous les hébergez. Par conséquent, ce n'est pas aussi important qu'une application de bureau. Il peut vous aider avec les restaurations, le suivi des bogues (c.-à-d. Quelle version était celle-ci) et le suivi de la différence entre les serveurs de développement, de transfert et de production, le cas échéant.

J'essaierais de l'automatiser - c'est le genre de chose que vous pouvez configurer une fois et l'utiliser si / quand vous en avez besoin.

Remus
la source
Automatisation incluant une balise VCS pour chaque construction. Autant que je sache, la plupart des systèmes de construction peuvent le faire de nos jours.
JensG
9

Vos utilisateurs ne s’intéressent pas aux numéros de version car ils ont toujours la dernière et meilleure version, mais vous vous devez (et à votre équipe) de savoir exactement quelle version est exécutée. Finalement, votre source de développement n'est plus synchronisée avec le code en direct et vous devez absolument le savoir. Alors, étiquetez vos versions dans votre arbre svn / git et marquez l'application Web avec cette balise.

Martin Wickman
la source
1
absolument. vous ne pouvez pas vous permettre d'avoir du code non suivi dans la nature. même si la version est SVN / hg / git commit #.
Paul Nathan
9

Si vous avez une instance de développement / test, il est très important que les membres de l'équipe de projet puissent voir quelle version / révision ils testent.

Jeremy
la source
4

Outre ce que les autres ont dit, j'ajouterais que la gestion des versions est également importante du point de vue du marketing. Une nouvelle version est une nouveauté qui peut être commercialisée auprès de clients potentiels ou existants. Cela permet aux clients de savoir que quelque chose est «nouveau» et de voir que les choses avancent. Il fournit de beaux regroupements de nouvelles fonctionnalités. Et ça a l'air plus professionnel.

Grand maître b
la source
4

Je dis que pour tout sauf une application Web triviale, vous devriez la version. Il y a deux notions, légèrement différentes, au travail ici:

  1. application dans son ensemble
  2. dossiers individuels

Quelle que soit la situation, j'estime que les fichiers doivent avoir un numéro de version (ou de révision) individuel. Idéalement, cela serait géré automatiquement par votre système de contrôle de version. Comme d'autres l'ont déjà indiqué, il est plus facile de se référer au numéro de version d'un fichier qu'à sa date et heure.

Si vous avez (ou pouvez avoir) plus d’une installation en direct de l’application, celle-ci doit être versionnée dans son ensemble. C'est également une bonne pratique si vous avez des environnements de développement et de test distincts (comme vous devriez le faire probablement). Chaque numéro de version d'application (ou de version) fait référence à une collection de fichiers individuels portant des numéros de version spécifiques. Bien que tout cela représente un fardeau supplémentaire, il est plus facile d'extraire une version spécifique que des fichiers individuels portant des numéros de révision spécifiques.


Cela me fait penser à une notion en linguistique. On dit que si vous ne pouvez pas exprimer quelque chose dans une langue, vous ne pouvez pas y penser (dans cette langue). Je pense au mot allemand «Schadenfreude». Il est beaucoup plus facile de penser (et de parler) de cette notion de "ressentir de la joie du fait du malheur de quelqu'un d'autre" en se référant à ce mot, plutôt qu'à sa définition. C’est la raison pour laquelle le mot s’est glissé dans la langue anglaise.

De même, les numéros de version facilitent la prise de parole (et la réflexion) de votre application et de ses fichiers dans des états spécifiques. Si vous travaillez avec une seule personne et que vous travaillez sur une seule application, cela ne fera probablement pas une énorme différence. Cependant, à mesure que les choses se compliquent, il est préférable que vous disposiez de ces étiquettes.

George Marian
la source
4

Vous devez créer une version de votre application Web avec l'identifiant de construction de votre serveur de build et l'insérer dans tous les rapports de bogues.

Cela vous permettra de remonter dans le temps au cas où vous auriez à corriger un bogue signalé sur une version plus ancienne non présente actuellement en production.


la source
1

De votre question, il est clair que vous avez à l’esprit une application web simple

  • Uniquement accessible par une interface graphique Web et non par une API Web (-service) . Si des utilisateurs accèdent à l'application à l'aide d'une API, vous devez la version. Si vous modifiez l'API, vous cassez des clients. Vous devez donc en conserver une version différente en même temps.

  • Une seule instance en cours d'exécution à la fois . Même si vous n’avez que le Web guy, si vous avez plus d’installations, vous devez savoir quel client exécute quelle version.

  • Avec des temps d' arrêt acceptables pour la mise à niveau de la version en direct. Il y a un problème potentiellement énorme qui est la base de données . Les changements importants apportés aux nouvelles versions entraînent des modifications de la structure sous-jacente des données. Si vous n'avez qu'une seule version en cours d'exécution à la fois, vous devrez probablement désactiver l'ancienne version, mettre à niveau la base de données et activer la nouvelle version. Ce qui entraîne des temps morts pour l'application. Cela peut être acceptable en fonction du nombre et du type d'utilisateurs.

OGrandeDiEnne
la source
Convenu, créer une API Web sans version est une incompétence si flagrante que la plupart des gens ne lui feraient pas confiance. Et oui, je parle d'une instance de l'application.
John MacIntyre
Considérez également le troisième point, qui est toujours valable même pour les applications à instance unique.
OGrandeDiEnne
J'ai lu cela et bien que ce soit vraiment important et délicat, je ne suis pas sûr que ce soit un problème de gestion de version. N'est-ce pas davantage un problème de déploiement? KWIM?
John MacIntyre
Oui et non. (C'était il y a longtemps, mais j'imagine ..), le fait était que si vous avez besoin de la version de votre code, vous aurez probablement aussi besoin de la version de la structure de la base de données.
OGrandeDiEnne
0
  • Utilisation interne uniquement avec une base d'installation limitée?
  • Ou susceptible d'avoir plusieurs versions dans la nature?

Nous n’avons que le premier, aussi n’utilisez le numéro de version que pour la vérification de la conformité après publication. Nous n'avons pas à suivre plusieurs versions en même temps.

gbn
la source
0

Si votre application Web est composée de plusieurs modules, à la fois client et serveur, chaque module doit être versionné. Et chaque combinaison de versions de module sur le client et le serveur doit se voir attribuer un identifiant unique, identifiant qui doit figurer dans tous les messages de consignation et d'erreur.

En utilisant cette convention, il sera toujours possible de recréer l'état dans lequel se trouvait l'application Web à un moment donné.

À mon avis, les applications Web étant de nos jours construites à l'aide de langages dynamiques des deux côtés, serveur et client, il ne devrait y avoir aucune raison de recharger une application Web mise à jour à moins que l'utilisateur relance le navigateur ou recharge manuellement la page.

Seuls les composants ou les modules mis à jour dans l'application Web doivent être rechargés sans affecter l'état général de l'application.

Pourquoi vous pourriez demander? En appliquant cela, l'application Web sera, de par sa conception, plus robuste, correcte et probablement plus facile à gérer. Si l'application Web nécessite toujours une mise à jour simultanée serveur / client, il est probable qu'elle ne soit pas correctement construite.

Ernelli
la source
0

Oui, vous devriez le versionner! Et il devrait y avoir une étiquette dans votre système de contrôle de révision (comme Subversion, Git, Mercurial, etc.) qui correspond au numéro de version.

La balise vous permet de revenir en arrière et de créer une branche. Par exemple: la version de production actuelle comporte un bogue, mais vous ne pouvez pas le corriger car le code de votre ordinateur n'est tout simplement pas prêt à être déployé. Cependant, si vous l'avez marqué dans votre RCS, vous pouvez vous connecter à cette balise et corriger le bogue dans la version exacte du code exécuté en production.

Brad Cupit
la source
0

Personnellement, je pense que vous devriez quand même utiliser la version, mais l'un des principaux avantages des versions des applications Web spécifiques aux sites Web est qu'elles permettent de modifier beaucoup plus facilement le contenu statique.

Par exemple, supposons que vous disposiez d'un fichier mysite.css dont la date d'expiration est très éloignée (ce que vous souhaitez généralement faire pour qu'il soit mis en cache dans le navigateur de chaque page). Si vous modifiez ensuite un style dans ce fichier, personne qui a déjà visité votre site ne le verra sauf s'il fait quelque chose pour effacer ce fichier de son cache.

Si vous utilisez le versioning de votre site, vous pouvez changer toutes les références css de votre construction en quelque chose comme mysite.css? V = 1234, ce qui vous permettra de conserver la date d'expiration future et de ne pas vous inquiéter des modifications futures, comme dans la prochaine version. Sera mysite.css? v = 1235.

FinnNk
la source
0

Oui tu devrais. Pour des raisons de distribution indiquées ici par d'autres réponses.

Mais je vois pourquoi vous posez la question. L'approche des applications Web est basée sur les coûts. Elle est à l’opposé de l’approche rétractable classique, où les coûts incluent le support physique, la distribution, l’installation, la copie papier de la documentation, la formation et le support technique. Tout ce qui peut être exclu doit être exclu.


la source
0

Soyons clairs, je suppose que vous parlez d’un numéro de version visible par l’utilisateur, sans abandonner le contrôle de version en développement. (Si vous pensez que vous n'avez pas besoin de contrôle de version en développement, vous avez tort, vous avez besoin d'un contrôle de version).

Pour un projet à hébergement unique, ce n'est pas strictement nécessaire, car si vous avez des questions, vous pouvez toujours consulter l'hôte et vérifier ce qui se passe réellement. C'est plutôt agréable, cependant, car cela pourrait être utile une ou deux fois. C'est vraiment à vous de décider si vous pensez que cela sera utile ou non.

Pour un projet multi-hébergé, ce n'est pas vraiment optionnel. Différents hôtes finiront par se retrouver avec différentes versions et vous devrez être en mesure de les différencier du point de vue de l'utilisateur.

Michael Kohne
la source