让产品7*24小时持续服务于用户--在线更新产品功能

2020-02-15| 2cloudlab.com, 云计算, devops, terraform, rolling deployment

当企业对外发布产品的新功能时,如何保证原有的功能不受影响,仅替换需要升级的功能?企业无法接受在线服务暂时性停止对外服务。试想想,几十万用户正在使用某个软件产品,突然因为企业的一次功能升级,导致几十万用户无法正常使用,最终造成企业损失。幸运的是,在软件行业,有几种方案可以解决这类问题。

方案一:blue/green deployment。这种方案的思想是维持2套相似的运行环境,其中一个环境运行当前产品,另外一个环境运行带有新功能的产品,一旦带有新功能的产品能够正常工作了,就将用户流量导入新环境, 并保留原来的环境(以免新环境发生严重问题时,可以及时切换到原来稳定的环境上)。这种方案的好处是实施起来简单,而且可以及时恢复到最新的稳定环境上,但是它增加了成本(需要同时运行2套相似的运行环境),增加了工作量(需要同时管理2套相似的运行环境)。整个过程如下图所示:

方案二: rolling deployment。这种方案的思想是增量替换,先启动新功能,将流量从原有功能导入到新功能上,保持原有功能,直到新功能正常工作才关闭原有功能。持续以上步骤,直到新功能逐一替换掉原有功能。这种方案的好处是无需维护2套资源,降低成本,但是其缺点是增加了实施的复杂度。除此之外,该方案也有局限性,它适用于由大量微服务组成的分布式系统。整个过程如下图所示:

方案三: canary deployment。这种方案在rolling deployment的基础之上加入了一些特性。比如根据用户的特征(国家、性别、年龄等)来确定一小部分群体,并向该群体发布新功能。这种方案进一步增加了实施的复杂性,好处是对外发布时,其作用的范围,粒度更细了。

每种方案都有适用的场景,因此企业需要根据实际情况选择其中一个来解决在线更新产品功能的问题。

听起来还不错 ?

如果你所在的企业遇到了以下问题:
研发流程混乱不堪或者效率低下、经历了持续上升的运维成本、无法及时向用户发布新的服务或产品以及想使用云计算技术但缺乏经验!
那么,请毫不犹疑地

联系我们