2012-01-30 4 views
2

私はfacebookのリリースが徐々に機能するのが好きです。私はステートメントがあなたのコード全体に散らばっているならば、これは束で再現することができますが、これを行う良い方法が必要です。おそらくそれは本当に彼らがやっているすべてのことですが、それはむしろやりにくいようです。ユーザーベースの一部に機能を段階的にリリースできるのではなく、アーキテクチャの業界標準があるかどうかを知っていますか?フェイスブックのリリース機能は、ユーザーベースの部分にどのようにゆっくりと反映されますか?

私は、同じ従業員全員が完全に異なるベータ版のサイトを見ているような気がします。だから、彼らはベータ版やその他のものとしてウェブサイトの特定の部分をプロダクションと見なして、人々が見ているものを導くための何らかのアクセス制御リストを持っているようです。それは遅くなるようです。

ありがとうございます!

+0

あなたは実際にhttp://beta.facebook.com/を見ることができます。APIの変更は1〜2週間で全員に公開されます。 – ceejayoz

+2

特定のユーザーを想像できる任意の基準で、別のバージョンのソフトウェアを実行している別のサーバーに簡単にルーティングするだけで簡単です。 –

+0

私は同意します - これらの人はおそらく何千ものサーバーを持っています。一部のクラスタでは、フロントエンドのバージョンが異なり、ロードバランサによってWebサーバーの特定のクラスタにルーティングするようにユーザーアカウントを設定できます。 –

答えて

1

Facebookには多くのサーバーがあり、一部のサーバーでのみ新機能を適用できます。また、プロダクションにコミットする前に新しい機能をテストするサーバをいくつか用意しています。

0

よりエレガントな解決策は、gargoyle (in python).

のようなシステムを使用してif文と機能フラグであるあなたが何か行うことができ、このようにシステムを使用する:Webインターフェイスで

if feature_flag.is_active(MY_FEATURE_NAME, request, user, other_key_objects): 
    # do some stuff 

をあなたのことができるようになりますアイソレートは、ユーザー、要求、またはシステムにある他のキーオブジェクトを記述し、それらのユーザーに機能を提供します。実際には、リクエストを介して、新しい機能へのトラフィックのX%のようなものを行うことができ、A/Bテストや分析のようなことを行うことができます。

0

このアプローチは、認証層が製品層に触れる段階的なアーキテクチャを持つことです。

ユーザーが製品URLを入力すると、認証サーバーのクラスタに誘導されるように解決されます。これらのサーバーは認証を処理し、セッションを製品サーバーのクラスタに渡します。することができます。このアプローチを使用

  • は、アプリケーションの異なるバージョンを実行する「ゾーン」
  • ルートにゾーンを決定し、あなたの認証サーバ上のファイル名を指定して実行ロジックセッションにあなたの製品サーバーを分離〜

例として、ゾーンAに最新のプロダクションコードを実行させ、ゾーンBにベータコードを実行させることができます。ログインの時点で、認証サーバーは、a-mで始まるユーザー名を持つすべてのユーザーをゾーンAに、n-zをゾーンBに送信します。その結果、およそ半分のユーザーがベータ製品で実行されます。

ログイン時に利用可能な情報によっては、これよりも高度なものを実行することもできます。たとえば、特定のユーザー層(たとえば、年齢層、性別、地域など)をターゲットに設定できます。

関連する問題