Làm thế nào để duy trì phiên bản demo của một ứng dụng?


8

Tôi cần có khả năng demo ứng dụng sản xuất của chúng tôi cho các khách hàng tiềm năng. Cách tôi thiết lập nó ngày hôm nay rất đơn giản. Ứng dụng demo là một bản sao chính xác của hệ thống sản xuất, ngoại trừ dữ liệu trong cơ sở dữ liệu bị xáo trộn để bảo vệ dữ liệu của khách hàng hiện tại của chúng tôi. Điều này hoạt động rất tốt vì nó không yêu cầu bất kỳ thay đổi ứng dụng nào.

Boss đã bỏ một BOMBSHELL tiềm năng ngày hôm nay và nói rằng hệ thống demo cần phải chứa một liên kết đặc biệt và CHỈ hiển thị trên bản demo. Ông tiếp tục giải thích rằng trong tương lai có thể có sự khác biệt lớn hơn nhiều giữa các ứng dụng demo và sản xuất (ví dụ: toàn bộ khu vực chức năng). Tôi làm gì bây giờ?

Một số điều tôi đã nghĩ về việc làm:

  • Duy trì một nhánh khác trong lật đổ cụ thể cho hệ thống demo
  • Tạo gói cài đặt có các thay đổi cho bản demo, sau đó hoàn nguyên và xây dựng gói cài đặt sản xuất
  • Mô đun hóa ứng dụng (không biết làm thế nào)
  • Nói: "Bắt vít bạn! Tôi sẽ không làm điều đó!" (CƯỜI LỚN)
  • Sử dụng một số loại logic có điều kiện trong ứng dụng để xác định xem đó là bản demo hay ứng dụng sản xuất. Ví dụ: (nếu URL chứa 'bản demo' thì hiển thị ẩn khác).

Nếu bây giờ bạn chưa đoán ra thì đây là một ứng dụng web

Dù sao, tôi không có kinh nghiệm trong kịch bản này là cái nào tốt hơn hoặc nếu không có cái nào tốt hơn. Bất cứ ai cũng có câu trả lời, chiến lược, một cái gì đó!?


Đừng phân nhánh mã này nếu bạn có thể giúp nó. Không có cài đặt riêng nếu bạn có thể giúp nó. Đừng đặt "bản demo" trong URL - nó sẽ làm cho sản phẩm có vẻ giả mạo. Bạn sẽ có thể làm cho nó một tham số cấu hình. Lý tưởng nhất là bạn sẽ không có nếu các câu lệnh kiểm tra cấu hình trong toàn bộ mã của bạn, có thể là một cuộc gọi để xem liệu một tính năng có được hỗ trợ hay không và chỉ có đối tượng triển khai biết tại sao - phụ thuộc vào ứng dụng của bạn.
psr

Câu trả lời:


3
  • Duy trì một nhánh khác trong lật đổ cụ thể cho hệ thống demo

    • Đúng! Điều này thực sự giúp. Nhưng hãy cẩn thận trong cách bạn làm điều đó. Tốt nhất là khi hệ thống chính phát triển, bạn nên biết cách đưa các thay đổi của mình xuống càng gần càng tốt.
  • Tạo gói cài đặt có các thay đổi cho bản demo, sau đó hoàn nguyên và xây dựng gói cài đặt sản xuất

    • Điều này có thể hoạt động - nhưng nếu bạn đang thực hiện nhiều bản demo - bạn sẽ mất phần tốt của cuộc sống về điều này.
  • Mô đun hóa ứng dụng (không biết làm thế nào)
    • Đây là câu trả lời tốt nhất. Xem bên dưới.
  • Nói: "Bắt vít bạn! Tôi sẽ không làm điều đó!" (CƯỜI LỚN)
    • Tất nhiên là không! Không phải vì bạn nên sợ. Nhưng kỹ sư giỏi không bỏ thử thách.
  • Sử dụng một số loại logic có điều kiện trong ứng dụng để xác định xem đó là bản demo hay ứng dụng sản xuất. Ví dụ: (nếu url chứa 'bản demo' thì hiển thị ẩn khác).
    • Tất nhiên là không! Điều này sẽ làm cho sản phẩm của bạn rất yếu theo thời gian.

Khi bạn nghĩ về một sản phẩm Demo (trừ khi bạn đang nói về các phiên bản đường mòn) - đừng nghĩ giống như một 'sản phẩm riêng biệt' mà hãy nghĩ về nó như một 'môi trường riêng biệt'. Nếu bạn và tôi đều cài đặt công cụ bấm từ trong các trang web tương ứng, chúng tôi sẽ có cùng một sản phẩm nhưng dữ liệu khác nhau. Bạn phải kiến ​​trúc sản phẩm của mình sao cho cài đặt (và cách sử dụng) nội dung cụ thể - có thể được tạo như cách người ta tạo các nguồn nội dung khác nhau. Tương tự, ví dụ - bạn đang tạo một ứng dụng .Net hoặc JAVA riêng, chức năng vẫn giữ nguyên - nhưng nơi nó có hình ảnh (bao gồm màn hình và nút bấm) từ các thư mục khác nhau để hiển thị chúng ở các dạng khác nhau. Sau này - nhu cầu sẽ đến thậm chí thay đổi bố cục - đó là khi bạn biết bạn cần nhiều công cụ mẫu hơn!

Đừng nhảy cho mô đun hóa trong một lần bắn. Khi có yêu cầu, đầu tiên hãy bắt đầu một nhánh riêng (dòng phát triển) và đưa ra bản demo! (Bởi vì tất cả các bản demo thường vào sáng hôm sau 10:30 sáng). Độ lệch mà bạn tạo bây giờ cho bạn biết những gì đã được mô đun hóa nên có ở đó để được chọn từ các tài nguyên bên ngoài. Áp dụng điều đó và hợp nhất nó trở lại vào lần tới cùng một bản demo sẽ là phiên bản tiêu chuẩn của bạn (với URL khác nhau).

Hầu như luôn luôn nếu bạn kết thúc việc tạo ra "sản phẩm riêng biệt" dưới dạng bản demo - bạn đang mời rắc rối hoặc đau đớn hoặc cả hai!

Dipan.


Tôi thực sự thích câu trả lời của bạn. Đối với một ẩn đơn giản và hiển thị một liên kết, tôi có thể thoát khỏi một nhánh riêng - như bạn đã nói.
OO

Tôi không đồng ý với một số điểm của câu trả lời này. Tạo một chi nhánh khác không khác lắm so với việc tạo ra một "sản phẩm riêng biệt", điều bạn (chính xác) cảnh báo OP chống lại. Một nhánh dài hạn không được hợp nhất trở lại với dòng phát triển chính không gì khác ngoài một bản sao phải được duy trì riêng. Để tránh điều này, có một cách tiếp cận nổi tiếng là sử dụng các tính năng bật tắt , có nghĩa là "logic có điều kiện trong ứng dụng" và thường là một giải pháp tốt hơn nhiều so với việc lạm dụng các nhánh SVN cho việc này.
Doc Brown

@DocBrown - Bạn chưa đọc câu hỏi và câu trả lời. Bốn lựa chọn được đưa ra bởi OP và câu trả lời chỉ đưa ra hàm ý. Câu trả lời cho thấy lợi thế nhanh chóng cũng như cạm bẫy cho mỗi. trong khi tính năng bật tắt chắc chắn là giải pháp tốt nhất khi có một số biến thể - phân nhánh svn về cơ bản là một lối thoát dễ dàng cho một trong những thay đổi đó. Tất cả thực sự phụ thuộc vào quan điểm ngắn hạn và dài hạn về những gì các biến thể này có khả năng. Và như tôi thấy, câu trả lời thực sự đánh giá tất cả các lựa chọn và ý nghĩa của chúng khá trung lập!
Dipan Mehta

Và thẳng thắn - điều gì là xấu về câu trả lời này mà nó xứng đáng -1 phiếu bầu?
Dipan Mehta

Không cần phải xúc phạm tôi. Nhận xét của tôi là chính xác về ý nghĩa của bạn. Bạn đã viết "Duy trì một nhánh khác trong lật đổ - Có! ". Ý kiến ​​của tôi ở đây: " Không , đừng làm điều này, đây là lời khuyên rất tệ, vì bản demo có thể là một tính năng dài hạn". Và bạn đã viết "Sử dụng một số loại logic có điều kiện trong ứng dụng - Chắc chắn là không! ". Nhưng điều đó hoàn toàn trái ngược với việc sử dụng các tính năng bật tắt. Nếu bạn gặp vấn đề với downvote, hãy chỉnh sửa câu hỏi của bạn và giải quyết những mâu thuẫn này, có thể bạn có ý nghĩa khác.
Doc Brown

9

Cách tiếp cận tốt nhất sẽ là mô đun hóa để bạn có thể bật hoặc tắt các mục trong bất kỳ ứng dụng nào.

Bản demo của bạn là bản cài đặt prod, với cấu hình bật các thứ khác với ứng dụng prod thực tế và trỏ đến một cơ sở dữ liệu khác.


+1 cho một câu trả lời đơn giản cho một yêu cầu khá đơn giản từ ông chủ của mình.
dodgy_coder
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.