加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 运营中心 > 产品 > 正文

腾讯科技(深圳)有限公司运营开发leader王镇:基础网络DevOps的最佳实践

发布时间:2020-09-18 12:04:52 所属栏目:产品 来源:网络整理
导读:副标题#e# 中国IDC圈讯,开放数据中心峰会(ODCC2020)在北京召开,峰会围绕数据中心新基建为主题,有数据中心领域及相关行业的众多专家与会。在9月16日智能监控与管理分论坛上,腾讯科技(深圳)有限公司运营开发leader王镇做了以《基础网络DevOps的最佳实
副标题[/!--empirenews.page--]

中国IDC圈讯,开放数据中心峰会(ODCC2020)在北京召开,峰会围绕数据中心新基建为主题,有数据中心领域及相关行业的众多专家与会。在9月16日智能监控与管理分论坛上,腾讯科技(深圳)有限公司运营开发leader王镇做了以《基础网络DevOps的最佳实践》为主题的精彩演讲。

王镇

我是来自腾讯的王镇,给大家的主题是《基础网络DevOps的最佳实践》,我讲的内容跟前两位同事分享的有点不一样。我们对于基础架构的运营系统一般都会分南向和北向两块,前面两位讲的更多是南向跟设备相关的这些内容,我下面的分享主要是北向跟上层业务,基础架构是干什么的?上面跑了很多应用也是运营系统需要对接起来的,今天主要跟大家分享基础网络的运营系统怎么去做DevOps。

一、首先有一个问题:为何需要DevOps?

DevOps并不是一个很新的概念,腾讯基础架构运营系统发展过程经历了刚开始时候的人工、脚本、工具化、自动化,现在逐步迈入到数据化阶段,在DevOps发展过程中根据自身的运营经验和实践去决定了DevOps可能是解决当前突出矛盾的一个比较好的方式。

总结过去有哪些比较突出的矛盾?

1、运营需求总是层出不穷,但每个运营需求提出之后,后面专业的开发总是要花比较多时间,因为开发过程有自己固有的规律,不可能今天提这个需求,明天就把开发功能放到线上去了,它后面要经过需求分析、代码编写、测试、持续维护的过程,过程时间非常长,肯定是没法去满足层出不穷的上层需求。

2、运营和开发是两个团队,他们之间的专业背景、知识以及所面临的问题是不一样的,有这样的矛盾存在。

3、腾讯过去几年在云业务或云网络业务已经快速发展,我们除了内部海量用户外,还有些腾讯云公有云业务,2年开始对外开放,私有云客户逐步加入进来,我们对应基础架构运营系统服务的对象逐步丰富了,需要运营系统具备二次开发能力,这样DevOps的需求也慢慢展现出来了。

二、如何理解DevOps?

DevOps并不是一个新技术,这是国内一个前辈根据过去多年经验所总结出来的一个DevOps标准分级模型,有1-5级,通过了国际化标准认证。DevOps没有带来新技术,所有技术都可以在DevOps开发模式里应用出来,主要目的是为了提升应用开发效率,解决上页所提到的三个主要矛盾,解决的方式是以人为本,解决运营和开发供需的矛盾,从人性出发去解决深层次挑战。

这是DevOps应用开发的现状,是DevOps开发现有的成果,分两方面:第一,DevOps的应用,是去运营服务器、运营网络、运营基础数据中心的这些运维人员自己在DevOps平台上所开发的上层应用。第二,基础应用,原有专业开发基于同一套平台上做的应用开发。这样传统的运营跟开发都基于同一套DevOps平台互相做融合,践行了一句话——“吃自己的狗粮”,怎么理解这句话?它有两方面含义:对于运营同学来说,把自己的需求落实到DevOps平台里,DevOps平台出来上层有什么问题,他首先会从自身层面出发会反思这些需求或者业务逻辑是不是有问题,对专业开发人员会看同一个DevOps平台开发应用出了问题之后,是不是哪些功能没有完善、哪些地方出了BUG,双方会从自身角度去完善已知问题,双方关系会越来越融洽,说明了怎样以人为本。

DevOps最关键的前提是要把我们的运营事务流程化,过去去腾讯内部工具化、自动化、数据化绕不开的一个前提是把所有的运营事务流程化,我们把过去腾讯那么多年的经验做了总结,整理成这样5个级别,我们现在大概处在LEVEL3级别,LEVEL3的重要参考依据是:1、体系化,所有运营事务都有对应流程跟它一一匹配,做到“无流程不运营”状态,杜绝很多线下操作的环节,如果大家对资产这块线下操作,现场更换硬盘或设备板块,如果没有线上流程对接,很可能换的这个板卡跟型号对接不起来,带来比较多的问题。

2、部分流程完成生命周期管理,为什么要讲生命周期?流程上线之后如果没有持续维护,久而久之,流程可用性和稳定性就得不到保证了。

3、完善OLA/SLA的管理,每个流程有自己的可执行时间,每个任务节点需要有预定完成时间,这里从数据化层面把流程做到可运维。

4、工具快速敏捷迭代,这涉及到二次开发能力,我们运营系统不单是服务内部,很有可能有非常多外部客户,特别是小型私有云客户也需要用到。右手边是展示了我们把运营事务集中,业务逻辑落地到流程图的方式展现出来,这是其中一个例子。

三、如何建设DevOps系统?

我们应用了一个DDD模式自上而下去设计DevOps平台基础模块,重点关注DDD领域层。建立DevOps平台,主要有四个大模块需要建立起来:

第一块,流程可编排。右手边有个流程图,运营人员根据自己日常运营需求把业务逻辑用流程图的方式编排出来,编排过程需要提供流程画布,让大家通过上层业务逻辑通过流程图展现出来。

第二块,每个流程图有很多任务节点,每个任务节点只是摆在那里而已,它的工作是什么呢?它底层有个任务管理、应用管理模块去实现这里面具体的任务节点。

第三块,数据运营。每个流程建立起来之后,怎么知道这个流程执行的效果如何?历史流程执行效率怎样?运营事务当前能力成熟度怎样?都需要在我们流程里提取数据做事后分析,意思是我们可以做个数据化的运营。这里面依赖重要一点,运营节点里面需要有非常细的打点信息,打点信息回来之后形成历史数据积累,后面做数据化运营工作就非常便利了。

第四块,异常管理。异常管理是做DevOps监控的,DevOps平台可以用来监控基础设施,但是DevOps平台本身也需要一个监控,我怎么知道这个平台当前运营的状态怎样、它的健康度有没有受损?所以这里有个异常管理模块。

四、我们如何建设DevOps系统?

DevOps平台也分南向和北向,从南到北分三个层次:

第一层,面向设备命令模板。把很多设备的硬件建模、配置都做成一个模板的形式,这样就可以减少网络运营人员对于不同厂商设备需要去定制很不一样的命令参数,这些很不一样的命令参数都以模板形式封装起来了。

第二层,业务函数。

第三层,业务流程。业务函数和业务流程都是跟上层应用相关的,这里我们不是用模板形式把它封装起来,而是从软件开发角度用SDK方式把它包装起来。如果很多业务函数、业务流程如果具有是复用性的,都做成SDK的方式封装起来,并且通过标准化接口在SDK里暴露出来,而且这个SDK里具备服务发现的功能。

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读