Должны ли вы версия веб-приложений?

35

У меня недавно была беседа с коллегой о версиях веб-приложений.

Я не думаю, что вам это нужно вообще, и если вы просто хотите проверить работоспособность вашего последнего релиза, я думаю, что дата (ГГММДД), вероятно, достаточно хороша.

Я с базы? Я упускаю суть? Должен ли я использовать номера версий веб-приложений

Джон Макинтайр
источник

Ответы:

31

Если вы перепродаете одно и то же веб-приложение нескольким клиентам, вам обязательно следует его версия.

Если это веб-сайт, который когда-либо устанавливался только в одном месте, то необходимость в этом не столь остра, но, скорее всего, это не повредит. Вы были бы менее восприимчивы к проблемам часового пояса и тому подобное. Диагностика проблемы в библиотеке версии 1.0.2.25 намного приятнее, чем поиск сборки библиотеки 3 ноября 2010 г. 11:15

Адам Лир
источник
2
Если вы перепродаете одно и то же веб-приложение нескольким клиентам, вам обязательно следует его версия. 100% верно!
Гопи
8
Я не согласна Создание версий ваших релизов всегда важно, веб-приложение или нет. Это фундаментальная практика в любом методе разработки (исключая ковбойское кодирование).
Мартин Уикман
2
@Sri Kumar: пока что здесь ключевое слово :)
Мартин Викман,
2
@sri, трассировки стека сильно зависят от версии. Если у вас есть отчет об ошибке со стековой трассировкой, вы должны иметь возможность - быстро и с уверенностью - иметь исходный код, соответствующий этой стековой трассировке, даже если с тех пор были выпущены более новые версии. Современные версии программного обеспечения для ведения журналов Java даже предоставляют информацию о версиях в самой трассировке стека.
1
@anna Lear - Мне просто пришло в голову, что я никогда не отвечал тебе о свидании. В версии YYMMDD ваш пример «3 ноября 2010 г., 11:15 утра» будет иметь версию 101103. Таким образом, он «версионирован» по дате.
Джон Макинтайр
12

Если вы можете автоматизировать номер версии в DLL вашего приложения, это не повредит. Это поможет вам отслеживать версии.

Как правило, веб-приложения выпускаются только в одном месте, где вы их размещаете, поэтому это не так важно, как, например, в настольном приложении. Он может помочь с откатами, отслеживанием ошибок (то есть, в какой версии это было) и отслеживанием различий между разработчиками, промежуточными и производственными серверами, если это применимо.

Я бы посмотрел на автоматизацию этого - такую ​​вещь вы можете настроить один раз и использовать, если / когда вам это нужно.

Рем
источник
Автоматизация, включая тег VCS для каждой сборки. AFAIK большинство систем сборки может сделать это в наши дни.
JensG
9

Ваши пользователи не заботятся о номерах версий, так как у них всегда есть последний и самый лучший выпуск, но вы должны сами (и ваша команда) точно знать, какая версия работает вживую. В конце концов ваш источник разработки не синхронизируется с живым кодом, и тогда вы обязательно должны знать. Поэтому пометьте свои выпуски в дереве svn / git и пометьте веб-приложение этим тегом.

Мартин Викман
источник
1
абсолютно. вы не можете позволить себе неверсированный код в дикой природе. даже если версия SVN / hg / git commit #.
Пол Натан
9

Если у вас есть экземпляры dev / test, для членов команды проекта очень важно видеть, какую сборку / ревизию они тестируют.

Джереми
источник
4

В дополнение к тому, что сказали другие, я бы добавил, что управление версиями также важно с точки зрения маркетинга. Новая версия - это нечто новое, что может быть продано потенциальным или существующим клиентам. Это позволяет клиентам узнать что-то «новое» и увидеть, что все движется вперед. Это обеспечивает хорошие группировки новых функций. И это выглядит более профессионально.

GrandmasterB
источник
4

Я говорю, что для всего, кроме тривиального веб-приложения, вы должны сделать это. Здесь работают два, несколько разных понятия:

  1. приложение в целом
  2. отдельные файлы

Независимо от ситуации, я считаю, что файлы должны иметь индивидуальные номера версий (или версий). В идеале это будет обрабатываться автоматически вашей системой контроля версий. Как было сказано другими, проще ссылаться на номер версии файла, чем на его дату и время.

Если у вас есть (или может быть) более одной оперативной установки приложения, оно должно быть полностью версионным. Это также хорошая практика, если у вас есть отдельные среды разработки и тестирования (как вы, вероятно, должны). Номер версии каждого приложения (или выпуска) относится к набору отдельных файлов с определенными номерами версий. Хотя справляться со всем этим является дополнительным бременем, проще извлечь конкретный выпуск, чем отдельные файлы с конкретными номерами редакций.


Это заставляет меня думать о понятии в лингвистике. Говорят, что если вы не можете выразить что-то на языке, вы не можете думать об этом (на этом языке). Я думаю о немецком слове «Schadenfreude». Намного легче думать (и говорить) об этом понятии «чувствовать радость от чужой беды», ссылаясь на это слово, чем на его определение. Вот почему слово закралось в английском языке.

Точно так же номера версий облегчают говорить (и думать) о вашем приложении и его файлах в определенных состояниях. Если вы работаете над одним приложением и работаете над одним человеком, это вряд ли что-то изменит. Однако по мере того, как все усложняется, вам лучше иметь эти ярлыки для использования.

Джордж Мариан
источник
4

Вы должны создать версию своего веб-приложения с идентификатором сборки с сервера сборки и включить этот идентификатор во все отчеты об ошибках.

Это позволит вам вернуться назад во времени, если вам необходимо исправить ошибку, о которой сообщалось в более старой версии, которая в настоящее время отсутствует в производстве.


источник
1

Из вашего вопроса ясно, что вы имеете в виду простое веб-приложение

  • Доступно только через веб-интерфейс, а не через веб-сервис (API) . Если у вас есть пользователи, которые обращаются к приложению с помощью API, вам нужно его версию. Если вы меняете API, вы нарушаете работу клиентов, поэтому вам нужно одновременно поддерживать другую версию API.

  • Только один экземпляр работает в данный момент . Даже если у вас есть только веб-парень, если у вас есть больше установок, вам нужно знать, какой клиент использует какую версию.

  • С приемлемым временем простоя для обновления живой версии. Возможно, существует огромная проблема - база данных . Важные изменения в более новых версиях связаны с изменениями в базовой структуре данных. Если у вас запущена только одна версия, вам, вероятно, придется отключить старую версию, обновить базу данных и включить новую версию. Что приводит к простою приложения. Это может быть приемлемым в зависимости от количества и типа пользователей.

OGrandeDiEnne
источник
Согласитесь, создание неверсионного веб-API - это такая грубая некомпетентность, что большинство людей не будут ему доверять. И да, я говорю об одном экземпляре приложения.
Джон Макинтайр
Также рассмотрим третий пункт, который по-прежнему действует даже для приложений с одним экземпляром.
OGrandeDiEnne
Я прочитал это, и хотя это определенно важно и сложно, я не уверен, что это проблема с версиями. Разве это не проблема развертывания? KWIM?
Джон Макинтайр
Да и нет. (Это было очень давно, но я думаю ...) суть в том, что если вам нужно версировать свой код, то вам, скорее всего, потребуется версионировать и структуру db.
OGrandeDiEnne
0
  • Внутреннее использование только с ограниченной базой установки?
  • Или может иметь несколько версий в дикой природе?

У нас есть только первая, поэтому мы используем номер версии только для проверки работоспособности после выпуска. Нам не нужно отслеживать много версий одновременно.

ГБН
источник
0

Если ваше веб-приложение состоит из нескольких модулей, как на клиенте, так и на сервере, каждый модуль должен быть версионным. И каждой комбинации версий модуля на клиенте и сервере должен быть присвоен уникальный идентификатор, который должен присутствовать во всех сообщениях журнала и сообщениях об ошибках.

Используя это соглашение, всегда можно будет воссоздать состояние, в котором было веб-приложение в данный момент.

По моему мнению, поскольку в наши дни веб-приложения создаются с использованием динамических языков с обеих сторон, сервера и клиента, не должно быть никаких причин для перезагрузки обновленного веб-приложения, если пользователь не перезапустит браузер или не перезагрузит страницу вручную.

Только обновленные части или модули в веб-приложении должны быть перезагружены, не влияя на общее состояние приложения.

Почему вы можете спросить? Что ж, благодаря этому веб-приложение по своему дизайну будет более надежным, правильным и, вероятно, более простым в обслуживании. Если веб-приложение всегда требует одновременного обновления сервера / клиента, то оно, вероятно, построено неправильно.

Ernelli
источник
0

Да, вы должны сделать это! И в вашей системе контроля версий должен быть тег (такой как subversion, git, mercurial и т. Д.), Который соответствует номеру версии.

Тег позволяет вернуться и сделать ветку. Например: в текущей производственной версии есть ошибка, но вы не можете ее исправить, потому что код на вашей машине просто не готов выкатить дверь. Если вы пометили его в своем RCS, вы можете перейти на этот тег и исправить ошибку в точной версии кода, работающего в производстве.

Брэд Купит
источник
0

Лично я думаю, что вам все равно следует создавать версии, но одно большое преимущество версий веб-приложений, характерных для веб-сайтов, заключается в том, что они могут значительно облегчить управление изменениями статического содержимого.

Например, допустим, у вас есть файл mysite.css, у которого есть дата истечения в будущем (что вы обычно хотите сделать, чтобы он кэшировался в браузере на каждой странице). Если вы затем измените стиль в этом файле, никто, кто был на вашем сайте раньше, не увидит его, если он не сделает что-то, чтобы удалить этот файл из своего кэша.

Если вы работаете с версионным сайтом, вы можете изменить все ссылки на css в вашей сборке на что-то вроде mysite.css? V = 1234, что позволит вам сохранить дату истечения в далеком будущем и не беспокоиться о будущих изменениях, как в следующей сборке. будет mysite.css? v = 1235.

FinnNk
источник
0

Да, ты должен. По причинам распространения, указанным здесь другими ответами.

Но я вижу, почему ты задаешь вопрос. Подход к веб-приложениям определяется стоимостью. Это противоположно традиционному подходу термоусадочной упаковки, где расходы включают физические носители, распространение, установку, печатную документацию, обучение и техническую поддержку. Все, что может быть исключено, должно быть исключено.


источник
0

Просто для ясности, я предполагаю, что вы говорите о каком-то видимом для пользователя номере версии, а не отказываетесь от контроля версий в процессе разработки. (если вы думаете, что вам не нужен контроль версий в разработке, значит, вы ошибаетесь, вам нужен контроль версий).

Для проекта с одним хостом это не является строго необходимым, потому что, если возникают какие-либо вопросы, вы всегда можете посмотреть на хост и подтвердить, что действительно работает. Хотя это довольно мило, потому что может пригодиться раз или два. Это действительно зависит от вас, считаете ли вы, что это будет полезно или нет.

Для многопользовательского проекта это не является обязательным. Разные хосты в конечном итоге получат разные версии, и вам нужно будет различать их на стороне пользователя.

Майкл Кон
источник