Webアプリケーションをバージョン管理する必要がありますか?


35

最近、Webアプリケーションのバージョン管理について同僚と話し合いました。

私はあなたがそれを全く必要とは思わない、そしてあなたがあなたの最新リリースがライブであることを確認するために健全性チェックが欲しいだけなら、私はおそらく日付(YYMMDD)で十分だと思う。

私は基地を離れていますか?ポイントが足りませんか?Webアプリケーションのバージョン番号を使用する必要がありますか

回答:


31

同じWebアプリケーションを複数の顧客に再販する場合、絶対にバージョン管理する必要があります。

1つの場所にしかインストールされていないWebサイトであれば、その必要性はそれほど大きくありませんが、それでも問題はないでしょう。あなたもタイムゾーンの問題などの影響を受けにくくなります。ライブラリバージョン1.0.2.25での問題の診断は、2010年11月3日午前11時15分にライブラリのビルドを探すよりもはるかに優れています。


2
同じWebアプリケーションを複数の顧客に再販する場合、絶対にバージョン管理する必要があります。100%真!
-Gopi

8
私は同意しません。Webアプリであろうとなかろうと、リリースのバージョン管理は常に重要です。これは、あらゆる開発方法の基本的なプラクティスです(カウボーイコーディングは除く)。
マーティンウィックマン

2
@スリクマール:まだここでキーワード:)
マーティンウィックマン

2
@sri、スタックトレースはバージョンに大きく依存しています。スタックトレースを含むエラーレポートがある場合、それ以降の新しいバージョンがリリースされた場合でも、そのスタックトレースに対応するソースコードを迅速かつ確実に取得できる必要があります。最新バージョンのJavaロギングソフトウェアは、スタックトレース自体にバージョン情報も表示します。

1
@anna lear-デートの事についてあなたに返事をしなかったことは私にただ起こった。YYMMDDバージョン管理では、「2010年11月3日午前11時15分」の例は101103としてバージョン管理されます。したがって、日付によって「バージョン管理」されます。
ジョンマッキンタイア

12

アプリケーションのDLLのバージョン番号を自動化できれば、問題はありません。バージョンを追跡するのに役立ちます。

一般に、Webアプリはホストしている1つの場所でのみリリースされるため、デスクトップアプリケーションほど重要ではありません。必要に応じて、ロールバック、バグ追跡(つまり、どのバージョンがこれに含まれていたのか)、開発者、ステージング、および運用サーバーの違いを追跡するのに役立ちます。

私はそれを自動化することを検討したい-それはあなたが一度セットアップし、必要なときにそれを使用できるようなものです。


各ビルドのVCSタグを含む自動化。私の知る限り、ほとんどのビルドシステムは最近ではそれが可能です。
JensG

9

ユーザーは常に最新で最高のリリースを使用しているため、バージョン番号は気にしませんが、実際に実行されているバージョンを正確に知ることは自分自身(およびチーム)に委ねられています。最終的に、開発ソースはライブコードと同期しなくなり、間違いなくなりなく知る必要があります。したがって、svn / gitツリーでリリースにラベルを付け、そのタグでWebアプリをマークします。


1
絶対に。バージョン管理されていないコードを世間に出す余裕はありません。バージョンがSVN / hg / gitである場合でも#コミットします。
ポールネイサン

9

開発/テストインスタンスがある場合、プロジェクトチームのメンバーがテストしているビルド/リビジョンを確認できることが非常に重要です。


4

他の人が言ったことに加えて、バージョン管理もマーケティングの観点から重要だと付け加えます。新しいバージョンは、潜在的な顧客または既存の顧客に販売できる新しいものです。これにより、顧客は何かが「新しい」ことを知り、物事が前進していることがわかります。新機能の素晴らしいグループ化を提供します。そして、よりプロフェッショナルに見えます。


4

些細なWebアプリケーション以外の場合は、バージョン管理する必要があります。ここでは、わずかに異なる2つの概念が機能しています。

  1. 全体としてのアプリケーション
  2. 個々のファイル

状況に関係なく、ファイルには個々のバージョン(またはリビジョン)番号が必要だと思います。理想的には、これはバージョン管理システムによって自動的に処理されます。他の人によって述べられているように、ファイルのバージョン番号は日時よりも簡単に参照できます。

アプリケーションの複数のライブインストールがある場合(またはある場合)、全体としてバージョン管理する必要があります。これは、開発環境とテスト環境が分離している場合(推奨される場合)にもお勧めします。各アプリケーション(またはリリース)バージョン番号は、特定のバージョン番号の個々のファイルの集合を指します。このすべてを処理することは余分な負担ですが、特定のリビジョン番号の個々のファイルよりも特定のリリースをチェックアウトする方が簡単です。


これは私に言語学の概念を考えさせます。言語で何かを表現できなければ、それを(その言語で)考えることはできないと言われています。ドイツ語の「Schadenfreude」を思い浮かべます。その言葉を参照することにより、その定義を定義するよりも、「他人の不幸による喜びを感じる」というこの概念を考える(そして話す)のがはるかに簡単です。それがこの言葉が英語で使われ始めた理由です。

同様に、バージョン番号を使用すると、特定の状態でアプリケーションとそのファイルについて話す(および考える)のが簡単になります。あなたが1人のチームで、1つのアプリケーションで作業している場合、大きな違いはありません。ただし、事態が複雑になるにつれて、これらのラベルを使用できるようにする方が適切です。


4

ビルドサーバーのビルドIDを使用してWebアプリケーションをバージョン管理し、そのIDをすべてのバグレポートに含める必要があります。

これにより、現在生産されていない古いバージョンで報告されたバグを修正する必要がある場合に、時間をさかのぼることができます。


1

あなたの質問から、単純な Webアプリケーションを念頭に置いていることが明らかです。

  • Web GUIからのみアクセスでき、Web(-service)APIからはアクセスできません。APIを使用してアプリケーションにアクセスするユーザーがいる場合、バージョン管理する必要があります。APIを変更すると、クライアントが破損するため、異なるバージョンのAPIを同時に維持する必要があります。

  • 一度に実行されるインスタンスは1つだけです。Web担当者しかいなくても、さらにインストールする場合は、どの顧客がどのバージョンを実行しているかを知る必要があります。

  • ライブバージョンのアップグレードのための許容可能なダウンタイムデータベースであるかもしれない巨大な問題があります。新しいバージョンでの重要な変更には、データの基本構造の変更が伴います。一度に実行しているバージョンが1つしかない場合は、おそらく古いバージョンをオフにし、データベースをアップグレードし、新しいバージョンをオンにする必要があります。その結果、アプリケーションのダウンタイムが発生します。これは、ユーザーの数と種類によっては許容される場合があります。


バージョン管理されていないWeb APIを作成することは、ほとんどの人がそれを信用しないような非常に無能であることに同意しました。そして、ええ、私はアプリの1つのインスタンスについて話している。
ジョンマッキンタイア14年

3番目の点も考慮してください。これは、単一インスタンスのアプリケーションでも有効です。
OGrandeDiEnne 14年

私はそれを読みましたが、それは間違いなく重要でトリッキーですが、それがバージョン管理の問題かどうかはわかりません。それはデプロイメントの問題ではありませんか?KWIM?
ジョンマッキンタイア

はいといいえ。(かなり前のことですが、私は推測します。)ポイントは、コードをバージョン管理する必要がある場合は、db構造体もバージョン管理する必要がある可能性が高いことです。
OGrandeDiEnne

0
  • 限定的なインストールベースのみでの内部使用
  • または、野生に複数のバージョンがある可能性がありますか?

前者しか持っていないため、リリース後の健全性チェックにのみバージョン番号を使用します。使用中の多くのバージョンを同時に追跡する必要はありません。


0

Webアプリケーションがクライアントとサーバーの両方で複数のモジュールで構成されている場合、各モジュールはバージョン管理される必要があります。また、クライアントとサーバーの両方のモジュールバージョンの各組み合わせには、すべてのログおよびエラーメッセージに存在する必要がある一意のIDを指定する必要があります。

その規則を使用することにより、特定の瞬間にWebアプリがあった状態を常に再作成することが可能になります。

私の意見では、最近のWebアプリはサーバーとクライアントの両方で動的言語を使用して構築されているため、ユーザーがブラウザーを再起動するか手動でページを再読み込みしない限り、更新されたWebアプリを再読み込みする理由はないはずです。

アプリケーションの全体的な状態に影響を与えずに、Webアプリ内の更新されたパーツまたはモジュールのみをリロードする必要があります。

なぜあなたは尋ねるかもしれませんか?まあ、それを強制することにより、Webアプリはその設計により、より頑強で、正確で、おそらく保守しやすくなります。Webアプリが常にサーバー/クライアントの同時更新を必要とする場合、おそらく正しい方法でビルドされていません。


0

はい、バージョン管理する必要があります!リビジョン管理システムには、バージョン番号に一致するタグ(subversion、git、mercurialなど)が必要です。

このタグを使用すると、戻ってブランチを作成できます。たとえば、現在の製品バージョンにはバグがありますが、マシンのコードが公開される準備が整っていないため、修正することはできません。ただし、RCSでタグ付けされている場合は、そのタグで分岐し、実稼働で実行されているコードの正確なバージョンのバグを修正できます。


0

個人的には、とにかくバージョン管理する必要があると思いますが、Webサイト固有のWebアプリケーションのバージョン管理の大きな利点の1つは、静的コンテンツの変更を管理しやすくすることです。

たとえば、将来の有効期限が設定されているmysite.cssファイルがあるとします(通常は、各ページのブラウザーにキャッシュされるようにしたい)。その後、そのファイルのスタイルを変更すると、そのファイルをキャッシュから消去するための操作を行わない限り、サイトに以前にアクセスしたユーザーは誰も表示されません。

サイトをバージョン管理している場合、ビルド内のすべてのcss参照をmysite.css?v = 1234のようなものに変更することができます。 'mysite.css?v = 1235になります。


0

はい、そうすべきです。配布の理由から、他の回答がここで指摘しています。

しかし、なぜあなたは質問をするのかわかります。Webアプリのアプローチはコスト主導です。物理的なメディア、配布、インストール、ドキュメントのハードコピー、トレーニング、技術サポートが含まれる従来のシュリンクラップアプローチとは反対です。除外できるものはすべて除外する必要があります。


0

明確にするために、ユーザーが目に見えるバージョン番号について話していると仮定し、開発中のバージョン管理をあきらめないことを前提としています。(開発中にバージョン管理が必要ないと思われる場合は、間違っています。バージョン管理が必要です)。

単一ホストプロジェクトの場合、厳密に必要ではありません。質問が発生した場合は、常にホストを見て、実際に実行されているものを確認できるからです。ただし、1〜2回は便利になることがあるので、ちょっといいです。役に立つと思うかどうかは、あなた次第です。

マルチホストプロジェクトの場合、実際にはオプションではありません。最終的に、異なるホストは異なるバージョンになり、ユーザー側でそれらを区別できるようにする必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.