首页 > 解决方案 > 如何进行用户特定的 Web 应用程序部署?

问题描述

我有一个 Web 应用程序,我遇到了一个场景,我即将发布我的应用程序的新版本,但我希望该版本首先只对特定的一组用户可用?

例如,我的应用有用户(a、b、c、d、e、fg、h)。我正在发布我的应用程序的 v2,这些用户不需要知道我已经发布了我的应用程序的新版本。每当用户 (a,b,c) 尝试访问应用程序时,他们应该被重定向到 v2,而每当其他用户尝试访问应用程序时,他们应该被重定向到 v1。

从部署和系统设计的角度来看,如何实现这一点?

标签: webarchitectureload-balancingweb-deploymentsystem-design

解决方案


最简单的方法是通过功能标志。您使用 V2 的代码部署应用程序,但它仅适用于特定的一组用户。为此,您需要一个功能标记系统。

Launch Darkly将功能标记作为一项服务提供,我使用过它,但我不能推荐它。

就像它如何工作的一个小预览一样,首先您需要使用 SDK(您从平台获得)创建一个客户端对象:

LDClient ldClient = new LDClient("YOUR_SDK_KEY");

然后您需要构建一个LDUser对象,这只是您的用户的抽象:

LDUser user = new LDUser("user@test.com");

然后,您只需使用这些对象来检查功能标志的状态。您在平台上配置功能,您可以在其中看到漂亮的图表和报告(何时使用或不使用功能等)

boolean showFeature = ldClient.boolVariation("your.feature.key", user, false);
if (showFeature) {
  // application code to show the feature (the V2 functionality, in your case)
}
else {
  // the code to run if the feature is off (the V1 functionality)
}

如果您不想使用它,您可以构建自己的系统,这取决于您的用例是否真的值得努力(对于简单的场景,您可以将此系统视为带有 API 的数据库)前面)


推荐阅读