作者
卓晓光,腾讯广告高级开发工程师,负责新闻视频广告整体后台架构设计,有十余年高性能高可用海量后台服务开发和实践经验。目前正带领团队完成云原生技术栈的全面转型。
吴文祺,腾讯广告开发工程师,负责新闻视频广告流量变现相关后台开发工作,熟悉云原生架构在生产实践中的应用,拥有多年高性能高可用后台服务开发经验。目前正推动团队积极拥抱云原生。
陈宏钊,腾讯广告高级开发工程师,负责新闻视频广告流量变现相关后台开发工作,擅长架构优化升级,有丰富的海量后台服务实践经验。目前专注于流量场景化方向的广告系统探索。
一、引言
新闻视频广告团队主要负责腾讯新闻、腾讯视频、腾讯微视等媒体广告流量的广告变现提收工作,在媒体流量日益复杂,广告变现效率逐步提升的背景下,团队需要负责开发并维护的后台服务数量增长迅猛,服务维护成本与日俱增,传统的基于物理机的部署以及运维方案已经成为了制约团队人效进一步提高的瓶颈。
自2019年开始,公司鼓励各研发团队将服务迁移上云,并对服务进行云原生改造。为了响应公司的号召,在充分调研了服务上云的收益后,我们决定将团队维护的业务分批上云,提升后台服务的部署及运维效率。
二、业务上云“三步走”
图2-1 新闻视频广告后台整体架构图
新闻视频广告主要承接来自腾讯新闻、腾讯视频、片多多以及腾讯微视的广告流量接入并负责提升流量的变现效率,具体包括流量接入、形态优化、ecpm 优化等等。如上图所示,由于接入的业务需求复杂多样,而且彼此之间有显著差异,比如内容广告、激励广告等,导致新闻视频广告的后台服务具有如下特点:
- 请求量大,线上服务需要承接来自流量方的海量请求,服务性能及稳定性要求高;
- 服务数量众多,不同服务之间负载差异大,同一服务不同时间段负载变化大,人力运维成本高;
- 依赖的外部组件多,服务发布与运维的流程都与传统的物理机模式深度绑定,历史包袱重,平滑上云挑战大。
针对以上这些问题,我们在服务迁移上云的过程中,定制了”三步走“计划:
- 搭建上云依赖的基础组件并规范上云流程;
- 离线服务快速上云;
- 海量在线服务平滑上云;
三、第一步——搭建基础组件&规范上云流程
为了提高服务上云效率,方便各个服务负责人自行将服务迁移上云,我们首先搭建了云服务基础组件,并输出了服务上云的规范,主要包括容器化 CI/CD 和服务平滑上云两部分。
3.1 容器化 CI/CD 配置
想要上云,首先要考虑的问题就是如何将服务在云平台上部署。我们对物理机和云平台的部署情况做对比。
物理机 | 云平台 | |
---|---|---|
调度单位 | 服务器 | Pod |
单位数量 | 少 | 多 |
数量变化 | 相对固定,审批流程通过后才能增加或减小单位数量 | 弹性较大,动态缩扩容随负载随时变化 |
表3-1 物理机和云平台的部署情况对比
可以看到,物理机和云平台面临的情况完全不同。在物理机时代,我们采用织云部署服务,在织云平台手工配置服务器目标,管理二进制和部署,而转向云平台后,大量 Pod 动态变化组成的集群,与假定管理对象都是固定 ip 的服务器的织云并不契合。因此,我们转向采用蓝盾实现自动化集成与部署。
蓝盾将集成与发布流程整合并统一管理,代码合入即自动触发编译、回归、审核和发布流程,无需额外人工。为了兼容已有的物理机服务的发布流程,保证混合部署服务的版本一致,二进制包仍然使用织云管理,由蓝盾流水线编译产物后推送至织云。蓝盾流水线从织云拉取二进制后和运维提供的包含必要 agent 的基础镜像打包,将环境与二进制标准化,模版化,以镜像的方式作为最终产物发布,拉起即用,便于 pod 快速部署与扩容,减少了手工标准化服务器的工作量。最终,我们达成了如下目标:
- 自动化部署,节约人力;
- 兼容物理机发布流程,便于混合部署;
- 模版化环境,方便快速扩容。
图3-1 蓝盾实现 CI/CD 流水线
3.2 后台服务平滑上云
3.2.1 基础组件平滑上云
新闻视频广告后台服务依赖北极星、智研等基础组件提供负载均衡、指标上报等基础功能,然而在将这些基础组件迁移上云后,我们发现它们并不能如期提供能力,影响了服务正常运行。经过深入排查分析,我们发现,这些组件不能正常工作的原因主要包括以下2点:
- 容器的 ip 不属于 idc 网段,这些基础组件在容器中的 agent 与它们的 server 无法连通;
- 容器 ip 会随着容器的升级和迁移而发生变化,组件注册的 ip 频繁失效。