我正在寻找如何让一些用户先于其他用户试用新版本的web应用程序的建议。
我希望这对用户是透明的。他们不会知道他们在测试版上运行。
我的一个想法是创建beta.domain.int和prod.domain.int,然后让负载平衡器向其中一个发送请求。哪种(如果有的话)负载均衡器允许您在应用程序中设置“beta=1”cookie并基于cookie指导其请求?当没有beta存在时,无论cookie如何,都将提供PROD DIMAN.IN。cookie将由用户“选择加入”beta版本来设置。
google和facebook有能力在小用户群上测试新功能,然后才能提供一些通用的功能。他们是怎么做到的?
最佳答案
您不需要寻找负载平衡器,因为负载平衡器通常用于平衡负载,与实际实现无关。您需要做的是在应用程序中实现此功能。
以facebook为例,由于它是用php编写的,我将为您提供一个breif示例(伪代码),说明它们如何实现这一点:
if(isUserBetaTester()){
include("beta_functions.php");
}
else{
include("normal_functions.php");
}
要在.NET中模拟相同的功能,可以使用自定义属性来确定要真正运行的操作和要真正呈现的视图,因为如果用户是beta用户或其他用户,则不希望重复签入操作/控制器。
在操作筛选中考虑以下内容(也是伪的):
if(string.IsNullOrEmpty(Cookies["beta"]))
{
var betaModel = DataLayer.GetModelForThisAction();
Render("BetaView", betaModel);
}
else
{
var normalModel = DataLayer.GetModelForThisAction();
Render("NormalView", normalModel);
}
有很多方法可以实现这一点,但请记住,将“is beta user”添加到数据库的用户表中,并为beta用户提供一个特殊的域,然后检查“这是beta用户吗?”。这样,您可以在整个域上添加一个筛选器,以检查是否允许该用户。
我的第一个回答包括一个vaughe的“重定向”语句,我打算使用一个服务器传输来保存url,但这可能是个坏主意,因为它会在回发时更改。