Bạn có nên phiên bản ứng dụng web?


35

Gần đây tôi đã có một cuộc thảo luận với đồng nghiệp về việc tạo phiên bản cho các ứng dụng web.

Tôi không nghĩ bạn cần nó chút nào, và nếu bạn chỉ muốn kiểm tra sự tỉnh táo để xác nhận bản phát hành mới nhất của bạn là trực tiếp, tôi nghĩ một ngày (YYMMDD) có lẽ là đủ tốt.

Tôi ra khỏi căn cứ à? Tôi có bị thiếu điểm không? Tôi có nên sử dụng số phiên bản ứng dụng web không

Câu trả lời:


31

Nếu bạn bán lại cùng một ứng dụng web cho nhiều khách hàng, bạn hoàn toàn nên phiên bản nó.

Nếu đó là một trang web chỉ được cài đặt ở một địa điểm, thì nhu cầu sẽ ít hơn, nhưng nó vẫn không thể bị tổn thương. Bạn sẽ ít bị ảnh hưởng bởi các vấn đề múi giờ và cũng vậy. Chẩn đoán sự cố trong phiên bản thư viện 1.0.2.25 đẹp hơn nhiều so với việc tìm kiếm bản dựng thư viện vào ngày 3 tháng 11 năm 2010 11:15 sáng


2
Nếu bạn bán lại cùng một ứng dụng web cho nhiều khách hàng, bạn hoàn toàn nên phiên bản nó. đúng 100!
Gopi

8
Tôi không đồng ý. Phiên bản phát hành của bạn luôn luôn quan trọng, ứng dụng web hay không. Đây là một thực tiễn cơ bản trong bất kỳ phương pháp phát triển nào (mã hóa cao bồi bị loại trừ).
Martin Wickman

2
@Sri Kumar: vẫn là từ khóa ở đây :)
Martin Wickman

2
@sri, stacktraces phụ thuộc phiên bản cao. Nếu bạn có báo cáo lỗi với stacktrace, bạn phải có thể - nhanh chóng và chắc chắn - có mã nguồn tương ứng với stacktrace đó, ngay cả khi các phiên bản mới hơn đã được phát hành kể từ đó. Các phiên bản hiện đại của phần mềm ghi nhật ký Java thậm chí còn trình bày thông tin phiên bản trong chính stacktrace.

1
@anna lear - Điều đó xảy ra với tôi rằng tôi chưa bao giờ trả lời bạn về điều hẹn hò. Trong phiên bản YYMMDD, ví dụ của bạn về "ngày 3 tháng 11 năm 2010 11:15 sáng" sẽ được phiên bản là 101103. Vì vậy, nó được "phiên bản" theo ngày.
John MacIntyre

12

Nếu bạn có thể tự động hóa số phiên bản trên DLL của ứng dụng, điều đó không thể làm tổn thương. Nó sẽ giúp bạn theo dõi các phiên bản.

Nói chung, các ứng dụng web chỉ được phát hành tại một địa điểm nơi bạn đang lưu trữ ứng dụng đó, vì vậy nó không quan trọng bằng ứng dụng máy tính để bàn. Nó có thể giúp quay lại, theo dõi lỗi (tức là phiên bản này) và theo dõi sự khác biệt giữa nhà phát triển, dàn dựng và máy chủ sản xuất, nếu có.

Tôi sẽ xem xét tự động hóa nó - đó là loại bạn có thể thiết lập một lần và sử dụng nó nếu / khi bạn cần.


Tự động hóa bao gồm thẻ VCS cho mỗi bản dựng. AFAIK hầu hết các hệ thống xây dựng có thể làm điều đó những ngày này.
JensG

9

Người dùng của bạn không quan tâm đến số phiên bản vì dù sao họ luôn có bản phát hành mới nhất và lớn nhất, nhưng bạn nợ chính bạn (và nhóm của bạn) để biết chính xác phiên bản nào đang chạy trực tiếp. Cuối cùng, nguồn phát triển của bạn không đồng bộ với mã trực tiếp và sau đó bạn chắc chắn phải biết. Vì vậy, hãy gắn nhãn các bản phát hành của bạn trong cây svn / git của bạn và đánh dấu ứng dụng web bằng thẻ đó.


1
chắc chắn rồi. bạn không đủ khả năng để có mã không đảo ngược trong tự nhiên. ngay cả khi phiên bản là cam kết SVN / hg / git #.
Paul Nathan

9

Nếu bạn có một phiên bản dev / test, điều khá quan trọng đối với các thành viên trong nhóm dự án là có thể xem bản dựng / sửa đổi nào họ đang thử nghiệm.


4

Ngoài những gì người khác đã nói, tôi thêm rằng phiên bản cũng quan trọng từ góc độ tiếp thị. Một phiên bản mới là một cái gì đó mới có thể được bán cho khách hàng tiềm năng hoặc hiện có. Nó cho phép khách hàng biết một cái gì đó là 'mới' và thấy rằng mọi thứ đang tiến lên. Nó cung cấp các nhóm tốt đẹp của các tính năng mới. Và nó trông chuyên nghiệp hơn.


4

Tôi nói rằng đối với bất cứ điều gì ngoại trừ một ứng dụng web tầm thường, bạn nên phiên bản nó. Có hai, hơi khác nhau, các khái niệm tại nơi làm việc ở đây:

  1. toàn bộ ứng dụng
  2. tập tin cá nhân

Bất kể tình huống nào, tôi tin rằng các tệp nên có số phiên bản (hoặc sửa đổi) riêng lẻ. Lý tưởng nhất, điều này sẽ được xử lý tự động bởi hệ thống kiểm soát phiên bản của bạn. Như đã được tuyên bố bởi những người khác, việc tham khảo số phiên bản của tệp dễ dàng hơn so với ngày và giờ của nó.

Nếu bạn có (hoặc có thể có) nhiều hơn một cài đặt trực tiếp của ứng dụng, thì nó phải được phiên bản toàn bộ. Đây cũng là một cách thực hành tốt nếu bạn có các môi trường dev và test riêng biệt (như bạn có thể nên làm). Mỗi số phiên bản ứng dụng (hoặc phát hành) đề cập đến một tập hợp các tệp riêng lẻ theo số phiên bản cụ thể. Mặc dù xử lý tất cả những điều này là một gánh nặng thêm, việc kiểm tra một bản phát hành cụ thể sẽ dễ dàng hơn so với các tệp riêng lẻ ở các số sửa đổi cụ thể.


Điều này khiến tôi nghĩ về một khái niệm trong ngôn ngữ học. Người ta nói rằng nếu bạn không thể diễn đạt điều gì đó bằng một ngôn ngữ, bạn không thể nghĩ về nó (bằng ngôn ngữ đó). Tôi nghĩ về từ tiếng Đức 'Schadenfreude.' Việc nghĩ (và nói) về khái niệm "cảm giác vui mừng do bất hạnh của người khác" sẽ dễ dàng hơn nhiều bằng cách nói đến từ đó, hơn là định nghĩa của nó. Đó là lý do từ này đã được sử dụng trong ngôn ngữ tiếng Anh.

Tương tự, số phiên bản giúp dễ dàng nói (và suy nghĩ) về ứng dụng của bạn và các tệp của nó ở các trạng thái cụ thể. Nếu bạn là nhóm một người, làm việc trên một ứng dụng, điều đó không có khả năng tạo ra sự khác biệt lớn. Tuy nhiên, khi mọi thứ trở nên phức tạp hơn, tốt hơn là bạn nên có sẵn các nhãn này để sử dụng.


4

Bạn nên phiên bản ứng dụng web của mình với id xây dựng từ máy chủ xây dựng của bạn và có id đó trong tất cả các báo cáo lỗi.

Điều này sẽ cho phép bạn quay ngược thời gian trong trường hợp bạn phải sửa một lỗi được báo cáo trên một phiên bản cũ hơn hiện không có trong sản xuất.


1

Từ câu hỏi của bạn, rõ ràng bạn có một ứng dụng web đơn giản

  • Chỉ có thể truy cập bằng GUI Web chứ không phải API Web (-ervice) . Nếu bạn có người dùng truy cập ứng dụng bằng API, bạn cần phải phiên bản nó. Nếu bạn thay đổi API, bạn sẽ phá vỡ ứng dụng khách, do đó bạn cần duy trì phiên bản API khác nhau cùng một lúc.

  • Chỉ có một ví dụ chạy vào thời điểm đó . Ngay cả khi bạn chỉ có anh chàng web, nếu bạn có nhiều cài đặt hơn, bạn cần biết khách hàng nào đang chạy phiên bản nào.

  • Với thời gian xuống chấp nhận được để nâng cấp phiên bản trực tiếp. Có một vấn đề rất lớn có thể là cơ sở dữ liệu . Những thay đổi quan trọng với các phiên bản mới hơn đi kèm với những thay đổi trong cấu trúc cơ bản của dữ liệu. Nếu bạn chỉ có một phiên bản đang chạy vào thời điểm đó, bạn có thể sẽ phải tắt phiên bản cũ, nâng cấp cơ sở dữ liệu và bật phiên bản mới. Mà kết quả trong thời gian xuống ứng dụng. Điều này có thể được chấp nhận tùy thuộc vào số lượng và loại người dùng.


Đồng ý, tạo ra một api web không đảo ngược là không đủ năng lực mà hầu hết mọi người sẽ không tin tưởng nó. Và vâng, tôi đang nói về một ví dụ của ứng dụng.
John MacIntyre

Cũng xem xét điểm thứ ba, vẫn còn hiệu lực ngay cả đối với các ứng dụng đơn lẻ.
OGrandeDiEnne

Tôi đã đọc nó và trong khi nó thực sự quan trọng & phức tạp, tôi không chắc đó là vấn đề về phiên bản. Đó không phải là vấn đề triển khai nhiều hơn sao? KWIM?
John MacIntyre

Có và không. (Cách đây đã lâu nhưng tôi đoán ..) vấn đề là nếu bạn cần phiên bản mã của mình, bạn rất có thể cần phải phiên bản cấu trúc db.
OGrandeDiEnne

0
  • Chỉ sử dụng nội bộ với cơ sở cài đặt hạn chế?
  • Hoặc chịu trách nhiệm có nhiều phiên bản trong tự nhiên?

Chúng tôi chỉ có trước đây nên chỉ sử dụng số phiên bản để kiểm tra bài phát hành. Chúng tôi không phải theo dõi nhiều phiên bản được sử dụng cùng một lúc.


0

Nếu ứng dụng web của bạn bao gồm nhiều mô-đun, cả trong máy khách và máy chủ, mỗi mô-đun nên được phiên bản. Và mỗi sự kết hợp của các phiên bản mô-đun trên cả máy khách và máy chủ phải được cung cấp một id duy nhất, một id cần có trong tất cả các thông báo ghi nhật ký và lỗi.

Bằng cách sử dụng quy ước đó, sẽ luôn có thể tạo lại trạng thái của ứng dụng web tại một thời điểm nhất định.

Theo tôi, vì các ứng dụng web ngày nay được xây dựng bằng ngôn ngữ động ở cả hai bên, máy chủ và máy khách, nên không có bất kỳ lý do nào để tải lại ứng dụng web đã cập nhật trừ khi người dùng khởi động lại trình duyệt hoặc tải lại trang theo cách thủ công.

Chỉ nên tải lại các phần hoặc mô-đun trong ứng dụng web mà không ảnh hưởng đến trạng thái chung của ứng dụng.

Tại sao bạn có thể hỏi? Vâng, bằng cách thực thi điều đó, ứng dụng web sẽ được thiết kế nhiều hơn, chính xác hơn và có thể dễ bảo trì hơn. Nếu ứng dụng web luôn yêu cầu cập nhật máy chủ / máy khách đồng thời thì có lẽ nó không được xây dựng đúng cách.


0

Có, bạn nên phiên bản nó! Và nên có một thẻ trong hệ thống kiểm soát sửa đổi của bạn (như lật đổ, git, đồng bóng, v.v.) phù hợp với số phiên bản.

Thẻ cho phép bạn quay lại và tạo một chi nhánh. Ví dụ: phiên bản sản xuất hiện tại có lỗi, nhưng bạn không thể sửa nó vì mã trên máy của bạn chưa sẵn sàng để ra khỏi cửa. Nếu bạn đã gắn thẻ trong RCS của mình, bạn có thể phân nhánh tại thẻ đó và sửa lỗi trong phiên bản chính xác của mã đang chạy trong sản xuất.


0

Cá nhân tôi nghĩ rằng dù sao bạn cũng nên phiên bản, nhưng một lợi ích lớn của việc phiên bản các ứng dụng web dành riêng cho các trang web là nó có thể thay đổi nội dung tĩnh dễ quản lý hơn nhiều.

Ví dụ: giả sử bạn có tệp mysite.css có thời hạn sử dụng trong tương lai xa (mà bạn thường muốn làm như vậy để nó được lưu trong trình duyệt trên mỗi trang). Nếu sau đó bạn thay đổi một kiểu trong tệp đó thì không ai đã từng truy cập trang web của bạn trước đó sẽ thấy nó trừ khi họ làm gì đó để xóa tệp đó khỏi bộ đệm của họ.

Nếu bạn đang phiên bản trang web của mình mặc dù bạn có thể thay đổi tất cả các tham chiếu css trong bản dựng của mình thành một cái gì đó như mysite.css? V = 1234, điều này sẽ cho phép bạn giữ ngày hết hạn trong tương lai và không lo lắng về những thay đổi trong tương lai như trong lần xây dựng tiếp theo sẽ là mysite.css? v = 1235.


0

Có bạn nên. Đối với lý do phân phối chỉ ở đây bởi các câu trả lời khác.

Nhưng tôi hiểu, tại sao bạn đặt câu hỏi. Cách tiếp cận ứng dụng web là chi phí. Nó trái ngược với cách tiếp cận thu nhỏ di sản, trong đó chi phí bao gồm phương tiện vật lý, phân phối, cài đặt, bản cứng tài liệu, đào tạo và hỗ trợ kỹ thuật. Bất cứ điều gì có thể được loại trừ, nên được loại trừ.


0

Nói rõ hơn, tôi giả sử rằng bạn đang nói về một số phiên bản có thể nhìn thấy của người dùng và không từ bỏ việc kiểm soát phiên bản trong quá trình phát triển. (nếu bạn nghĩ rằng bạn không cần kiểm soát phiên bản trong quá trình phát triển, thì bạn đã nhầm, bạn cần kiểm soát phiên bản).

Đối với một dự án được lưu trữ một lần, điều đó không thực sự cần thiết, bởi vì nếu có bất kỳ câu hỏi nào, bạn luôn có thể nhìn vào máy chủ và xác nhận những gì thực sự đang chạy. Mặc dù vậy, nó khá tốt vì nó có thể có ích một hoặc hai lần. Điều đó thực sự tùy thuộc vào việc bạn nghĩ nó sẽ hữu ích hay không.

Đối với một dự án nhiều máy chủ lưu trữ, nó không thực sự là tùy chọn. Các máy chủ khác nhau cuối cùng sẽ kết thúc với các phiên bản khác nhau và bạn sẽ cần có thể phân biệt chúng ở cuối người dùng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.