新时代运维重器 Tencent Hub 最佳实践——云+将来峰会开发者专场回顾

欢迎你们前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~微信

演讲者:邹辉 腾讯云 PaaS 产品总监架构

背景:5月23-24日,以“焕启”为主题的腾讯“云+将来”峰会在广州召开,广东省各级政府机构领导、海内外业内学术专家、行业大咖及技术大牛等在现场共议云计算与数字化产业创新发展。腾讯云 PaaS 产品总监邹辉在腾讯“云+将来”峰会的「开发者专场」作了主题为“新时代运维重器 Tencent Hub 最佳实践”的技术内容分享,针对DevOps产品的一些设计理念和思考。

如下内容整理自演讲:框架

由于工做关系,我会在平常工做中跟不少企业和运维人员打交道,协做他们作容器化和DevOps化的一些工做。在过程当中,咱们发现你们对于DevOps的价值,以及如何实现DevOps还有一些疑问。因此今天先简单介绍咱们为何要去作DevOps,以及怎么样去作DevOps。运维

从技术的角度来看,随着业务的发展,业务的场景愈来愈多,愈来愈复杂,咱们的系统架构也会愈来愈庞大,开发人员也会愈来愈多,同时对系统的稳定性要求也会愈来愈高。因此这些场景催生了咱们的技术架构的变革,由此会带来微服务架构设计理念的产生。可是微服务架构设计理念的产生可以解决这些问题,可是微服务也带来不少的问题,微服务致使咱们的系统模块愈来愈多,而这些模块运维管理复杂度也会增长,同时微服务会让咱们的开发速度获得增长,咱们的开发人员对咱们发布的效率会有一个明显的诉求。因此在运维人员对系统的质量把控,以及开发人员对系统效率的追求上有矛盾,这就是咱们DevOps须要解决的一些问题,由此催生了DevOps。微服务

因此DevOps实际上就是咱们须要经过DevOps来保证质量的同时,平衡开发的一个效率,本质上来讲DevOps实际上就是一个流程化和工具化的过程,经过工具来固化流程,经过流程来保证运维发布和研发质量,同时下降人工进行操做时候的一些误操做引起的故障,也提升了整个研发的效率。因此基于这一点,如何去实现咱们的DevOps,实际上很是清晰,由于DevOps就是一个流程规范制定和工具自动化的过程,因此做为DevOps,我以为关键在于两步:工具

一、把咱们的流程梳理清楚,把咱们的软件开发过程当中的一些步骤,咱们有有哪些步骤,好比咱们有代码提交、发布测试化,静态扫描,把咱们研发过程梳理清楚。咱们也须要把咱们团队的关系梳理清楚,这个软件开发过程当中有开发,有测试,有运维,还有一些管理者,须要哪些步骤须要哪些人审核,在哪些步骤须要通知哪些人。接下来咱们就须要进步第二步;测试

二、经过工具化把所梳理的流程实现自动化的过程。如何去选择一个合适的DevOps工具体系,把流程规范给自动化起来,接下来就是我今天分享的一个重点,给你们分享一下,咱们腾讯云在DevOps工具体系这方面的实践。优化

整个腾讯云在DevOps这里实际上推出了一款工具,叫Tencent Hub。Tencent Hub是第一款涵盖了DevOps整个体系的工具体系,主要分红三部分,从代码的开发阶段到代码的构建阶段,一直到代码的发布阶段。在代码开发阶段,咱们能够提供TAPD的开发平台,咱们也推出了一个Tgait的代码仓库,基于这个构建组件,咱们很方便的能够把整个DevOps流程给串起来,同时也提供了一个全面的仓库,在这个仓库里面,咱们能够存储任何的代码,DevOps任何的一个存储,最终咱们也会跟运行环境里面的一些服务打通,来支持各类发布,提供各类各样的查检。这就是整个腾讯云在tencent hub总体的一个体系图。ui

在CD环节,咱们有一个核心组件,叫Work Flow,你们能够简单理解为它就是一个工厂的流水线,经过这个流水线,咱们能够把DevOps环节开发、测试、发布、代码自动测试,这全部的环节很简单的串联起来。由于不一样的公司研发流程不同,而且随着业务的发展,流程可能也会在不断的变动,因此咱们再去设计Work Flow这款组件的时候,一个核心考量就是可否快速的去适应多样化的流程体系,以及快速的适应流程的变动。云计算

基于这一点,咱们在用Work Flow的时候,把Work Flow分红了三块,一个是Engine环境,一个是插件层,还有一个是Work Flow插件库,主要是管理调度功能,真正实现任务实行是在下面Work Flow的插件去实现这个功能。

在Work Flow Engine这一层咱们能够看到也是分红多个阶段,咱们将一个DevOps完整阶段拆分红多个不一样的,这些串行执行,也能够并行执行,咱们能够定义任何DevOps的流程,同时在执行过程当中,咱们也能够暂停这个stage,也能够启动这个stage,在完成之后,咱们也能够根据反馈结果来定义这个流程是该继续走下去,仍是该终止。当咱们把代码构建完成以后发布到自动化测试系统中作测试,发现某个自动化测试用力跑不过,这个时候咱们能够设计一个终止的环节,而后把这个系统结果到开发运维人员,或者测试人员。同时Work Flow Engine,同时也写好亚码文件,把完整的流程导入到Engine里面执行。这就是在Engine方面咱们的一些设计和思考。

在这一层,咱们可以作的一个调度方式,你们能够看这张图,第一种调度方式是Engine能够经过AP调动任务,Engine层能够执行指定的一个任务,实际上以容器绩效的方式定义和运行这个插件,也是咱们在Work Flow作的一个比较大的革新。为何这样说?由于咱们发现把容器引入到DevOps里面去作会带来不少的好处,首先个人DevOps流程里面会有执行各类各样的任务,若是把这个任务经过容器化固化下来,经过容器绩效咱们能够很方便的传播,这个时候你们看的可能不是跟Engine相关的插件,而就是一个容器绩效。一旦把插件分装到容器里面以后,咱们公司里面能够根据你们的喜爱和专业程度,根据本身的一个喜爱去开发容器。这就是咱们在Work Flow插件这一块实现的机制。

另外,若是说是用户想要自定义本身的插件,完成一些功能,也只是须要定义好简单的输入和输出便可,输入值能够从前面任何流程获取,制定本质的输出参数,输出参数也能够反馈回来,供后面的流程使用。用户也能够很简单的去遵照这个输入和输出的规范,开发本身的绩效插件。​

另外,除了Work Flow以外,刚才也提到了Registry,咱们发如今Work Flow会产生不少中间产物,好比说我构建一个Zaar程序,或者发布一些配置文件,这些配置文件发布在哪些地方,包括发布机制,它这个存在的地方或者最终绩效存在的地方等等,咱们发如今DevOps环节中会产生各类各样的中间产物,而这些中间产物每每会存储到不一样的地方,使用不一样的协议去获取。

咱们也针对一些常见的语言库和流程提供一些通用的插件库,好比说里面的代码检查、构建,这些绩效能够通通在这一层获取到。这就是咱们在Work Flow这里面的一些设计理念。

基于这一点,咱们开发了一个叫Registry的一个通用仓库,能够实现通用存储,使用这个通用存储能够很方便的把DevOps里面中间产物,各类中间产物给管理起来。

Registry也提供了多层管理机制,从组织到用户团队,到我的,这样一个分级管理机制,经过权限的方式去统计,也提供各类各样的日记,静态扫描的功能,让用户可以更方便的使用这些Registry功能。这就是Registry这边的一些设计。

除此以外,其实咱们还把腾讯内部的一些研发实践,经过服务的方式分装起来给开发者,让开发者不光可使用Work Flow,使用既定插件,同时还可使用腾讯内部一些比较好的经验,更好的去支撑他们的DevOps,好比咱们自动化运维、代码托管、自动化测试,以及咱们最近推出的一个OTFA这样的安卓平台,后面是咱们基于APP而开发的测试平台。

更多相关资料,请点击下方连接获取:
邹辉:新时代运维重器 Tencent Hub 最佳实践.pdf

问答
如何看待春运票务系统的架构优化?
相关阅读
张浩:日调度万亿次,微服务框架TSF大规模应用
DevOps的前世此生
如何用日志助推航旅支付智能运维升级

此文已由做者受权腾讯云+社区发布,原文连接:https://cloud.tencent.com/dev...

欢迎你们前往腾讯云+社区或关注云加社区微信公众号(QcloudCommunity),第一时间获取更多海量技术实践干货哦~

相关文章
相关标签/搜索