2013-04-15 28 views
3

我希望有一个平台将Beta功能推广到我的网站用户的一小部分。我不确定最佳做法是什么做这个和寻找您的建议。构建一个Beta站点以镜像生产站点

选项1:我考虑的第一个选项是创建一个非生产环境,它将镜像实时应用程序。然后,我可以向用户提供一个新的测试版DNS,以便他们可以采样最新功能。这种方法的缺点是可维护性和可靠性。生产环境中的数据需要刷新到Beta数据库,以确保用户体验与生产一致。由于此Beta环境将处于非生产性基础架构中,因此会因连续构建而更容易中断等。

选项2:将其他服务器部署到生产环境,使用测试版子域指导用户到现场。过时的数据没有问题,因为它可能指向与现有生产环境相同的来源。缺点是发布到现场制作环境的频率会较低,以保持应用程序的稳定性和可靠性,并且这是为生产支持团队维护的额外节点。

选项3:将Beta功能部署为主代码分支的一部分,并在代码中具有逻辑以显示某些用户的Beta功能。这种方法需要在稳定代码中实现Beta变更,释放次数较少,并且可以在不影响现有代码库稳定性的情况下测试更改类型,从而减少灵活性。

过去的经验对我应该如何进行的任何建议?

谢谢

回答

1

使用选项2)。您希望尽可能地从生产代码中分离出测试代码,并且这种方式如果最坏的情况发生,并且测试代码会使服务器崩溃,那么测试版用户只会故障转移到生产服务器。

1)如果您的测试版环境太不稳定,那么用户根本不会使用它。 3)你会冒生产代码受污染的风险。

我对这类事情的大部分经验都在亚马逊AWS上,获得新的“服务器”与获得新的EC2实例一样简单。我假设你设置一台新服务器的成本并不高。

+0

谢谢。我对Option 2的另一个担忧是,如果我使用相同的数据库作为实时应用程序,那么我将缺乏大规模实验的灵活性。为了支持这些大型的变化,我需要为Beta站点创建一个新的数据库来实现分离,以防止活动站点的任何污染。支持这种额外配置的开销几乎将我推向选项1,正如你所提到的那样将会潜在地不稳定 – cduggan

+0

是的,我建议将beta用户的数据迁移到beta数据库并从生产数据库中删除它们,但是当测试版服务器失败并且测试版用户故障转移到生产数据库时,情况就会出错。我所能想到的只是向beta数据库添加触发器,以便在它接收到更新时还会更新生产数据库,以便故障转移无缝。 –

+0

我们对AWS项目所做的更改均为附加更改,因此生产服务器仍可以毫无问题地查询Beta数据库。 –

相关问题