DarkLaunching一个功能意味着调用一个新的或者变更的后端行为,但不让用户知道这个接口的存在。这是在新功能上线前,用来评估额外的压力和性能对系统的影响。
例如,将交叉销售建议添加到零售站点的结帐流中。(比如,如果我买了一个烤面包机,我显然还想买一套新的牛排刀。)算出推荐的东西会消耗一定的时间并给系统带来压力,使结账流程或者整个网站变慢。Dark launching给了我们在上线这个功能前评估影响的手段。我们通过使用Keystone Interface创建一个新功能,并集成到生产环境中,但是没有用户接口,所以用户不知道它的存在。但是在我们添加keystone之前,修改结账的流程来调用推荐引擎就像在生产一样。这样推荐系统就像已经发布一样在工作,但没有人知道它正在工作。
如果我们使用 Feature Toggle ,我们可以轻松的在生产打开和关闭这个功能。如果发现这个功能影响生产的性能,我们可以在客户感知前关闭这个功能。然后可以继续优化这个功能直到性能满足要求,这是就可以增加keystone并对外发布这个功能。
在增强用户的交互,而且这个交互不需要用户选择时,Dark launching工作的最好。为了测试一些依赖用户的选择的,金丝雀发布是很好的选择。