部署策略

已完成

DevOps 实践涉及到频繁的发布周期,这些发布周期使组织及其最终用户在多个方面受益。 由于各个部署规模较小,因此它们速度更快且更省力,但仍然可能出错。 为了降低出现问题的可能性,你需要采用最适合你组织需求的部署策略。

你已经了解了“史诗式部署”方法,有些人将其称为“大爆炸”策略。 你知道这种方法不适用于新式应用程序。 在新式运维环境中,还有许多其他部署策略已变得流行,每种策略根据具体情况都有其自身的优缺点。

滚动部署策略

滚动部署策略采用渐进方法来引入新版本的代码。 新版本将在一段时间内逐步使用,以便逐渐增加新代码的实例,同时减少旧代码的实例。 这意味着新旧实例将在组织内共存。 例如,你可以一次升级一台服务器、虚拟机或容器上的软件。

此策略的优点是,你可以在生产环境中监视新代码,以确保新代码在广泛部署之前满足你的性能、安全性、可靠性和其他标准。

蓝绿部署策略

蓝绿部署策略使用两个完全相同的独立环境。 一个是包含新版本软件的测试环境,另一个是当前的生产环境。 当你认为软件运行正常并符合你的标准时,即可从当前生产环境完全切换到新生产环境,以便新生产环境立即处理所有生产流量。

蓝环境是你当前的生产环境。 绿环境是与它完全相同的副本。 首先,在绿环境中部署新版本的软件,然后在准备就绪后,将应用程序流量从蓝环境路由到绿环境(即你现在的生产环境)。

该策略的优点是,你可以几乎瞬间进行切换,而无需停机。 如果在启用绿环境后发生问题,也很容易切换回蓝环境。

金丝雀部署策略

金丝雀部署策略将滚动部署的某些要素与蓝绿部署的要素结合起来。 你无需一次全部切换,而是将新版本部署到生产环境的有限部分中,然后将所有流量逐步转移到新版本。 将软件逐步部署到有限数量的实例或用户,直到你确认它运行正常,然后再推送到基础结构的其余部分。

该名称来自在煤矿中使用金丝雀作为预警系统的做法。 在金丝雀部署中,可以进行自动化测试,并使用监视和分析功能来获得在一小部分实例或用户中使用新版本时出现任何问题的预警。 这样,整个生产环境就不受影响。

特性标志

功能标记想法是另一种策略,对开发人员一方提出了略显复杂的要求。 我们提供了一个同时包含旧版软件和新更改(功能等)的软件版本,而不是提供同一个软件的两个独立版本(一个是旧版本,另一个是新版本(可能其中包含新功能))。 默认情况下,新更改处于休眠状态并且不可见,直到通过翻转标记激活该更改的“功能标记”。 该标记可以采用多种形式,包括配置文件中的一行、命令行参数、软件在启动时从联机服务器咨询获得的特殊响应等。

这种方法的一个优点是,可以在出现问题时轻松回滚,也可以轻松地缓慢推送更改。 我们不必将新版本(包含所有这些位)发送到服务器或客户,只需关闭或打开相应标记即可降级或升级它们。

部署最佳做法

无论你使用的是哪种部署策略,都有一些最佳做法可帮助你在推送新软件或现有软件的新版本时最大程度地降低风险:

  • 使用合适工具(例如 Azure Pipelines)来创建持续集成和部署管道。

  • 集成自动测试。

  • 使用信道将测试结果通知给相关各方;也就是说,在部署失败、遇到问题等时提醒团队。

  • 部署后立即监视以发现问题。

  • 有针对新版本部署未通过运行状况检查或工作不正常情况的回滚计划。

知识检查

1.

涉及复制生产环境、升级该环境,然后完全转换到该副本的部署策略是:

2.

涉及将升级推送给一部分用户或生产流量,并随着时间的推移提高相应百分比的部署策是: