選択した少数のユーザーのみに機能を展開する方法


11

私が質問しようとしていることの良い例は、Facebookの新しいタイムライン機能です。最初は、タイムラインへのアクセスが許可されたのは一部のみでした。機能の動作がより強固になり、バグが修正されたため、追加のユーザーが機能へのアクセスを許可されました。後日、大規模なユーザーグループがこの機能へのアクセスを許可されましたが、現在では、すべてのユーザーに対する一般的な機能です。開発チームはこのタイプの機能の展開をどのように管理しますか?

コード内の構成ファイルと条件付きifステートメントを介して、テストまたは実稼働中に何かが存在する場合、構成設定を使用してアクセスを選択的に制御するというアイデアを試しました。単純な機能ではこれで問題ありませんが、より大きな機能セットでこれを実装しようとすると、管理できなくなると思います。

この方法で機能のロールアウトを管理する最良の方法は何でしょうか?


3
ACLRBACは、探していることを行うための2つの(非常によく似た)方法です。
ヤニス

@YannisRizos:確かに、これは小さな/短い答えですが、正当に役立つと思います。回答として投稿してください。
スティーブンエバーズ

これは、新しい機能だけでなく、基本的にすべての機能で同じではありませんか?資格情報に応じて、ユーザーはx個のオプションにアクセスできますか?たとえば、管理者レベルは設定を変更でき、うなり声レベルはデータのみを入力できますか?
ピーターB

回答:


2

開発チームはこのタイプの機能の展開をどのように管理しますか?

Facebookのようなシステムは、主にデータベースによって駆動されていると簡単に推測できます。すべてのユーザーデータは明らかにデータベースに格納されており、ユーザーデータのレンダリング方法に関する情報が含まれている可能性があります。Facebookのデータベースがどのように設定されているかを正確に知ることは不可能ですが、タイムラインなどの機能が、いくつかの基準に基づいてデータベース内のユーザーを定期的に選択し、値を変更することにより、徐々にユーザーに展開される必要があります( s)いくつかのフィールド。

同様に、例えば、恐らく彼らは、ユーザーテーブルのフィールドを持っているtimeline_statusことのような値を有しているnot offeredofferedpreview、およびをpublic。それだけに基づいて、Facebookのシステムはユーザーの情報ページのレンダリング方法を決定できます。FBチームは、ユーザーのグループを選択してそのフィールドの値を変更することにより、タイムライン機能を試すことができます。

実際には、それよりもやや複雑であると確信していますが、基本的な考え方は、ユーザーアカウントは単なるデータであり、そのデータの一部が利用可能な機能を決定できるということです。その場合、新しい機能のロールアウトは、データベース内のユーザーレコードを更新するだけです。


9

...およびコード内の条件付きifステートメント。

ええ、それは間違ったやり方です。フィーチャーXがなんであれ、それが構成可能であれば、何かを拡張または置換する必要があります。コードでそれを行います。たとえば、FBには次のようなものがあります。

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

次に、構成に基づいてユーザーページにアクセスするときにUserPageViewオブジェクトを作成するファクトリを構築します。そのビューをアクティブにします。愚かな枝はありません。

誰かがあなたに一度それを変更するように頼んでいる場合、彼らは再びそれを要求するので、あなたはそれをこのようにしたいです。さらに、彼らは別のものを変更するように求めます。特別なケースで建築物をいじくりまわすと、あちこちにあり、機能豊富で成熟した製品ではなく、手に負えないカビの生えたスパゲッティの巨大なボウルができます。


条件付きifステートメントを使用する必要があります。それ以外の場合、工場はどのUserPageViewを返すかをどのように知るのですか?とはいえ、コード全体にステートメントを配置するのが悪い考えである場合、それらを集中化することに同意します。
ブリッダム

1

この機能は、wedsiteの管理機能と同じように考えてください。

ページの読み込み中に、ユーザーがその機能に対して適切な権限を持っているかどうかを確認します。

Facebookは、新機能を展開する際にロケーションベースのアプローチを使用しているようです。これは、ユーザーのIPアドレスを見て自分の場所を見つけるのと同じくらい簡単かもしれません。

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