金丝雀发布,如何使用编码进行模拟,如果可能的话

时间:2016-05-22 22:07:37

标签: javascript typescript angular canary-deployment

我正在建立一个网站模拟器的项目。我正在测试功能切换如何提供一些可以帮助团队比现在更频繁地发布的缺点。

我喜欢模拟的一件事是Canary版本是如何工作的。让我们说我刚刚完成了一个新功能,我需要在生产中进行测试。 Canary发布只是为了向少数用户推出此功能。

你如何用代码模拟这个?我正在使用angular2 anad和typescript构建applikation。已为我可以使用的功能创建配置文件。

你怎么说,只选择5%的访问网站的随机人来测试特定功能?这一切都是通过服务器配置完成的(在不同的服务器上运行另一个构建)。

如果有任何人可以在应用程序启动时做出如何模拟这个的代码示例,我会很高兴。

自己编写了这段代码:

var switchKey: string = localStorage.getItem('featureSwitch');

    if (this.featureSwitch != null) {
        if (switchKey == "11") {
            this.featureSwitch = 1;
            localStorage.setItem('featureSwitch', this.featureSwitch.toString());
        }

    }
    else {
        if (switchKey != null) {
            if (switchKey == "11") {
                this.featureSwitch = 1;
                localStorage.setItem('featureSwitch', this.featureSwitch.toString());
            }
            else {
                this.featureSwitch = Number(switchKey) + 1;
                localStorage.setItem('featureSwitch', this.featureSwitch.toString());
            }
        }
        else {
            this.featureSwitch = 1;
            localStorage.setItem('featureSwitch', this.featureSwitch.toString());
        }

    }

这可能是一个不好的例子,因为我认为它不会在现场(在互联网上)上运行,这只能在本地主机服务器上进行测试。基本上我在本地存储中保存1-11的数字,在那里我可以显示基于一个或多个数字的特征。

我有什么想法可以轻松地做到这一点吗?

1 个答案:

答案 0 :(得分:0)

  

基本上我在本地存储中保存1-11的数字,我可以根据一个或多个数字显示一个功能。

您应该根据用户(而不是浏览器会话)进行金丝雀发布。否则,用户在切换浏览器/设备/位置时会感到惊讶。并且您将不知道哪些用户参与了测试(如果用户使用两个设备,则用户可以并且不能参加测试)。

这需要服务器端支持,交换机属于服务器。

相关问题