阅读更多

0顶
0踩

行业应用
引用
作者简介:李光,现任职于腾讯社交网络运营部/织云产品团队,负责运营平台规划与运维新产品开发工作,多年业务运维、运营规划经验。

一、概述
读完关于 DevOps 前世今生的《凤凰项目:一个运维的传奇故事》,书中传达了若干理念,其中一点也是老生常谈的IT的价值体现在帮助业务与用户的价值提升,当时看到这里的时候,想起团队进行过的一个挽救用户的项目。

IT价值交付链从对象层次上可分为公司、产品、用户,这三个对象是紧密不可分且相互影响的关系。社交网络事业群拥有众多海量规模的业务,在海量的运营压力下,服务器设备的数量也突破了 10w 大关,并有序的分布在全国不同的 IDC 中。

这些 IDC 有些投入运营的年代久远,已经不能较好支撑现在业务的发展了,我们经常遇见到的 IDC 的问题,如: IDC 机架不够用、IDC 出口带宽不足、机房规划老旧、硬件设施老化等问题。

一般迁移服务是有两种因素合力而成的:
  • 业务优化服务质量主动迁移
  • 业务因 IDC 的升级与裁撤从而被动迁移

在业务的实际迁移中,经常会遇见长尾业务迁移成本高、迁移难度大的挑战。

本文主要从三部分介绍了笔者所服务的手机 QQ 运维团队在一次业务被动迁移过程中所遇到的挑战,在面对挑战的时候团队是如何坚守“一切以用户价值为依归”的价值观。
  • 800W 用户即将停止服务;
  • 挑战与选择;
  • 乾坤大挪移;
二、800W用户即将停止服务
先给各位看官们唠叨一下整体的背景,在去年的时候我们要开始因 IDC 硬件设施老化需要被整体裁撤掉而带来的业务被动迁移,此次迁移机器数涉及 2K+,业务模块数量涉及 150+,其中手机 QQ 运维团队所负责的部分,无论是机器量还是业务量都是 TOP1,而且裁撤时间进度比较紧张,IDC 将最后会在运营一段时间后,就会断电断网

搞过大规模业务迁移的看官们都知道,这是一个费时、费力、费心,会产生大量的沟通、评估、实施成本的事情,并且在过程中还伴随着有损业务服务质量的风险。

PC互联网时代逐步的结束到全面进入移动互联网时代的过程中,也带给了运维团队很多全新的挑战与压力 ,如:
  • 早期 APP 版本的多样性,需要适配”百花齐放”的手机机型,不同架构的可维护性差异较大
  • 移动互联网网络环境更加复杂、就近接入的粒度需要更细
  • 对业务架构的容错、容灾、服务质量、用户调度的策略都有更高的要求
  • ……
手机 QQ 运维团队在此次的业务迁移过程中也面临了上述几点问题,待迁移的业务列表中,有手机 QQ 非智能机的业务。

在2004年—2009年智能机还没有普及流行与平台统一,那个时候用户所使用的非智能机大部分是 MTK、Symbian、Kjava 这三大平台,涉及不同的机型终端有几十种之多,不同机型上所运行的 QQ 版本也是各式各样。

非智能机上的 QQ 各版本之前都是由不同的异地开发团队开发完成,如果一定要说版本之间有共性的话,那就是都具备不可调度的特性,不可调度的特性,不可调度的特性(重要事情说三遍)。

如若支持调度,那么这800W用户,团队也只需小手一抖分钟内就可以调度到新的数据中心的服务集群上即可。

想了解手机 QQ 如何调度与登录流程的看官,可以参看 《【惊】腾讯:3亿人次的实战演习,如何做到丝般顺滑?》这篇文章,这里就不在赘述了。

也就是说这批不支持调度的 800W 用户,是没有办法做常规业务迁移,将会面临因 IDC 断电后停止服务的情景

三、挑战与选择
手机 QQ 用户的概要服务流程是, 用户通过客户端 Get 到的 VIP 接入我们的后台服务,后台服务返回请求结果于用户。

根据这个业务流程,首先要保障用户能正常的接入才能访问到我们后台的一系列服务。

1. 我们面临了那些关键挑战?
  • HardCode VIP
  • 在 2004 年—2009 年的非智能机时代众多的 QQ 版本中,有些版本因为平台框架与当时大的 2G 网络环境的限制只能将用于提供用户接入服务的 VIP HardCode 到版本中,且不同机型、运营商、厂商 HardCode 的 VIP 也不尽相同。同时支撑这批 VIP 的后台接入服务是和所部署IDC网络环境强耦合。非智能机版本的 QQ 是不支持动态下发与测速动态更新接入VIP列表的,我们同样也不能通过调度系统干预用户的接入地址。
  • 客户端版本停止迭代
  • MTK、Symbian、Kjava 这三大类客户端是 2004 年— 2009 年间是由不同的异地团队开发完成,至今已经有7年多没有版本迭代了。随着人员流动,对于这种长尾业务已经找不到当时主要负责开发的同学了。
  • 版本覆盖率
  • 假定我们不计人力与时间成本去重构三大类非智能机的众多 QQ 版本,但因为 APP 的升级行为依然是依赖用户主动发起的行为并不能透过厂商的渠道强制更新,所以新版本覆盖到全量 800W 用户也是一个极其漫长的时间。
  • 迫在眉睫
  • 业务迁移的最终结束时间点也都是既定好且不能更改,因为到期后 IDC 就会断电断网,停止提供基础服务。

    面对这些挑战,我们似乎陷入了一个僵局,既不能调度用户、也不能推送新版本,而且还要让原本负责用户接入服务的 20+VIP 能一直稳定的工作,否则 800W 用户就会停止服务。

2. 800W用户VS 大盘数据
800W 用户对于 QQ 所服务的海量用户中占比有多少呢?从两个运营指标来衡量。DAU(日活跃用户数量), 现在 QQ 的 DAU 是8.3亿,800W 占比有1%,日最大同时在线数量,QQ 大盘日同时在线2.3亿,而 800W 非智能机用户同时在线 175W,占比不到 1%


从上面两个数据来看,平均不到1%的占比基本是对大盘不会有影响。

3. 我们的选择
从挑战与数据来评估,其实是给运维团队带来个很大的难题 如何成功的解决这个难题?又或者放弃这 800W 用户?

客观说不是没有想过放弃这 800W 用户,因为这是对于团队成本最低甚至可以说是一劳永逸的做法,业界也有类似强行挂公告停止服务的先例: 尊敬的用户 因 XX 原因在 XX 年 XX 月即将停止对 XX 版本用户的服务。

再说,用户换置一台智能机的成本也很低,换置后还能享用到更好的服务质量!
引用
备注:非智能机版本的用户因为受限于机型硬件配置与2G网络的限制,客户端一般只提供消息类的基础服务

放弃 800W 用户的方案在初始讨论的时候就被否决,原因其实也很简单,这和团队一贯所坚持的价值观不符合:运维的价值在于运用技术方案保障服务的质量,让用户能获得优质体验。

运营过程中的每个难题、每次故障,都促使我们多想一点,多做一点,不断的深耕细作锻炼运维能力来服务用户。倘若就这样放弃这 800W 用户,不仅放弃了运维自我成长的机会,更会伤害了一直信赖 QQ 这个产品用户的感情。

既然已经决定了要挽救这 800W 用户,那我们该如何去做呢?

四、乾坤大挪移
1. 浮出水面
如前所述我们遇到的核心问题:
  • VIP 与待裁撤的 IDC 网络环境强耦合;
  • 客户端 HardCode VIP,且不支持云端更新接入 VIP;
问题的关键点就是用于用户接入的 VIP 要能持续提供服务,并且不能随 IDC 关闭而停止服务,且 VIP 是与 IDC 网络环境强耦合的,此时一个大胆的方案再被拿出来重新评估,为什么会说在被重新评估,是因为这套方案在初期就拿出来概要评估过,就是因为涉及到外部三大运营商与太多的不可控因素,团队认为是很难执行下去的。

这套方案是什么呢?是 IP(网络)平移, 概要介绍就是我们将待裁撤的 IDC 中,VIP 所依托的网络环境整体 1:1 的迁移到新的 IDC 中,也只有将网络环境全部迁移过去才能保证用于接入的 VIP 服务不会中断掉。夸张点说这个方案的整体执行难度可以借鉴下图表达。

这个方案有哪些可预见的关键难度呢?
  • 新建 IDC 和待关闭的 IDC 因年代差距较大,基础架构和网络规划差异非常之大,需要将VIP所在的 2个网段整体迁移到新 IDC。
  • 要分别于三大运营商沟通并极力争取运营商侧都同意配合测试与迁移。
  • 网络安全与负载均衡策略也均要平移到新 IDC。
内部牵扯较多的跨事业群部门联合协作。

2. 持续推进
概要方案确定后,我们就卷入不同部门的同学来评估细节与落地,并也积极与商务同学一起与运营商沟通寻求支持。经过多次沟通,所幸的是运营商侧愿意支持与配合我们做 IP(网络)平移。这个项目当中有大量的沟通协调工作。

获得运营商的支持后,整体项目也就进行的比较顺利了,我们依次又确定了具体方案关键节点
  • 在新 IDC 中部署全套非智能机的 VIP 后台接入服务,用于切换使用;
  • 确定了运营商切换方案与切换时间点;
  • 制定应急方案;
  • 给用户推送了相关信息,告知用户;
在某个月黑风高晚上的凌晨2点钟,开始了网络地址切换方案,切换前的心情是这样的

因为运营商此次切换是不能灰度的,只能一刀切的全量切换,这里面也牵扯大量的修改网络层面配置,如果切换失败,在切换到之前的环境费时费力不说,也可能引起其它问题。

整体的切换过程不是百分百有把握的,关键的操作都是在运营商处完成,并且这些操作对于腾讯的团队都是黑盒的。

幸运的是,当晚网络切换很顺利,VIP 平移后,用户自动重新登录与消息收发均成功,服务一切正常,三个月的努力成功了,800W用户在无停止服务的风险了!

这个项目成功的落地执行,挽救了800W 用户正常使用手Q服务。虽然运维团队顺利平安的度过了这次难关,但长尾业务的迁移的困难也成为运维不得不面对的难题。

为此,我们在运维平台的规划中,结合 DevOps 的思考且落地了解决该类问题的运维方案:
  • 有效的纳管运维对象,包括标准化的定义对象和操作对象。将日常运维操作涉及的资源对象通过配置系统记录起来,并且由行之有效的场景化工具管理好,以此做到每个运维操作都是可量化、可管理、可追溯,保障工作的高效和经验的传承。
  • 非功能性规范的重要性,历史问题导致了长尾业务迁移的痛,假如运维能够在业务开始之初就规范好业务的非功能管理规范,提出能被执行的运维标准化要求(如无 hardcode IP 等要求),有望极大的降低了历史问题的发生。
  • 规划标准操作流程,对重复度高、价值低、令人痛苦的工作应该及时工具化或自动化。
这正是织云平台所推崇的运维理念,织云提供标准化的运维操作流程,结合操作角色与业务权限管理,实现了无论谁发起变更都能获得同样的操作结果,为自动化操作打下坚实的基础。

五、总结
挽救 800W 用户这个项目与腾讯的业务形态密不可分,未必所有的运维都有遇到这种难题的机会,但是笔者相信有一点所有运维人都是共通的,那便是在面对困难时的态度。

而上文中保证了项目顺利完成的关键因素,就是腾讯运维坚持”一切以用户价值为依归”的决心和态度。
  • 大小: 83.8 KB
  • 大小: 84.9 KB
  • 大小: 111.5 KB
  • 大小: 44.1 KB
  • 大小: 46.8 KB
  • 大小: 46.8 KB
  • 大小: 350.7 KB
  • 大小: 312.4 KB
  • 大小: 135.5 KB
  • 大小: 122.3 KB
来自: 高效运维
0
0
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 运维的难题:800万用户救还是不救

    作者介绍:李光丨现任职于腾讯社交网络运营部/织云产品团队,负责...读完关于DevOps前世今生的《凤凰项目:一个运维的传奇故事》,书中传达了若干理念,其中一点也是老生常谈的IT的价值体现在帮助业务与用户的价值...

  • 惊心动魄的阿波罗登月:软件和程序员才是幕后的英雄

    就这样,阿姆斯特朗和计算机一道,操作月球模式驶离了这片巨石散落区。 下午 5:16 故事到这里就基本结束了,接下来是英雄的时刻。阿姆斯特朗驾驶月球模块飞越巨石场,并在燃料仅可维持几秒时成功完成飞行器着陆。 ...

  • 嬴彻科技完成新一轮1.2亿美元融资;第一医药与欧姆龙签订1100万元采购合作协议 | 美通企业日报...

    双方将基于领先的云产品和服务体系及灵活丰富的解决方案,发挥业务咨询、产品实施、运维以及满足客户需求的软件定制化服务等优势,助力客户实现业务创新与转型,为中国客户提供更优体验的一站式数字化服务。...

  • 《增长黑客》节选与笔记

    我是从网上下载的 pdf 版本,使用 Adobe Acrobat XI Pro软件打开,可鼠标框选文字,方便复制粘贴。 下载地址:https://pan.baidu.com/s/18l9_mK8RZYkM3Fk3PxAYQA 从哪里听说这本书 2019年9月,看了一期...

  • 90.精读《极客公园 2019》

    但微信的活跃用户已达到 10 亿意味着中国有能力使用互联网的人群都接入了互联网,也就意味着互联网流量红利消失了,直接导致了第三级火箭赚取的收益已经抵不上拉新流量的成本了,那这种利用资本滚雪球的商业模式也就...

  • 数据与城市正义:回龙观居民“身体被掏空”问题如何解决

    我的城市观高度地受到这样一位老太太的影响,这位老太太的名字叫简·雅各布斯,去年是她诞辰一百周年。她有一本很著名的书,叫作《美国大城市的死与生》。 在她的著作当中,她告诉我,一个好的城市,除了繁荣以外,...

  • 精读《极客公园 2019》

    1 引言 上周参加的 极客公园 2019 充满了科技前沿的思考,而且给 ...会选择「就这样吧」 而另一些人看到世界可能的样子, 会思考「为什么不能更好一些?」 多问问 WHY NOT,少说多做,不妥协,去改变,将会帮...

  • 游戏测试----------------第4章

    刚开始改编游戏的时候,小说本身的书迷只是最初的种子的用户,但随着小说、动漫的陆续出版,以及后续可能的影视改版上映,原本种子用户群体就会不断扩散,而且最终又会回流到游戏和小说上来,这和纯买一部电影、一个...

  • 5年前的今天,一个小小的部署错误,让美股最大交易商坠入深渊

    由于没办法断开系统,也没有相关情况的预案说明,魂飞魄散的开发者只能在每分钟交易 800 万股的生产环境里调试。 因为没有能在线上发现问题,所以回滚了代码。 情况反而恶化了。 原本只是第 8 台上的 Power ...

  • python面试整理

    l1 = ['b','c','d','c','a','a'] l2 = list(set(l1)) print(l2) # 用list类的sort方法: l1 = ['b','c','d','c','a','a'] l2 = list(set(l1)) l2.sort(key=l1.index) print(l2) # 也可以这样写: l1 = ['b','c','d','...

  • Linux有关硬盘知识

    6)门户架构网站都会用缓存技术,来让用户写入读取尽可能不接触磁盘,或者说把用户的请求尽可能往前推。 2.3 磁盘 2.3.1 固态硬盘与普通磁盘比较,拥有以下优点 固态磁盘优点 优点说明 备注 启动块 没有电机...

  • Linux实战教学笔记16:磁盘原理

    第十五节 磁盘原理 标签(空格分隔): Linux实战教学笔记 1,知识扩展 ...[root@chensiqi1 ~]# echo chen{01..03} #通配符创建用户 chen01 chen02 chen03 [root@chensiqi1 ~]# echo chen{0...

  • Linux实战教学笔记15:磁盘原理

    第十五节 磁盘原理 标签(空格分隔): Linux实战教学笔记 1,知识扩展 ... ...1.1 sed的高级用法 ...[root@chensiqi1 ~]# echo chen{01..03} #通配符创建用户 chen01 chen02 chen03 [root@chensiqi1 ~]# echo c...

  • python面试基础

    有这样一段代码,print c会输出什么,为什么? 68.交换两个变量的值? 69.map函数和reduce函数? 70.回调函数,如何通信的? 71.Python主要的内置数据类型都有哪些? print dir( ‘a ’) 的输出? 72.map(lambda x:xx...

  • Python面试题目

    67.有这样一段代码,print c会输出什么,为什么? 68.交换两个变量的值? 69.map函数和reduce函数? 70.回调函数,如何通信的? 71.Python主要的内置数据类型都有哪些? print dir( ‘a ’) 的输出? 72....

  • (转)惨烈:1个Bug,45分钟损失4亿多美元

    由于这个系统没有切断开关(也没有相关情况的文档说明),他们只能在每分钟交易 800 万股的线上环境中诊断问题起因。然而他们没能发现系统问题出在哪里,只能卸载已经部署到几台服务器上的新代码。换句话说,他们把...

  • 页游测试

    刚开始改编游戏的时候,小说本身的书迷只是最初的种子的用户,但随着小说、动漫的陆续出版,以及后续可能的影视改版上映,原本种子用户群体就会不断扩散,而且最终又会回流到游戏和小说上来,这和纯买一部电影、一个...

  • linux硬件之磁盘运行读写原理

    1,知识扩展非脚本方式的一条命令搞定批量创建...1.1 sed的高级用法[root@chensiqi1~]#echochen{01..03}#通配符创建用户chen01chen02chen03 [root@chensiqi1~]#echochen{01..03}|xargs-n1#xargs将输出变成单列chen01...

  • 群雄争锋:大同光伏领跑者项目全解析

    山地光伏的复杂倾角和后期难以运维的特点让多家投资企业选择了采用组串式逆变器和智能营维系统。 支架和桩 许多企业在大同项目中采用了平单轴和双轴的跟踪系统。而在桩的使用方面,各家意见不一致,有的企业坚持...

  • 新库上线 | CnOpenData中国工业企业绿色专利及引用被引用数据简介

    中国工业企业绿色专利及引用被引用数据简介   改革开放以来,中国工业化迅速发展,但高增长的背后却隐藏着资源浪费、环境恶化等矛盾,在这些环境问题愈发突出的背景下,我国绿色发展新理念开始深入工业发展,近年...

Global site tag (gtag.js) - Google Analytics