聊聊互联网应用发布模式

在过去的 10 年里,很多大公司的IT系统都在使用蓝绿部署,安全、可靠是这种部署方式的特点。蓝绿部署虽然算不上” 银弹 “,但确实其在实际的生产环境发布与运维的过程中很实用。随着架构技术的演化和发展,在有关“微服务”、“ DevOps ”、“ 云原生Cloud-Native ”等技术体系的发展和讨论中,蓝绿部署、 A/B 测试、灰度发布(金丝雀发布),这三种部署方式同时在大众的视野中。

蓝绿部署和灰度发布(金丝雀发布)通过让IT人员可以在发布过程中发生问题时能够将版本快速回滚到先前版本来减轻应用程序部署的风险。这两个方法让版本之间来回切换就像轻按开关一样容易,并且可以自动执行,从而最大程度减少了用户暴露在错误代码的时间。A/B 测试与蓝绿部署完全是两码事。A/B 测试是用来测试应用功能表现的方法,例如可用性、受欢迎程度、可见性等等。 A/B 测试通常用在应用的前端上,不过当然需要后端来支持。

1. 蓝绿部署

在蓝绿部署过程中,有两套生产环境:蓝环境和绿环境。蓝色是当前版本并拥有实时流量,绿色是包含更新代码的环境。无论任何时候,只有一套环境有实时流量。

聊聊互联网应用发布模式_第1张图片
蓝发布

要发布一个新版本,需要先将代码部署到没有流量的环境中,这是执行最终测试的地方。当IT人员确认应用程序已经准备就绪,就会将所有流量都将路由到绿色环境。那么绿色环境就已经生效,并且执行发布。

聊聊互联网应用发布模式_第2张图片
绿发布

这是版本的新代码首次在生产环境(实际应用流量)中进行测试。在实际发布代码之前,风险仍然会存在,并且永远不会消失。但是,如果出现问题,公司IT部门可以快速将流量重新回滚至蓝色版本。因此,他们所要做的就是密切监控代码行为,甚至可以使用适当的工具将其自动化,以查看绿色环境中的版本是否运行良好或是否需要进行版本回滚。

特点

  • 如果新部署应用出现问题,则影响范围较大;

  • 应用发布策略简单;

  • 用户无感知,应用版本平滑过渡;

  • 应用版本升级/回滚速度快。

缺点

  • 需要准备正常业务使用的两倍以上服务器资源,防止升级期间单组应用无法承载业务突发;

  • 短时间内会浪费一定资源成本;

  • 基础设施无改动,增大升级稳定性。

2. 灰度发布(金丝雀发布)

与蓝绿部署类似,灰度发布(也称金丝雀发布)也是始于两套环境:有实时流量的环境以及没有实时流量但包含了更新的代码的环境。与蓝绿部署不同的是,流量是逐渐迁移到更新的代码。一开始是1%,然后10%、25%,以此类推,直至100%。通过自动化发布,当确认代码能够正确运行时,它就可以逐步推广到更大、更关键的环境中。如果在任何时候发生了问题,所有流量都会被回滚到之前的版本。这在很大程度上降低了风险,因为仅有一小部分用户会使用到新的代码。

企业IT部门不仅可以控制用户部署的比例,而且金丝雀发布还可以从不太重要的用户开始,例如使用免费账户的用户或相对来说不太重要的业务市场。

聊聊互联网应用发布模式_第3张图片
灰度发布

特点

  • 保证整体系统稳定性,在初始灰度的时候就可以发现、调整问题,影响范围可控;

  • 新功能逐步评估性能,稳定性和健康状况,如果出问题影响范围很小,相对用户体验也少;

  • 用户无感知,平滑过渡。

缺点

  • 自动化要求高

部署过程

  • 准备好部署各个阶段的应用组件,包括:构建应用组件、测试脚本、配置文件和部署清单文件;

  • 从负载均衡列表中移除掉“金丝雀”服务器;

  • 升级“金丝雀”应用(排掉原有流量并进行部署);

  • 对应用进行自动化测试;

  • 将“金丝雀”服务器重新添加到负载均衡列表中(连通性和健康检查);

  • 如果“金丝雀”在线使用测试成功,升级剩余的其他服务器,否则就回滚应用。

3. A/B测试

AB测试是为Web或App界面或流程制作两个(A/B)或多个(A/B/n)版本,在同一时间维度,分别让组成成分相同(相似)的访客群组随机的访问这些版本,收集各群组的用户体验数据和业务数据,最后分析评估出最好版本正式采用。

A/B 测试目的在于通过科学的实验设计、采样样本代表性、流量分割与小流量测试等方式来获得具有代表性的实验结论,并确信该结论在推广到全部流量可信。所以说,A/B测试和上述两种发布方式的讨论维度是不一样的,A/B测试倾向于产品功能的受欢迎程度、可用性以及可见性等,而蓝绿部署、金丝雀发布等目的是安全稳定地发布新版本应用,并在必要时回滚。

你可能感兴趣的:(聊聊互联网应用发布模式)