随着云计算和容器技术的发展以及微服务架构的兴起,服务能够实现细粒度的部署,维护和伸缩。在使开发人员能快速开发的同时,这些技术也给系统和应用的运维带来了更大的挑战。DevOps理念也应运而生,强调研发和运维的流程及工具的自动化,最大程度地减少人工运维的工作量。

\\

在上周腾讯“云+未来”峰会的开发者专场上,来自腾讯云的几位开发者和大家分享了DevOps,数据库,微服务框架,边缘计算,机器学习等话题的实践,为大家带来了一场技术盛宴。在这里和大家一起分享腾讯云PaaS产品总监邹辉带来的Tencent Hub最佳实践,一窥腾讯云DevOps产品的设计理念和思考。

\\

为什么要做DevOps\u0026amp;如何做DevOps

\\

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

\\

\\

所以DevOps的实质是:我们需要通过DevOps来保证质量,同时,平衡开发的效率。本质上来说DevOps就是一个流程化和工具化的过程,通过工具来固化流程,通过流程来保证运维发布和研发质量,同时降低人工进行操作时候的一些误操作引发的故障,也提高了整个研发的效率。所以基于这一点,如何去实现我们的DevOps,实际上非常清晰,因为DevOps就是一个流程规范制定和工具化的自动化过程。所以要做好DevOps,我觉得关键在于两步:

\\

  1. 把我们的流程梳理清楚,这些流程包括代码提交、发布测试,静态扫描等等。另外我们也需要把团队的关系梳理清楚,软件开发过程中有开发,有测试,有运维,还有一些管理者,需要哪些步骤,需要哪些人审核,在哪些步骤需要通知哪些人,都要梳理清楚。\\t
  2. 通过工具化把上面所梳理的流程实现自动化的过程。如何去选择合适的DevOps工具体系,把流程规范给自动化起来。\

\\

接下来就给大家分享腾讯云在DevOps工具体系这方面的实践。

\\

Tencent Hub

\\

腾讯云DevOps推出了一款叫Tencent Hub的管理平台,该平台为存储研发流程中的文件和代码以及创建DevOps工作流而打造。Tencent Hub是腾讯云第一款涵盖了DevOps整个体系的工具体系,主要分成三部分,覆盖代码的开发阶段,构建阶段,一直到代码的发布阶段。

\\

Tgait代码仓库

\\

在代码开发阶段,我们可以提供TAPD的开发平台,同时我们也推出了一个Tgait的代码仓库。基于这个构建组件,我们可以很方便地把整个DevOps流程给串起来,同时也提供了一个全面的仓库。在这个仓库里面,我们可以存储任何的代码,DevOps任何的存储,最终我们也会跟运行环境里面的一些服务打通,来支持各种发布,提供各种各样的查检。腾讯云在Tencent Hub整体的体系图如下。

\\

\\

Work Flow

\\

\\

在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同时也写好YAML文件,把完整的流程导入到Engine里面执行。这就是在Engine这一侧我们去做的一些设计和思考。

\\

\\

在Work Flow插件这一层,Engine可以通过API调动任务,Engine层可以执行指定的一个任务,实际上以容器镜像的方式定义和运行这个插件,这也是我们在Work Flow做的一个比较大的革新。为什么这样说?因为我们发现把容器引入到DevOps里面去做会带来很多的好处:首先DevOps流程里面会执行各种各样的任务,如果把这个任务通过容器化固化下来,通过容器镜像可以很方便地传播,这个时候大家看的可能不是跟Engine相关的插件,而是一个容器镜像。一旦把插件分装到容器里面之后,就可以根据大家的喜好和专业程度去开发容器。这就是我们在Work Flow插件这一块实现的机制。

\\

\\

另外,如果用户想要自定义自己的插件,完成一些功能,也只需要定义好简单的输入和输出即可。输入值可以从前面任何流程获取,制定本质的输出参数,输出参数也可以反馈回来,供后面的流程使用。用户也可以很简单地去遵守这个输入和输出的规范,开发自己的镜像插件。

\\

另外,我们也针对一些常见的语言库和流程提供一些通用的插件库,比如里面的代码检查、构建,这些镜像可以统统在这一层获取到。这就是我们在Work Flow这里面的一些设计理念。

\\

\\

Registry

\\

除了Work Flow之外,我们还构建了一个Registry。我们发现在Work Flow会产生很多中间产物,比如构建一个Zaar程序,或者发布一些配置文件,这些配置文件发布在哪些地方,包括发布机制,它存在的地方或者最终镜像存在的地方,这些环节中产生的中间产物往往会存储到不同的地方,使用不同的协议去获取。基于这一点,我们开发了一个叫Registry的通用仓库,可以实现通用存储,使用这个通用存储可以很方便的把DevOps里面中间产物给管理起来。

\\

另外Registry也提供了多层管理机制,从组织到用户团队到个人,通过权限的方式去统计,也提供各种各样的日记,静态扫描的功能,让用户能够更方便地使用这些Registry功能。以上就是Registry方面的设计和考量。

\\

\\

\\

最后

\\

除此之外,其实腾讯云还会把内部的一些研发实践,通过服务的方式分装起来给开发者,让开发者不光可以使用Work Flow,使用既定插件,同时还可以使用腾讯内部一些比较好的经验,更好的去支撑他们的DevOps,比如自动化运维、代码托管、自动化测试等环节。

腾讯云DevOps技术揭秘:新时代运维重器Tencent Hub最佳实践相关推荐

  1. 《DevOps实战:VMware管理员运维方法、工具及最佳实践》——2.3 配置管理

    本节书摘来自华章计算机<DevOps实战:VMware管理员运维方法.工具及最佳实践>一书中的第2章,第2.3节,作者:小特雷弗 A. 罗伯茨(Trevor A. Roberts Jr.) ...

  2. 腾讯云AI应用产品总监王磊:AI 在传统产业的最佳实践

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 背景:5月23-24日,以"焕启"为主题的腾讯"云+未来"峰会在广州召开,广东省各级政府机构领导.海 ...

  3. 腾讯云AI应用产品总监王磊:AI 在传统产业的最佳实践 1

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 背景:5月23-24日,以"焕启"为主题的腾讯"云+未来"峰会在广州召开,广东省各级政府机构领导.海 ...

  4. 腾讯云Elasticsearch集群多可用区容灾实现原理及最佳实践

    导语 | 为了进一步满足腾讯云 Elasticsearch 客户对服务稳定性.集群高可用性等容灾能力的要求.腾讯云 ES 产品提供了跨可用区部署的解决方案,本文将为大家介绍实现原理与实践案例.文章作者 ...

  5. 腾讯云DevOps流水线的应用与实践

    编者按:2017年8月23日,腾讯"云+未来峰会"在北京召开,此次大会特别设立了腾讯云开发者分论坛,在此论坛上,腾讯织云负责人梁定安做了<腾讯DevOps流水线的应用实践&g ...

  6. 小游戏专场:腾讯云Game-Tech技术沙龙上海站顺利落下帷幕

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由腾讯游戏云发表于云+社区专栏 9月14日腾讯云GAME-TECH技术沙龙小游戏专场在上海顺利举办,此次技术沙龙由腾讯云的资深专家,以及 ...

  7. 如何计算虚拟化vcpu_首次公开:腾讯云虚拟化技术原理及可用性提升实践

    作为云的IaaS大底层,CVM的机型矩阵已经全面覆盖电商.视频.游戏.金融.基因测序.智能语音.汽车.医疗.物联网等多种业务场景,开启了全行业的计算提速.Hypervisor作为云计算的基石,对虚拟机 ...

  8. 腾讯云 Game-Tech 技术沙龙小游戏专场“空降”长沙

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由腾讯游戏云发表于云+社区专栏 小游戏作为今年快速成长的新生态,在开放进入市场之后持续成为行业热点,获得了游戏开发商的高度关注与参与.在 ...

  9. 【​观察】“数字广东”背后的力量 腾讯云创新政务服务新模式

    申耀的科技观察 读懂科技,赢取未来! "数字广东"正在成为全国最领先的省级数字政府样板,也成为了"数字中国"建设领域中的新标杆. 数据显示,2017数字政务指数 ...

最新文章

  1. java中形参可变的方法
  2. ZooKeeper基础学习
  3. oss导出数据为空时怎么处理_sql数据库导出空库的搜索结果-阿里云开发者社区...
  4. linux 添加本地源,linux 添加本地yum源
  5. 第四节 字符串属于值类型
  6. app传输数据到php,安卓app客户端和使用php的服务器端数据交互
  7. 自己试着在阿里云布了个服务器
  8. PHP生成二维码与识别二维码
  9. 智慧城市的投资运营与评估
  10. 20条常用微信沟通技巧,微信聊天必备
  11. 基于高德api的地区全类poi爬取
  12. 6D Pose Estimation各方法对应的经典论文
  13. Excel画横坐标不均分的图表
  14. 最后一批90后开始养生了,中医科普短视频会火吗?
  15. 数据库学习之num1
  16. 分立式数码管循环显示数字0到9.
  17. SPP: Spatial Pyramid Pooling
  18. 标注工具——VGG Image Annotator (VIA)
  19. python安装talib
  20. 交互设计的N大原理(持续补充中……)

热门文章

  1. java方法和 IDEA Debug调试
  2. 华菱重卡仪表指示说明_新一代创虎重卡登场!LNG车型将配玉柴燃气发动机
  3. BindingException: Parameter 'XXX' not found. Available parameters are [collection, list]
  4. git pull 报错:Untracked Fles Preventing Merge
  5. linux服务器内存、根目录使用率、某进程的监控告警脚本
  6. 初学Vue.js,从头来过~
  7. Android官方命令深入分析之Hierarchy Viewer
  8. (ZT)VC++的链接错误LNK2001
  9. 4.Linux的目录结构
  10. war部署到tomcat