背景介绍

本期分享内容为《平台化 DevOps—云计算与云原生模式下 DevOps 的建设实践》。目前,DevOps 越来越成为大家当前建设的热点,伴随着基础设施的转型和应用框架的转型,更多的业务偏向云端和 C 端的场景,促进了 DevOps 的发展。在本次沙龙上,腾讯云 CODING DevOps 资深架构师余朋飞为大家介绍了在云计算和云原生两种模式下,如何推进 DevOps 的建设和实践。

企业 IT 架构演变历程

在 2007 年之前,企业还未产生 DevOps 的概念,大多还是基于物理机的模式。2012-2014 年是第一波上云的热潮,企业纷纷将传统的物理硬件转换到虚拟机的结构上。之后,容器的发展推动了应用的转型,微服务越来越被大家所提及,对应 DevOps 这个概念也越来越被大家所推崇。所以第二波上云是业务从底层迁移到云上。第三波是云原生,整个 IT 基础设施,无论是从硬件端、中间件以及所依赖的数据库等资源全部能够在云上提供服务。 基于这个模式,更应该被关注的是整个软件开发本身业务需求的梳理,到整个业务的运营,这个阶段从开发态,从运营态和服务调度的模式都有新的改善。

DevOps 一直致力于怎么更好地维护应用的生命周期。在 DevOps 1.0 时代,这个时代是将基础资源做标准化,更多的是针对应用架构采取单体或服务总线的架构,对应的模式还是以虚拟化为主。 然而在整个业务发展过程中,更应该面向的是 DevOps 2.0 服务管理,整个应用架构和基础设施的架构随之也会变化。接下来就具体看一看在这两种不同的管理模式下,整个 DevOps 的建设到底是什么样的方式去推动和落地它的。

云计算模式下的 DevOps

业务上云给大家带来了什么?我们需要解决哪些问题?以下总结了几方面目前业界比较关心的点。首先因为基础设施的爆炸式增长,导致环境配置管理和维护愈发困难,持续部署层面需要发布的节点越来越复杂;在业务推向虚拟化基础设施的时代下,业务架构变得更加复杂,对应部署成功率,相应的系统稳定性也会下降;另外由于底层云资源带来的便利,在流量冲击的情况下需要做好资源和应用的弹性;最后,随着业务对 IT 的诉求越来越频繁,需要更快速反馈整个业务的诉求。

因此, DevOps 的建设迫在眉睫,从需求到最终上线运营的全生命周期里需要进行全方位改进——比如需要更好更标准的需求管理工具,需要通过自动化手段快速管理对应的环境,能够通过自动化测试把质量建立起来,最后能够更好地处理在运营阶段的事故。在这个阶段,大家更聚焦的核心是自动化,怎么通过 DevOps 的手段来强化自动化流程。在自动化效果基础上伴随的是标准化和版本化,在自动化的同时也要做好相应的质量内建以及 DevOps 过程度量,因为只有将过程度量好之后才能评估 DevOps 建设的效果,质量内建也是保证 DevOps 建设过程中软件的质量能够得到很好的控制。

从这几个目标来看,核心指标包括生产效率、软件研发效率,生产控制中的产品质量,对应的成本节省。在软件研发过程中,通过可靠、可重复的流水线可以帮助我们更快速、更高效地生产 IT 软件或对应的服务。

CODING DevOps 流水线实践

下图为当前 CODING 面向客户所推的 DevOps 流水线实践。

基于 CODING 平台,从代码拉取开始,基于内置的代码静态扫描模块来保证代码静态检查,包含代码规范、缺陷、重复率等不同的维度,另外,云端的构建环境能够保证各种不同的构建编译,结合基础设施的管理能够将自动化部署到对应的测试环境,帮助在整个流水线过程中做到测试质量管理,让质量在整个流水线过程中有比较好的保障。最后,单一的制品来源能够保证独立存储制品。到了生产阶段,我们更多关注基于业务运营的过程怎么做灰度和 A/B Test 的部署模式。

研发规范

在建立流水线时,需要遵循一系列的研发规范。

流水线建设过程中需要将这些规范囊括起来,流水线并不只是打包工具,不是通过流水线将代码构建成制品就结束了,而是能够在流水线过程中标准化整个研发过程。

了解了这些规范,实际应该怎么去落地?在建设 DevOps 的过程中常常遇到许多令人痛苦的问题。比如,针对金融行业大量已有系统,研发管理模式不尽相同,规范过多该如何管理?新老系统和业务如何兼容?随着时间增长、流程紧急、业务压力增加,如何保证团队的热忱和规范的持久运转?规范需要对应的人员去支撑,工作场景往往相当复杂,如何做好规范的标准化工作?CODING 基于之前的经验,针对这些痛点研发了一款研发规范产品 TCMS,定义不同的研发团队所对应的研发管理流程,能够约束对应的需求、代码、流水线管理,做标准化的约束来提升整个团队的协作效率。

研发管理包括几个部分。首先定义研发工作流,需要定义代码能拉出哪几个分支,允许哪些对应的合并策略,并且每次合并必须要有对应的规范和理由;第二,不同的合并规则意味着不同流水线的执行,在合开发分支的时候,开发人员做了一次本地提交可能只需要运转开发流水线,只需要对代码的质量和单元测试做一些约束即可,一旦涉及到 release 分支或 MR 的合并,这时候意味着功能合流了,基于合流规则来关联流水线,在流水线过程中去约束这个合流所对应的业务规则;第三,自动化工具辅助分支管理,如果定义了一个分支只能拉出来一周,一周之内必须合并进去的话也会做一些约束;第四,将对应的分支和需求管理关联起来,分支在合流的时候能够很清晰地从需求管理追溯到代码开发,从代码开发再追溯到整个业务合并,全生命周期管理是可控制和便于查阅的。

下图为 CODING 的标准化流水线:

云原生带来的改变

从 CODING 当前服务的客户,一块是移动端的业务,当前移动端 APP 已经越来越多的企业重视云原生,针对移动端也是能够基于云让开发速度得到更好的保障另一块是从金融行业,有些营销类业务更多适应云原生的场景。无论是营销类也好,还是 APP 类也好,核心挑战是 C 端用户过多的情况下业务会受到较大制约,比如收集更多的用户数据,更快速地对用户诉求得到反馈。单单通过流水线建设是无法达到这个效果的,流水线只能帮助我们更快地实现代码到构建到部署这一段的效率,但是之后怎么基于部署的应用来提升业务价值,就涉及到价值交付的过程。在当前的 DevOps 2.0 里面,运营过程和业务分析过程被纳入到 DevOps 体系里面去实现相应的价值交付。

那么怎么做价值交付?CODING 第一步会做自动化,第二步会做敏捷。至于为什么把敏捷放在 DevOps、自动化之后去建设,CODING 发现,在国内、尤其是大型机构和金融企业里面,敏捷没有推得像大家想象的那么好。自动化设备没有做到一定程度的时候是不足以支撑过于短平快的迭代的。所以 CODING 首先通过可靠可重复的流水线建立自动化的应用交付体系,帮助代码能够更快上线;然后基于敏捷的思维和实践对业务需求做拆分和管理,通过迭代做增量式开发。另外随着对迭代的要求越来越高, CODING 每天都会进行发布,敏捷已经不足以支撑业务需求的增长,因此 CODING 团队更加贴合互联网模式去做微服务改造,应用架构变化之后,应用更小更细,就能更快地实现迭代。最后,业务上线之后运营过程也可以纳入到对应的 DevOps 体系里面来。

下图为 CODING 在价值交付体系下的组织结构转型:

在价值交付体系里面,CODING 从组织、流程、能效和工具四个层面做梳理。基于对应的 DevOps 指标能够评估团队对应的 DevOps 能效如何,怎么基于这些指标进行提升。

通过 DevOps 的建设,企业能够通过容器化构建和开发环境管理,降低资源利用率和节省成本。CODING 提供了构建的资源池,大家在做开发的时候不需要自己管理服务器;另外,通过 CODING 流水线建设做到对应的持续交付的效果;基于 CODING 的实施也能更好地建设符合 DevOps 文化的度量体系;标准化制品管理能够管理制品模板、流转和进阶的过程;最后,基于研发规范的约束能够让整个团队在落地 DevOps 的时候更加无感,大家自觉遵守约束以提高开发标准化。这是 CODING 的愿景——让开发更简单。

Q & A

Q:落地 DevOps 必然会面临团队成熟度的问题,包括团队技术水平,敏捷意识和能力,如何保证标准化的产品在每个团队做更灵活的适配?

A:从 CODING 的角度来看,规范有两个不同的角色,规范的制定者和使用规范的人。只有对业务有深刻了解的人能够制定规范。一些经验不足的同学,只需要基于当前制定的规范使用这个产品就可以了。

Q:在小公司里面,如何在成本控制和 DevOps 的落地之间取得平衡?

A:DevOps 从某种程度上是降低成本的。CODING 能够提供虚拟化的空间资源池让开发资源得到更好的利用。推动 DevOps 敏捷也是为了让大家的工作效率协同模式得到更好的保障。随着对于应用质量的管控,将质量管理做到流水线过程中,能够让问题发现的环节更加前置,花更小的成本去修复问题。

点击观看课程录播并下载 PPT

「DevOps 转型与实践」沙龙回顾第二讲的更多相关文章

  1. 「DevOps 转型与实践」沙龙回顾第一讲

    9 月 19 日,CODING 和中国 DevOps 社区联合举办的深圳第九届 Meetup 在腾讯大厦 2 楼多功能圆满结束.本次沙龙以 「DevOps 转型与实践」 为主题,4 位来自互联网.金融 ...

  2. 108天南京银行完成不可能完成的新金融DevOps转型

    在2018云栖大会南京峰会企业研发云专场,由南京银行研发管理负责人吴攀带来了“云效助力新金融DevOps转型——南京银行实践之路”的主题分享.首先对南京银行的研发规模与成长做了介绍,对“鑫云+”的诞生 ...

  3. CODING DevOps 线下沙龙回顾一:DevOps 代码质量实战

    11 月 22 日,由 CODING 主办的 DevOps 技术沙龙系列「质量」专场在上海圆满结束.在活动现场,四位来自腾讯等知名企业的技术大咖们分享了研发质量与效能的实战经验,与观众们共同探讨如何采 ...

  4. 阿里巴巴 DevOps 转型后的运维平台建设

    原文:http://www.sohu.com/a/156724220_262549 本文转载自公众号「DevOps 时代」,高效运维社区致力于陪伴您的职业生涯,与您一起愉快的成长. 作者简介: 陈喻( ...

  5. GitHub 公布 2021 Top 10 博文「GitHub 热点速览」

    作者:HelloGitHub-小鱼干 2021 年在这周彻底同我们告别了,在本周的「News 快读」模块你可以看到过去一年 GitHub 的热门文章,其中有我们熟悉的可能让很多程序员"失业& ...

  6. 「白帽黑客成长记」Windows提权基本原理(下)

    上一篇文章我们介绍了信息收集方法和WMIC,今天我们将跟随作者深入学习Windows提权基本原理的内容,希望通过这两篇文章的讲解,大家能够真正掌握这个技能. 推荐阅读:「白帽黑客成长记」Windows ...

  7. 华为精益敏捷专家:DevOps转型中的那些坑

    陈军--原腾讯高级项目经理.华为精益敏捷专家 DevOps是现在非常流行的一个词,很多人都在提DevOps,在往那个方向去转,但转的时候坑特别多. 现实是很理想的,大家都觉得做了DevOps之后就会非 ...

  8. [转帖]「白帽黑客成长记」Windows提权基本原理(下)

    「白帽黑客成长记」Windows提权基本原理(下) https://www.cnblogs.com/ichunqiu/p/10968674.html 提权.. 之前还在想 为什么 我的 sqlserv ...

  9. 众安「尊享e生」果真牛的不可一世么?

    近日,具有互联网基因的.亏损大户(成立三年基本没盈利,今年二季度末亏损近4亿,你能指望它多厉害?).财产险公司—众安推出“尊享e生”中高端医疗保险(财险公司经营中高端医疗真的很厉害?真的是中高端医疗险 ...

随机推荐

  1. A+B in Hogwarts (20)(模拟)

    时间限制 1000 ms 内存限制 65536 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小) 题目描述 If you are a fan of Harry Potter ...

  2. Java反射(一)

    什么是反射? 在程序的运行过程中,可以动态的创建对象. 反射的基石是什么? 字节码对象是反射的基石.字节码对象:Java类文件通过javac进行编译后生成的xxx.class文件,此文件由jvm加载至 ...

  3. h5内嵌微信小程序,调用微信支付功能

    在小程序中不能使用之前在浏览器中配置的支付功能,只能调用小程序专属的api进行支付. 因为需要在现在实现的基础上,再添加在小程序中调用微信支付功能,所以我的思路是这样的 1.在点击支付按钮时,判断是不 ...

  4. TP6.0 一对一模型关联 belongsTo 相对关联(反向关联)

    1. 创建数据表 一对一反向关联使用率很高 附表关联主表称为反向关联,又称为相对关联(tp官方手册这样叫) -- 分类表 CREATE TABLE `category` ( `id` int(10) ...

  5. jenkins安装和邮件配置

    一.jenkins下载 Jenkins的下载地址是https://jenkins.io/download/,下载的时候可以选择各个版本的以及对应操作系统的版本,一般你下载的时候下载通用的.war文件即 ...

  6. 教务管理系统(node+express+mysql)

    模块拆分 现在将教务系统拆分成九个模块: 教务系统教师业务:师资管理.教学计划管理.排课管理 教务系统学生业务:考试管理.毕业生管理.学生综合测评 信息查询:自习室查询.课程表查询 考试系统:实现学生 ...

  7. do...while 循环

    语法 C 语言中 do...while 循环的语法: do { statement(s); }while( condition ); 请注意,条件表达式出现在循环的尾部,所以循环中的 statemen ...

  8. python中的算数运算符+、-、*、/、//、%、**

    例如a=5,b=2 +    两个对象相加                              a+b=7 -    两个对象相减                              a- ...

  9. 猜数字 python 3

    随机选取一个1-100的整数 通过5次机会猜整数 会提醒猜大或者猜小 当猜对或者已经猜过5次后结束游戏

  10. TDengine常见问题解答(FAQ)

    1. TDengine2.0之前的版本升级到2.0及以上的版本应该注意什么?☆☆☆ 2.0版本在之前版本的基础上,进行了完全的重构,配置文件和数据文件是不兼容的.在升级之前务必进行如下操作: 删除配置 ...