「芒果」叶静涛:芒果的多云持续交付实践

核心提示亚太内容分发大会暨CDN峰会一直致力于推动CDN产业深度融合发展和市场普及,现已成为亚太地区影响力最大的内容分发网络盛会。十年来,在以阿里云、网宿科技、腾讯云等亚太CDN产业联盟成员孜孜不辍的努力下,CDN产业已经成为基础性设施网络,以坚定

亚太内容分发大会暨CDN峰会一直致力于推动CDN产业的深度融合和市场普及,现已成为亚太地区最具影响力的内容分发网络盛会。十年来,在阿里云、网宿科技、腾讯云等亚太CDN产业联盟成员的不懈努力下,CDN产业已经成为基础设施网络,以坚实的基石支撑着中国成为全球最大的互联网市场。

随着全球数字化和“一带一路”战略的推进,亚太内容分大会和CDN峰会的影响力正逐渐向全球延伸,同时也将推动中国智造CDN及其产业链走向世界的每一个角落。

6月10日上午,在【内容出海论坛】上,芒果TV运维研发负责人叶带来了题为《芒果TV的Spinnaker多云连续投放实践》的主题演讲。

演讲一开始,叶分享了一个小故事,那就是2021年2月22日,午饭时间,芒果TV监控系统全方位报警,一个公有云中上百个实例被删除!由于持久多云机制,流量被自动转发到其他云,故障云只需20分钟即可重建所有实例。这种故障对用户的真实影响率不到2%。其中,使用了31个扩展组,123个实例,8-20分钟重建和1.93%撞击率。“我们坚持阴云密布的故事,否则就是意外。”叶对说道。

言归正传,叶陶晶的演讲总结为三个字:看、想、练。看多云的优点,想一想,期待一想,练一练大三角帆。

首先,cloudy的优势包括以下几点:一是跨云级别的高可用性,实现了客户端重试的多云容灾机制。这种优势体现在,当一个云不可用时,可以通过另一个云提供服务;二是避免被厂商锁定,迁移成本几乎为零,选择更主动;三是避免资源短缺。大型活动可以申请多个云平台的资源;第四,选择更多的区域,可选的区域是所有云的合并。

二是思考和期待,包括三个方面。首先是多云天气出台前后的思考。引入多云天气之前的问题包括配置漂移,即每次操作引起的增量会成为下一次操作的变量,最终演变成千机。其次,发布的稳定性取决于测试用例的质量和覆盖率,版本变化会导致测试用例不可信。最后是标准和灵活,希望从管理角度实现标准化,从业务角度实现定制化;引入云化后又有新的痛点:一是云分散,同一业务不同云厂商的资源要登录多个控制台才能操作。第二,部署成本上升,每增加一个云,发布工作量就会翻倍。第三,学习成本上升。不同的云厂商对云的理解和设计略有不同,每个云平台都需要掌握。

叶表示,有了以上六大痛点,期望的能力包括以下九个方面:一是云的透明性,二是对主流公有云的支持,三是不可变的基础设施,四是易操作,五是自动流转,六是与主流运维工具对接,七是智能判断灰度结果,八是丰富的发布策略,九是优秀的扩展能力。

抱着这个目标,芒果TV研究了很多工具,最终选择了基于spinnaker的多云连续投放平台。那么一个新的问题产生了:怎么练?

叶陶晶介绍,Spinnaker首先是一个多云机制,多云机制要体现在两个方面:一是接入云端,如何连接云端这个平台;二是统一视角,从业务角度看资源,而不是云平台。

云平台接入只是一个过程。因为是国外的产品,所以很好的支持亚马逊云、微软云、谷歌云。叶说,“2018年我拿到的时候,国内其他公司都没有。我们联系了生产它的阿里和腾讯,然后接入了华为云。芒果TV自己开发Istio来完善Spinnaker的容器云,在合作的过程中也给了阿里和腾讯一些反馈。比如阿里云弹性扩展组期望值的设定,腾讯云将带宽限制回归LB,我们在整个过程中互相学习,互相进步。”

在统一视角方面,Spinnaker是如何通过统一的视角看到每个云上的资源的?叶介绍,Spinnaker要求资源按照三段命名:${App}-${Stack}-${Detail},云平台中所有带有相同${App}前缀的资源划分为垂直管理。“在这个过程中,我看到VOD业务有阿里云和腾讯云的两组数据,其中阿里云在做红黑全迭代,红色表示负载均衡看起来不健康,绿色表示给流量,只做红黑。机器不会发布上一个版本,一旦出现问题可以快速回滚。”

看着一成不变的基础设施,叶认为这并不是什么新概念。当它从容器中引入时,这个概念就已经被引入了。Spinnaker充分展示了云资源按需使用的魅力,将发布简化为两个动作:创建和销毁,将图像作为可交付物。不可变模式的核心是图像,RD的交付物是软件包。基于软件版本自动更新映像是一个新的挑战。叶介绍:“芒果TV分为三种镜像:公共基础镜像、业务基础镜像和交付镜像。首先,公共基础镜像是以官方镜像为基础的,芒果TV统一了对镜像的要求,比如操作系统版本、监控、编队等。,不允许更改。其次,它是商业的基本镜子。根据不同的业务特点和语言环境准备不同的语言环境,可以根据自己的端口号配置不同的业务探索点。最后,整个交付包的制造是基于业务基础的形象来开机器的。我们需要把最新软件包的版本拉出来打进去,这也是准可交付的。因为没有经过测试,我们有自动化流水线发布到预发布环境,各种安全静态代码分析就是交付镜像。”

Spinnaker中TV支持的部署策略包括四点:添加、替换、红黑、滚动。New只是新版本服务的增量部署,用于灰度发布和金丝雀分析。它是在新版本的服务部署后,替换掉所有的旧服务,在预发布环境下使用。黑色是在部署新版本的服务后保留的旧服务,但不再接收流量。用于整卷出版。是新版本和旧服务按照N+1原则滚动发布,用于容器云。

有了上面的镜像,芒果TV的三条流水线逐渐成型。这三个管道包括预释放管道、灰度释放管道和完全释放管道。除了灰度释放需要手动确认的版本外,以上流水线均自动触发执行。

那么金丝雀分析如何在一次产品迭代后智能判断新版本是否适用呢?叶介绍:“左边是生产负载平衡和生产集群,右边是预发布负载平衡和预发布集群。基于两个新创建的弹性基线集群和金丝雀集群,我们直接访问生产以共享相同的流量。这时候我们通过监控系统收集指标,包括CPU、内存、网络、业务日志等指标,然后做金丝雀分析。这是其中一个指标收集的结果,它会产生一个金丝雀分析报告,并给它打分。我们可以无限扩大指数,同时,我们可以给它一个权重。我的总分是100分,不同的业务指标权重会有所不同。如果总分超过一个阈值,我们认为它是安全的。如果低于某个阈值,则需要暂停。中间分数段需要根据金丝雀报告人工判断。”

金丝雀分析有什么好处?第一,完全基于生产环境,真实可靠。二是与业务和应用的版本解耦,独立于测试用例,分析维度可以自由扩展。第三,Spinnaker的权重评分机制可以实现自动化。第四,隐性收获,分析维度的丰富可以反向改善监控体系。因此,Spinnaker贯穿了CICD,RD和测试运维在芒果TV,包括核心地位。

回头看看六大痛点有没有解决方案,答案肯定是有的。叶陶晶解释道:“通过统一的视角和统一的UI,解决了云资源的分散性;部署成本上升,只要能自动化,就能解决多个云的并行问题;学习成本的上升,因为Spinnaker是一个统一的操作平台,兼容现有的操作工具,不需要学习新的东西。做大三角帆的人一定要学会集成,但是用大三角帆的人不需要学;配置漂移也解决了。基于镜像发布系统,没有机会改变。我只需要创造和毁灭它;在版本稳定性方面,稳定性是对版本质量的控制。首先有三条流水线,先预发布。流水线已经是一个缓慢释放的过程,中间还有金丝雀基于真实流量的判断,所以我觉得没问题;最后是灵活规范,是统一形象的一部分,同时对对方开放。三条装配线可以根据各自业务的不同需求进行编辑。”

在演讲的最后,叶表示,从2018年到今天,芒果TV的大三角帆之路充满了实验、学习、实践和蜕变。发布任务增加了10倍,但运维人员没有增加,实现了一定的RD自治。后续将继续丰富金丝雀分析和混沌工程用例,最终实现“谁建设,谁运营”。

 
友情链接
鄂ICP备19019357号-22