写点什么

亿级广告交易平台的自动化部署实践之路

  • 2014-08-18
  • 本文字数:2355 字

    阅读完需:约 8 分钟

雅虎广告交易平台是一个日访问量上亿级别的广告系统,运行在雅虎全球多个数据中心的一万多台服务器之上。在这样的规模下,手动进行部署维护已经变成了一项不可能的任务。一年多前,该平台的系统工程师们开始推动这套平台的自动化运维实现,并成功将原本需要一个月的部署周期缩短至一天。

本文基于 InfoQ 中文站在 Velocity China 2014 大会上对雅虎北京全球研发中心高级系统运维工程师黄俊意的采访整理而成,主要介绍他们在雅虎广告交易平台上推动自动化部署的经验心得。

受访嘉宾简介

黄俊意,雅虎北京全球研发中心高级系统运维工程师,毕业于西安电子科技大学,硕士,7 年多基于 Linux 的大型 Web 互联网应用系统运维经验,曾就职阿里巴巴中国应用运维团队,现供职雅虎北京全球研发中心,高级系统运维工程师,负责占雅虎收入三分之一的雅虎全球搜索广告产品的系统运维,专注于持续部署交付,监控和故障管理的自动化。

团队与服务概述

雅虎北京全球研发中心的 Service Engineer 大团队有 20 多人,主要对移动、云计算、广告这三个方向提供支持。广告这个方向有多条产品线,如搜索广告、图片广告、视频广告等,广告交易平台是其中的一条产品线。

雅虎广告交易平台服务全球市场,维护团队分别在中国和美国,中国北京团队这边目前有 2 位运维工程师负责该平台维护部署的工作。运维团队与产品、研发、测试团队紧密配合,对产品交付部署和线上服务的稳定性负责。

团队的目标主要有两个方向:稳定性方面,保障线上 4 个 9 的可用性,降低级别为 S0 的故障数量,整体故障时间比之前一个季度降低 20%;交付方面,主要是能够按时交付在产品路线图规划上面的发布计划。

为什么要做自动化部署

自动化部署作为一个项目启动于一年前,由运维团队发起。当时的情况是,研发团队的敏捷开发实践已经相当成熟,每两周做一次 sprint,每一个 sprint 都会发布几个 release。但当时每一次部署的实施周期在一个星期,因为服务器有上万台,部署之前需要详细的计划、审批,每天只能做 20% 的量。当时平均每次发布前,产品设计做一周,研发一周,测试一周,部署一周,一次发布就需要一个月的时间,导致新的 release 都要排期,已经不能满足产品的需求,运维这边压力很大。

所以这是我们业务上的直接需求。另一方面,自动化运维也已经是行业的大趋势,公司高层也看到了这个趋势。所以我们提出要实现自动化部署,研发非常支持,测试和产品也有共识,公司也认可,就启动了这个项目。

项目实现的流程

在雅虎,当成立一个项目之后,会有专门的项目经理来跟进管理这个项目,包括制定时间计划、制定目标、推动项目、检查实施情况、写报告等工作,这样运维团队可以专注在实现的工作上。

按照运维团队最初的设定,这个项目需要达到的效果就是让部署变得很简单:指定好目标部署环境和要部署的版本,点一下鼠标就能自动完成部署。

当时最大的难点在于两个地方:

  1. 不同组件的部署方式不统一
  2. 跟周边系统的集成很多

要解决这两个问题,需要争取研发、测试、产品部门的支持。整个过程不是一下子就能做出来的,需要长期的开发、实验、验证,逐步的实现。自动化是一整套流程,研发有 CI 自动化,测试有测试自动化,运维有部署自动化,上下游之间有依赖,都需要打通。这包括:

  • 提交编译
  • 打包安装
  • 单元测试
  • 性能测试
  • 部署更新
  • 检查反馈

要明确的一点是,自动化并不是用了“自动化工具”就行:自动化的核心目的在于让本来让人做的事情变成让程序做,“做的事情”是不变的,但工具并不知道我们做的事情是什么,需要我们去告诉它。比如 Jenkins,它能做的事情无非是你给它设定一些触发条件,让它在某些情况下去做某些事情(如下载、更新、检查)。它只是一个集成、交付的管理工具,本身是死的,只有我们将我们的逻辑输入到这个系统里面,它才能够为我们所用。

首先,为了让每个组件的部署能够统一在一个框架之下,我们需要跟每一个组件的研发沟通,让他们按照我们的规则提供接口(即 RESTful API)。后面做新功能的时候最好是在产品设计的时候就跟产品人员做好沟通,在功能设计的时候就将接口放进去。其实部署在所有服务器上都是一个流程:下载包;服务器从当前服务下线;安装更新;检查更新;通过检查后放回到线上。所以如果新模块一开始就遵循我们的接口,那它只要简单改改配置注册一下,很容易就可以进入这套体系。

然后是包管理机制的统一。在自动化部署实施之前,每个模块自己打一个包,包管理机制各自不同。比如你用 yum,有的包可能会需要去跨网获取依赖,依赖的包可能还有依赖。你在单机上用 yum 没问题,但是一万台呢?中间如果有依赖获取失败的情况,你连服务器处于什么版本、什么状态都不知道,这样就没法儿维护了。所以在自动化部署的过程当中,我们将所有模块的更新包和它们所有的依赖都压成一个包,上万台服务器都获取这一个包,就大大简化了。

跟周边系统的集成也是一点一点做的。比如工单系统,部署一个版本要能够自动新建一个工单,部署完成后自动发送通知给后面要检查的人,检查的人需要能看到部署是什么时候开始的,现在做到了第几步,处于什么状态等。还是那句话,自动化部署要能够把原有的流程重现,而不是说做了自动化所以流程就不同了。

效果

目前我们的部署频率平均在一周 10 次。每周五我们做一个最新版本,上一个 1% 的 bucket,周末观察两日;周一升级到 5% 的 bucket,同时再上几个新的版本到不同的 1% bucket;周二再上几个 bucket,然后选择一个稳定版本,到周三全部推送。

所以以前一个月部署一次 release,现在可以做到一个月 40 多次,每次部署 5 小时内可以完成,需要的运维也从 6 人减少到 2 人。我认为现在基本上实现了我们去年想要达到的目标。未来的话,我们现在正在研究类似 Docker 这样的技术,看看如何用虚拟化的方式实现大规模的部署,这样一套系统的监控如何去做,这会是我们下一阶段的一个工作重点。

2014-08-18 00:232915

评论

发布
暂无评论
发现更多内容

半导体erp系统和传统erp系统的区别

低代码小观

芯片 ERP 企业管理软件 半导体行业 ERP系统

基于ArkUI开发框架,图片马赛克处理的实现

HarmonyOS开发者

HarmonyOS

Serverless JOB | 传统任务新变革

Serverless Devs

Serverless SAE

能够发现零日漏洞模糊测试威力几何?

极狐GitLab

security DevSecOps

JavaScript闭包

源字节1号

软件开发 前端开发 后端开发

EasyRecovery15手机版数据恢复软件

茶色酒

EasyRecovery EasyRecovery15

与爱“童”行,皮皮携万千网友的语音信,用声音传递温暖

联营汇聚

GitHub 3.1K,业界首个流式语音合成系统开源!

百度开发者中心

Apache APISIX v2.14.1 探索性版本发布,进军更多领域

API7.ai 技术团队

服务注册与发现 API网关 Apache APISIX APISIX 网关

EasyRecovery2022苹果电脑数据恢复软件

茶色酒

EasyRecovery EasyRecovery15

【LeetCode】单词长度的最大乘积Java题解

Albert

LeetCode 5月月更

国内首个纯数字藏品元宇宙世界“ADAMeta”星城宇宙开启公测

最新动态

观测云&新数科技,共同赋能企业数字化系统

观测云

青山不遮,毕竟东流,集成Web3.0身份钱包MetaMask以太坊一键登录(Tornado6+Vue.js3)

刘悦的技术博客

vue.js tornado 区块链落地 区块链+ 认证授权

AI+工业互联网:百度AI专利讲述“中国智造”

百度开发者中心

集成底座项目实施规程

agileai

主数据管理 集成底座 企业服务总线 项目实施 统一身份

极客星球 | 数据治理三步走,助力企业节省百万+资金投入

MobTech袤博科技

数据治理 大数据架构 降本增效

陆奇:“黑客精神”过时了吗?答案是永远不会

图灵教育

nginx 程序员 服务器 计算机

视频直播技术干货:一文读懂主流视频直播系统的推拉流架构、传输协议等

JackJiang

实时音视频 直播技术 即时通讯IM

在进行行情 tick 数据存储时,哪种数据结构查找起来更快?

TDengine

数据库 tdengine 时序数据库

新思科技探究保护供应链安全需要考虑的六个因素

InfoQ_434670063458

软件 新思科技 软件供应链

昆仑芯科技加入龙蜥社区 ,赋能智慧开源,共筑AI芯生态

OpenAnolis小助手

芯片 龙蜥社区 CLA 昆仑芯科技

架构实战营 第 6 期 模块七课后作业

火钳刘明

#架构实战营 「架构实战营」

软件开发模型有哪些?

源字节1号

软件开发

七天玩转 PolarDB-X 开源训练营 完成任务更有AirPods大奖等你拿!

阿里云数据库开源

数据库 阿里云 开源 分布式 PolarDB-X

名师开团,倾力指导!CCF GitLink 编程夏令营来袭,亚马逊云科技开源专家携丰厚奖金,与你相约!

亚马逊云科技 (Amazon Web Services)

亚马逊云

万亿级别数据量的秒级实时分析,小红书OLAP引擎的进化和自研之路

小红书技术REDtech

大数据 实时数仓 OLAP Clickhouse

Flutter 也能玩 React 的 Redux?

岛上码农

flutter ios 安卓开发 跨平台应用 5月月更

全自动、可视化开发,成为敏捷转型落地关键词

飞算JavaAI开发助手

深入浅出Nginx实战与架构原理

C++后台开发

nginx 架构师 后端开发 Linux服务器开发 C++后台开发

OpenHarmony 3.1 Release版本关键特性解析——ArkUI框架又有哪些新增能力?

OpenHarmony开发者

Open Harmony

亿级广告交易平台的自动化部署实践之路_DevOps & 平台工程_sai_InfoQ精选文章