Lưu trữ nội dung trang web có thể chỉnh sửa?


9

Chúng tôi có một trang web dựa trên Django mà chúng tôi muốn làm cho một số nội dung (văn bản và logic kinh doanh như kế hoạch giá) có thể dễ dàng chỉnh sửa trong nhà và vì vậy chúng tôi đã quyết định lưu trữ bên ngoài cơ sở mã. Thông thường lý do là một trong những điều sau đây:

  • Đó là thứ mà những người phi kỹ thuật muốn chỉnh sửa. Một ví dụ là viết quảng cáo cho một trang web - các lập trình viên chuẩn bị một mẫu có văn bản mặc định là "Lorem ipsum ..." và nội dung thực được chèn sau vào cơ sở dữ liệu.

  • Đó là điều mà chúng tôi muốn có thể thay đổi nhanh chóng mà không cần phải triển khai mã mới (mà chúng tôi hiện đang làm hai lần một tuần). Một ví dụ sẽ là các tính năng hiện có sẵn cho khách hàng ở các mức giá khác nhau. Thay vì mã hóa những thứ này, chúng tôi đọc chúng từ cơ sở dữ liệu.

Giải pháp được mô tả là linh hoạt nhưng có một số lý do khiến tôi không thích nó.

  • Bởi vì nội dung phải được đọc từ cơ sở dữ liệu, có một chi phí hoạt động .

    Chúng tôi giảm thiểu điều đó bằng cách sử dụng sơ đồ bộ đệm, nhưng điều này cũng làm tăng thêm một số phức tạp cho hệ thống.

  • Các nhà phát triển chạy mã cục bộ sẽ thấy hệ thống ở trạng thái khác biệt đáng kể so với cách nó chạy trên sản xuất. Kiểm tra tự động cũng thực hiện hệ thống ở một trạng thái khác. Các tình huống như thử nghiệm các tính năng mới trên máy chủ dàn cũng trở nên phức tạp hơn - nếu máy chủ dàn không có bản sao cơ sở dữ liệu gần đây, thì nó có thể khác bất ngờ so với sản xuất.

    Thỉnh thoảng chúng tôi có thể giảm thiểu điều đó bằng cách cam kết trạng thái mới vào kho lưu trữ (ví dụ: bằng cách thêm di chuyển dữ liệu), nhưng có vẻ như đó là một cách tiếp cận sai. Là nó?

Bất kỳ ý tưởng làm thế nào tốt nhất để giải quyết những vấn đề này? Có cách tiếp cận nào tốt hơn để xử lý nội dung mà tôi đang xem không?


2
Cách tốt nhất để giải quyết các vấn đề như thế này là tránh 'tê liệt phân tích'. Bất kỳ cách nào bạn chọn để làm điều này sẽ có chi phí chung, đừng thêm nhiều hơn bằng cách tự đoán thứ hai hoặc thứ ba.
Nocturno

Bao nhiêu ngày nhà nước chúng ta đang nói về ở đây? Vài kbs, megs?
Amit Wadhwa

Câu trả lời:


5

Bạn nên nghĩ về nội dung có thể chỉnh sửa như một tính năng đầy đủ .

  • Một số phức tạp thêm vào rõ ràng là cần thiết. Có lẽ bạn có thể lưu trữ tài nguyên tĩnh sau khi chỉnh sửa để tránh gây hại cho hiệu suất.
  • Nội dung là dữ liệu, vì vậy nó là một phần của trạng thái hệ thống. Các nhà phát triển phải đối phó với nó với suy nghĩ người dùng có thể làm khá nhiều thứ mà UI của bạn cho phép họ làm.
  • Nếu các kiểm tra tự động dựa trên trạng thái cơ sở dữ liệu, các kiểm tra cũng phải đặt trạng thái cơ sở dữ liệu (TestDataBuilders, đồ đạc ...) trước khi chạy hoặc làm cho chúng kiểm tra đơn vị (có thể thông qua chế độ chế nhạo).

Nhưng, thay vì làm cho nội dung có thể chỉnh sửa, bạn có thể làm cho những người kỹ thuật đó trở thành một phần của dòng phát triển của bạn. Thay vì phát triển -> triển khai -> thay đổi dữ liệu, bạn có thể thay đổi dữ liệu -> phát triển -> triển khai. Có lẽ bạn có thể mượn một số ý tưởng từ các nền tảng blog tĩnh như Octopress .


0

Đây là một nhiệm vụ tốt cho DevOps của bạn. :) Bạn có thể làm như sau:

  1. Đặt các tài nguyên có thể chỉnh sửa vào kho lưu trữ tạo tác / VCS riêng biệt (Tôi sẽ sử dụng thuật ngữ Git tại đây).
  2. Thực hiện quy trình xây dựng và triển khai của bạn để các tài nguyên này sẽ được kéo đơn giản từ kho lưu trữ đó sang vị trí riêng biệt trên máy chủ (bạn có thể thiết lập một số quy ước cho các môi trường khác nhau để bạn không cần phải định cấu hình vị trí này riêng cho từng tài nguyên).
  3. Khi người dùng thay đổi một cái gì đó trên trang web, thay đổi chỉ được lưu vào tệp tài nguyên. Đẩy vào kho lưu trữ từ xa được thực thi không đồng bộ trên mỗi thay đổi.
  4. Để triển khai bất kỳ thay đổi nào, nhà phát triển sẽ vô hiệu hóa chức năng chỉnh sửa và hợp nhất các thay đổi của anh ta vào kho lưu trữ từ xa. Sau đó, khi sản xuất, anh ta kéo các tập tin đã hợp nhất từ ​​repo từ xa. Sau đó, chức năng chỉnh sửa có thể được kích hoạt lại.

Có thể tự động hóa mọi thứ trừ việc hợp nhất với Chef hoặc bất kỳ công cụ nào khác, vì vậy giải pháp này có thể thoải mái cho cả người dùng, nhà phát triển và SQA.


0

Bất kỳ ý tưởng làm thế nào tốt nhất để giải quyết những vấn đề này?

Chúng tôi đã có tình huống rất giống nhau. Chúng tôi đã kết thúc bằng cách sử dụng các ứng dụng Django sau đây:

Nó không hoàn hảo, nhưng nó cung cấp cho bạn tất cả những gì bạn cần:

  • người phi kỹ thuật có thể chỉnh sửa,
  • không cần triển khai mã.
  • Nếu bạn cần kiểm soát phiên bản, ứng dụng đảo ngược sẽ cung cấp cho bạn điều đó.

Để các nhà phát triển trải nghiệm các trang giống như trên hệ thống sản xuất, nếu đó là một yêu cầu thực tế, hãy xuất từ ​​sản xuất sang phát triển và thử nghiệm bằng cách sử dụng đồ đạc.

Có cách tiếp cận nào tốt hơn để xử lý nội dung mà tôi đang xem không?

Về mặt khái niệm, tôi nghĩ bạn đang đi đúng hướng. Hãy tự hỏi mình nếu bạn cần thực hiện giải pháp của riêng mình, hoặc nếu bạn có thể sống với một số loại CMS. Flatpages là một phiên bản rất đơn giản. Hơn CMS tinh vi có sẵn.

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.