Cách giới thiệu một tính năng chỉ cho một vài người dùng được chọn


11

Một ví dụ điển hình về những gì tôi đang cố gắng hỏi về tính năng Dòng thời gian mới của Facebook. Ban đầu, chỉ có một vài người được chọn được phép truy cập vào dòng thời gian. Khi tính năng này trở nên vững chắc hơn trong cách thức hoạt động và các lỗi đã được sửa trong đó, người dùng bổ sung được phép truy cập vào tính năng này. Vào một ngày sau đó, một nhóm lớn người dùng đã được phép truy cập vào tính năng này và bây giờ, đây là một tính năng chung cho tất cả người dùng. Làm thế nào để một nhóm phát triển quản lý loại tính năng này?

Tôi đã chơi với ý tưởng sử dụng các cài đặt cấu hình để kiểm soát truy cập có chọn lọc nếu có thứ gì đó đang được thử nghiệm hoặc trong sản xuất thông qua tệp cấu hình và có điều kiện nếu các câu lệnh trong mã. Bây giờ trong khi điều này ổn đối với các tính năng đơn giản, tôi tin rằng nếu chúng tôi cố gắng thực hiện điều này trong một bộ tính năng lớn hơn, nó sẽ trở nên không thể quản lý được.

Điều gì sẽ là cách tốt nhất để quản lý cuộn ra tính năng theo cách này?


3
ACL & RBAC là hai cách (rất giống nhau) để thực hiện những gì bạn đang tìm kiếm.
yannis

@YannisRizos: Được cấp, đó là một câu trả lời nhỏ / ngắn, nhưng tôi nghĩ nó hữu ích về mặt pháp lý. Bạn nên đăng nó như một câu trả lời.
Steven Evers

Điều này về cơ bản là giống nhau cho tất cả các tính năng không chỉ mới? Tùy thuộc vào thông tin người dùng có quyền truy cập vào x lượng tùy chọn? Chẳng hạn cấp quản trị viên có thể thay đổi cài đặt và cấp độ grunt chỉ có thể nhập dữ liệu?
Pieter B

Câu trả lời:


2

Làm thế nào để một nhóm phát triển quản lý loại tính năng này?

Thật dễ đoán rằng một hệ thống như Facebook được điều khiển chủ yếu bởi cơ sở dữ liệu. Tất cả dữ liệu người dùng rõ ràng được lưu trữ trong cơ sở dữ liệu và có thể bao gồm thông tin về cách hiển thị dữ liệu của người dùng. Không thể biết chính xác cơ sở dữ liệu của Facebook được thiết lập như thế nào, nhưng đó phải là trường hợp một tính năng như Dòng thời gian được triển khai cho người dùng theo cách dần dần bằng cách chọn định kỳ người dùng trong cơ sở dữ liệu, dựa trên một số tiêu chí và thay đổi giá trị ( s) của một số lĩnh vực.

Ví dụ, có lẽ họ có một lĩnh vực trong bảng người dùng như timeline_statuscó giá trị như not offered, offered, preview, và public. Chỉ dựa vào đó, hệ thống của Facebook có thể quyết định cách hiển thị trang thông tin của người dùng. Sau đó, nhóm FB có thể dùng thử tính năng Dòng thời gian bằng cách chọn một số nhóm người dùng và thay đổi giá trị của trường đó.

Trong thực tế, tôi chắc chắn rằng nó phức tạp hơn thế một chút, nhưng ý tưởng cốt lõi là tài khoản người dùng chỉ là dữ liệu và một số dữ liệu đó có thể xác định tính năng nào khả dụng. Ra mắt một tính năng mới sau đó chỉ là vấn đề cập nhật hồ sơ người dùng trong cơ sở dữ liệu.


9

... và có điều kiện nếu các câu lệnh trong mã.

Vâng, đó là cách sai để làm điều đó. Dù tính năng X là gì nếu nó có thể cấu hình được thì nó phải mở rộng hoặc thay thế một cái gì đó. Làm điều đó trong mã. Ví dụ, điều FB có thể có một cái gì đó như vậy:

class UserPageView;
class HatedTimelineView : UserPageView;
class OldViewEveryoneLikes : UserPageView;

Sau đó, bạn sẽ xây dựng một nhà máy tạo các đối tượng UserPageView khi truy cập trang người dùng dựa trên cấu hình. Bạn sẽ kích hoạt chế độ xem đó. Không có nhánh ngớ ngẩn.

Bạn muốn làm theo cách này bởi vì nếu ai đó yêu cầu bạn thay đổi nó một lần, họ sẽ yêu cầu lại. Hơn nữa họ sẽ yêu cầu thay đổi một điều khác. Câu đố kiến ​​trúc của bạn với các trường hợp đặc biệt và nếu ở khắp mọi nơi và bạn sẽ có một bát mì spaghetti khổng lồ không thể thay đổi, thay vì một sản phẩm giàu tính năng, trưởng thành.


Bạn cần sử dụng điều kiện nếu báo cáo. Nếu không, làm thế nào để nhà máy của bạn biết UserPageView sẽ trả về? Điều đó nói rằng, tôi đồng ý rằng việc đặt tất cả các câu lệnh thông qua mã là một ý tưởng tồi, bạn muốn tập trung chúng.
briddums

1

Hãy nghĩ về tính năng này giống như cách bạn nghĩ về tính năng quản trị trên wedsite.

Khi một trang đang tải kiểm tra xem người dùng có các đặc quyền phù hợp cho tính năng hay không nếu tải nó.

Facebook dường như sử dụng cách tiếp cận dựa trên vị trí khi tung ra các tính năng mới. Điều này có thể đơn giản như nhìn vào địa chỉ IP của người dùng để tìm vị trí của họ.

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.