开篇词 | 从默默无闻到风靡全球,DevOps究竟有什么魔力?

你好,我是石雪峰,目前在京东商城负责工程效率体系建设和平台研发。从业十多年,我一直在软件行业深耕,尤其是从2015年接触DevOps至今,我一直在企业内部从事DevOps的落地实践工作,也曾帮助多家大型企业进行DevOps的相关能力评估,积累了很多实战经验。

在写开篇词的时候,我才意识到,DevOps从诞生至今已经整整十个年头了。十年之间,DevOps从默默无闻到风靡全球,很多人都在反思和总结DevOps究竟有什么魔力。

十年前的2009年,我在一家日本软件公司工作,长期被外派到日本尼康公司做项目。虽然当时敏捷已经兴起,但在日本,软件开发还是瀑布模式的天下。每当一个新项目来临时,我们经常不分白天黑夜地埋头苦干几个月,完全不敢想象,如果不能顺利交付会怎么样。

可是,怕什么就来什么。有一次,我负责开发一款客户端软件,给客户交付的方式是事先刻录一张光盘,把光盘带去现场,一边部署,一边演示。刚开始还挺顺利的,可是到了生产数据拉取的环节,系统竟然异常退出了。我至今都还记得那位项目负责人不满的表情。

调试后我发现,客户的生产环境使用的是Oracle数据库,而我们使用的是微软的Access数据库,数据访问协议不一致,数据自然会同步失败。

之后的三个月,我总共休息了两天,每天的节奏就是吃饭睡觉写程序,干到搭乘最后一班电车回家,唯一的娱乐活动就是在吃加班餐的时候吐槽老板。

所以,当时我就在想,一定会有一种更好的软件开发方式,在这种方式下,团队间沟通和协作的重要性一点也不亚于写代码、写文档、做测试之类的常规工作。但我不知道的是,远在大洋彼岸,DevOps的旅程才刚刚开始。

十年后,也就是2019年,以移动互联网、云计算、微服务、大数据、人工智能等为代表的技术日新月异,技术的迭代和演进都在以十倍速的方式向前发展,数字化转型浪潮正在席卷各行各业。“软件正在吞噬世界”“每一家企业终将成为软件企业”……行业领袖口中的这些预言,都在慢慢地变成现实。

如今,软件正在深刻地改变着我们的生活方式。前段时间,我去新疆旅行。在旅行途中,我发现即便是在沙漠边缘的小镇,微信支付也是畅通无阻。另外,用户喜新厌旧的成本已经低到可以忽略不计,企业之间的竞争已经升级为软件即服务的竞争。

所以,如何快速地持续交付高质量的软件,满足用户的多样化需求,并借此提升企业的利润和市场占有率,已经成为企业必须要面对的现实问题

可问题是,现在很多企业采用的软件开发方式,同十年前我所在的公司其实并没有什么区别,甚至由于组织分工的细化,内部沟通的消耗成本更加高昂。

你应该也遇到过这样的场景吧?两个部门为了数据打通,来回拉锯,各种方案和排期一天一个样,还美其名曰“PK”。原本特别简单的一件事情,非要扯上几天甚至几周才能有点眉目。每当这个时候,我都忍不住想说:“嘿,兄弟,我不是来抢你饭碗的,我只是想通过系统间的打通来简化一些工作而已,何必搞得这么复杂呢?”

所以你看,软件开发过程的改进,除了依赖于技术进步,还依赖于流程、理念、文化等全方位的改进,而这正是DevOps带给软件开发方式的一场革命

从2017年DevOpsDays大会北京站举办以来,DevOps在国内的发展正式驶向了快车道。作为从业者之一,我深刻地感受到DevOps的影响力与日剧增,不仅仅是互联网行业,就连传统的电信、金融,甚至是政府机构,也都把DevOps作为核心能力在快速建设。

现在已经很少有人会问DevOps有什么用、DevOps是否适合我之类的问题了,更多人开始关注要如何落地实践DevOps,并且让DevOps充分发挥它的价值,真正改善软件交付方式,提高IT工程师的幸福指数。

除此之外,越来越多的企业开始招聘DevOps方面的人才,对DevOps的技能和经验背景的要求越来越高,DevOps专家的岗位薪资甚至仅次于高级管理层,一跃成为IT行业的金字塔顶端。

我个人认为,DevOps已经成为了所有IT从业人员应知应会的必备技能。在这些技能中,技术和实践当然非常重要,但文化和理念更是尤为珍贵。如果每个从业者都认同DevOps的文化和理念,认同快速交付价值远胜于部门间的零和博弈,认同我们应该共享一个目标,并从自身做起持续改善上下游的关系,那么,怎么可能还会出现刚刚我提到的PK的例子呢?

也许你从各种渠道了解过DevOps的相关信息,但是因为市场上资料庞杂、个人精力有限等原因,还存在着以下几个困惑:

  • 如何梳理出一套清晰的DevOps理念和完整的知识体系?
  • 如何获得一线大厂的实践经验,让DevOps真正落地?
  • 如何获得一条渐进式的DevOps学习曲线,让自己在正确的方向上不断增值?

这些问题,正是多年来我一直在思考的,也希望在这个专栏中传递给你的核心内容。

学习DevOps的过程,对你来说将会是一场探索之旅。DevOps涉及软件开发的方方面面,因此,你将漫步于需求、开发、测试、运维的完整开发流程,途经管理实践和工程实践的领域,探寻方法论、最佳实践和工具平台的有机结合方式,让自己在全栈工程师和斜杠青年的道路上更进一步。

DevOps涉及的领域如此之广,想在一个专栏中学遍所有内容几乎是不可能的事情,所以我从实战的角度出发,臻选出最重要的内容,帮你梳理出一条DevOps的最佳学习路径。

本专栏主要由4个部分组成。

  • 第1部分是“基础知识篇”。我将详细介绍DevOps的定义、价值、实施与衡量,在最开始帮你建立起正确的DevOps体系认知。
  • 第2部分是“落地实践篇”。这一部分占据整个专栏一半的篇幅,是最核心的部分。我将带你通盘梳理DevOps的转型路径,你一定不要错过。
  • 第3部分是“平台工具篇”。它涵盖平台建设的3个阶段、产品研发和设计、不可忽视的开源工具等,帮你找到快速搭建平台的钥匙。
  • 第4部分是“转型案例篇”。我将分享1~2个实际案例,将前面提到的理论、落地实践和工具融入其中,让你能够融会贯通。

另外,我还设置了特别放送环节。在这个环节,我会跟你分享一些经典的学习资料、DevOps工程师的必备技能等内容,让你全方位、多层次地掌握DevOps。

其实,整个专栏的整理和写作,对我来说也是一场修行。毕竟,作为DevOps多年的实践者,我在用它解决问题的同时也发现了更多的问题,好奇心和对效率建设的执着追求让我乐此不疲。现在能够静下心来,把我多年的经验与反思整理出来跟你分享,也是一件非常有意义的事情。

在这个过程中,我也越发地感受到,DevOps的思想和文化的落地依然任重道远。每个时代都会有一群先锋走在时代的前沿,中流击水,鹰击长空,希望通过本专栏的学习,你也可以成为DevOps的思想者和实践者,实现个人价值和企业价值的双赢。

最后,我想请你聊一聊,关于DevOps,你都有哪些困惑?对于专栏,你又有哪些期待?欢迎你写在留言区,我们一起交流,期待你的反馈。

好了,从现在开始,就让我们一起踏上这场DevOps的奇妙旅程,一路同行,不断进步。

精选留言

  • 晴空万里

    2019-10-18 13:47:50

    石老师您好 我是一个java开发工程师 做了一些后端开发 写过一些管理系统 一些小公司项目 看到现在外面主流java开发是微服务 分布式 高并发很是羡慕 但是自己机缘巧合进入了一个财务软件企业的DevOps工程部 负责自动化运维平台的开发 这个平台基于云平台来进行开发 我一个写后台的 对此一窍不通 而且觉得这个运维平台和主流java开发不符合 也不知道devops的前景怎么样 或者说只是因为这家公司比较大 工作不好找 而暂时留下来了 看到课程 就果断加入了 我的疑问是 做DevOps平台开发和做业务系统开发 有没有前途 我的年纪也30+了 不能在方向的选择上荒废了 ...请老师解答
    作者回复

    你好,感谢你的留言,其实我一直在思考你的问题,关于DevOps有没有前途的问题,我觉得是有的,现阶段也是DevOps发展的黄金时期,但至于说做DevOps平台的开发是否有前途,这还是取决于你对自己的发展定位。客观来说,DevOps平台如果不是对外商业化的场景,只是满足内部使用的话,对于所谓的高并发,扩展性等方面的要求相比业务系统来说并没有优势,所以如果单纯从写代码的角度来说,这两者的侧重点是不同的。其次,DevOps平台开发的优势在于对于上下游流程的理解,说白了如果开发运维平台不懂运维是肯定不行的,那么在开发的过程中就有机会了解不同领域的工作内容。
    对于个人来说,核心还是要发展自己的核心竞争力,提升稀缺性和不可替代性,我之前看到一个文章说的很认同,企业里面最有价值的就是三类人,第一类执行力特别强的人,第二类创新想法很多的人,第三类能够调用大量资源的人,所以看看你自己适合哪个方面,不断加强自己的核心竞争力才是关键。
    希望这些能对你有所帮助哈。

    2019-10-20 00:22:26

  • 陈斯佳

    2019-10-08 17:30:27

    这个专栏真是来得及时,我们公司从今年年初开始全面转向DevOps开发模式,整个发布流程都要重新建构。希望通过这个专栏,不仅能帮助公司顺利转型,也能让我这个半路出家的运维工程师打下扎实的DevOps知识基础,为将来至少30年的DevOps工作铺平道路。谢谢石老师!
    作者回复

    感谢你的回复,看来你对DevOps的前景充满信心,也期待你的问题,我们一起学习进步。另外,你是我见过的对DevOps最有信心的同学,30年足够做到退休啦!

    2019-10-08 23:19:56

  • Quincy

    2019-10-09 22:56:20

    校招从服务端调岗到devops,一个人做内部系统,前后端都写,弄得我很迷茫,感觉devops算运维吧,可又不涉及sre的运维业务,跟服务端比,写起功能来感觉很随意,自由度大,没什么规范。老师,我想问下,您觉得devops跟sre以及后端开发的区别在哪,各自有什么特点,devops有必要再转回服务端嘛。
    作者回复

    看你的描述,你现在应该是在做面向内部的工具平台开发吧。其实,在稍微大点的公司里面都有这样的团队,比如像运维开发,测试开发,相比业务系统来说,由于不直接面向用户,所以这些系统相对服务端来说对架构设计,高可用,高并发等的需求没有那么高,也就是你所谓的自由度大吧。
    而SRE是传统运维演进的一个方向,需要有很好的开发能力和运维背景,所以经常被视为DevOps工程师。
    其实我的理解,这些岗位都很重要,完全看你个人的方向,在国内很多公司,都是最优秀的人来做内部工具平台,因为他们既了解开发喜欢和工作方式,又具备类似DevOps这样的知识和理念。
    所以如果倾向业务开发,服务端更合适一些,但相对的接触面会比较窄,而SRE又是需要运维经验的积累,是不同的方向。DevOps代表未来的趋势,需要加强技术积累的同时,对技能的广度要求更高。所以,你可以根据自己的发展方向来考虑哈。

    2019-10-10 19:44:58

  • xiaoxiunique

    2019-10-15 08:43:03

    哈哈 我还不懂DevOps 是啥意思
    作者回复

    所以我听到过这样一种说法,为什么持续交付没有火起来呢,是因为大家都能看得懂是啥意思,到了DevOps创造了一个新词,看不懂了,所以就火起来了😄

    2019-10-15 20:27:28

  • caozhao

    2019-10-10 15:22:27

    石老师 好
    我们部门这边的项目 已经在摸索 devops在项目中的应用。
    已经开始用docker容器快速部署,gitlab、jenkins持续交互。接下来会做k8s和监控的应用以及敏捷开发,进而完成快速迭代和持续交付。
    因为 刚接触一个月,所以需要全面了解相应知识点和各个工具的作用,更希望 能快速上手,所以希望 石老师 能先实战,然后回头解释理论,用案例和项目来驱动。
    学以致用,才会掌握知识和工具,希望石老师 的课后练习不要少。
    作者回复

    很赞,一个月的时间能把这一套东西整出来相当不简单啊。其实我理解每一个工具和实践都需要在实战中积累经验,所以后面我会针对每一个实践,从理论,案例和经验方面进行展开。当然这多业务形态和行业背景,不可能面面俱到,最好的方式还是就事论事,讨论实际推行过程中的问题,所以也欢迎你继续关注并提出你们的挑战和疑惑,我们一起讨论哈。

    2019-10-10 23:00:49

  • 心在飞

    2019-10-09 08:02:48

    有幸在上海 JUC 2017听过石老师的 Jenkins 落地最佳实践分享,收获很多。
    目前正在外企做DevOps,给我困惑比较多的是 DevOps 涉及的技术实在是太广了,涉及编程语言、操作系统、网络技术、路由器配置、自动化配置管理(Chef, Packer),云计算及虚拟化等。很多时候我会迷失在知识的海洋中,不知道该学什么,有种什么都想学,什么都学不好的感觉。
    还有一点我做的不好的,那就是我没有宣传和推广DevOps。我们团队很多人都不知道DevOps 是什么,我每天都在干什么。
    作者回复

    说的太对啦,咱们搞IT还是切忌什么都懂一点,但又什么都不精通。我的建议还是从当前的职责范围出发,先把现有领域的技术实践搞透,再拓展上下游领域那些最核心的能力。关于这部分内容,我会在番外篇中聊聊我的个人看法。
    关于第二点,可以多做做内部分享,推荐大家听听专栏,外面的大会也有很多,适当的洗脑还是很有必要的😄

    2019-10-09 11:29:08

  • 阿硕

    2019-10-08 19:29:03

    石老师的语速可以在慢点
    作者回复

    你好,感谢你的提醒,我会后面注意的!主要DevOps内容太多,看来可以给极客时间App提个慢速播放的需求哈😄

    2019-10-08 22:11:16

  • Bryan Bai

    2019-10-09 15:01:03

    配置管理 -》构建发布 -》Agile -》DevOps -》 SRE ,DevOps热度超不过10年,会有新的名词来代替,尤其是机器学习出现以后,连软件开发都要重新定义了,DevOps也会变的。
    作者回复

    同意,总会有新的软件开发交付模式诞生,推陈出新,期待下一波节奏可以由中国的工程师来主导💪💪💪

    2019-10-09 19:41:13

  • YoungMarshual_besos

    2019-10-09 12:16:49

    配置管理新兵,一开始就做配置管理。没有开发经验没有运维经验,一个人艰难步行。
    作者回复

    你好,我见过很多公司都是配管在推DevOps,作为过来人,我觉得配管有其他角色不具备的优势,比如全局视角,流程能力,沟通能力,工具链等,所以可以和专栏的伙伴多多交流哈😄

    2019-10-09 19:27:19

  • Geek_23dfce

    2019-10-21 22:33:03

    请问老师有什么devops的书籍推荐呢 谢谢!
    作者回复

    你好,这个问题有点宽泛,我在后面也会有专门一讲来介绍学习的资料,简单来说看趋势可以参考DevOps状态报告,全局视角和案例可以看《DevOps实践指南》,敏捷实战可以看何老师的《精益产品开发》,学习工程实践主要参考两本《持续交付》,这些都是比较经典的书或者材料哈

    2019-10-22 07:43:38

  • Geek_599062

    2019-10-08 21:52:02

    其实不太懂什么才是真正的devops
    作者回复

    其实,我觉得能解决问题的DevOps,才是真正的DevOps哈。DevOps只是一个符号,我们真正关心的还是如何不断提升软件研发交付效率和质量,更好的为业务服务哈。

    2019-10-09 21:58:18

  • 竹影

    2019-11-12 19:26:33

    devops应该是一种自上而下的运动,文化或习惯,从业务到研发开发,没有形成标准流程和规范,没有默契的跨团队对接,像我,单独一个运维,在公司倡导不起来。
    作者回复

    你好,你说的的确是很多公司的现实,我一直在团队内部倡导一个思想,救人先救自己,如果改变不了别人,就先把自己范围内的工作按照DevOps的思想进行改造,至少自己的工作标准清晰自动化了,那么上下游协作就有精力思考和改进了。

    2019-11-18 07:27:02

  • a

    2019-10-20 10:49:09

    目前我们服务均实现了容器化部署,jenkins自动集成和自动发布,gitlab源码管理,k8s编排容器.但需求管理这一块没有纳入进来.我最想知道的是需求和自动构建如果串起来的最佳实践.另外希望了解版本更新的最佳实践.谢谢石老师.
    作者回复

    你好,如果说需求和自动化串联,我理解第一要明确需求的颗粒度,一般比较推荐的是用户故事,或者直白的说是可交付用户的特性,需求的颗粒度决定了软件开发交付的速度。
    其次,就是分支策略,这是需求和代码的结合点,如果说DevOps推荐的做法,就是以特性为单位的交付,也就是说一个需求作为一个特性,基于需求拉出特性分支,这条分支上只提交跟这个特性相关的代码,然后以特性分支的维度进行交付。
    比较好的实践,一个是你提到的自动化,也就是需求,分支自动创建,并且可以自动构建,最典型的就是在IDE中集成需求管理系统,在IDE中完成分支创建,代码提交关联需求的工作。第二个就是需求和下游的串联,也就是从需求维度关联所有的代码,版本,测试用例等。如果能做到特性维度的灵活组合发布,那么版本更新也就不是什么难题了。
    具体的实践,我会在后续文章中进行展开。

    2019-10-22 23:55:07

  • Geek_dn82ci

    2019-10-20 00:21:39

    最近一年也在做软件工程方面产品的go to market工作,也看了一些书籍,例如凤凰项目,O'Reilly的学习敏捷等等,正好也想看看业内的实际应用,因为不是研发技术出身,但却看好这个市场特别是在国内还是有很大发展空间,只是苦于如何转型,不知道是否有适合自己的岗位角色
    作者回复

    你好,目前国内这方面的人才的确非常欠缺,关于发展路线图可以参考特别放送篇的内容,我个人感觉如果想脱颖而出,还是得上得厅堂,下得厨房,如果敏捷不能落地,团队没有感受到敏捷带来的好处,那么转型就无从谈起了。

    2019-10-22 07:48:03

  • 杨越

    2019-10-14 19:44:40

    老师请问你这个课会具体教gerrit jenkins,sonarqube,git的配置,自动配合和操作实战吗,还是以理论为主?
    作者回复

    你好,关于这些工具的使用问题,你可以随时问我哈,还是比较熟悉的哈。关于工具,可能每个人的问题都不同,所以专栏更多的会关注具体的工程实践,辅助工具介绍。
    当然如果类似这样的问题很多,我会提取一些在番外篇中进行加餐,咱们的专栏还是以大家的反馈为参考哈,所以欢迎你多多留言哦!

    2019-10-15 00:54:32

  • 玉剑冰锋

    2019-10-09 07:53:12

    想请教老师,这个专栏更适合运维还是开发?
    作者回复

    你好,很难讲只有开发,或者只有运维就能落地DevOps的,因为最开始的初衷也是把敏捷的思想在运维工作中实践,所以开发和运维一个都不能少。
    从我接触过的公司来说,开发中心主导的不在少数,但是运维SRE也很DevOps,所以我觉得对于不同的角色,出发点和侧重会存在不同。

    2019-10-09 11:22:17

  • 雷霹雳的爸爸

    2019-10-29 16:37:07

    老师能不能介绍一下京东内工程效率部和业务部门的关系,在开发过程、运维上线、故障排查方面的协作机制,还是之间只有平台和工具的交集?
    作者回复

    你好,工具平台只是其中一个方面,想做好工程效率,还离不开流程优化,实践落地,培训教练等等,关于工程效率团队的职责,我可以给你分享下之前的想法和总结,供参考:

    * 提供一体化开放的标准研发协同平台和高效易用的研发工具链
    * 持续优化端到端产品交付流程,助力产品和服务的高质量持续交付
    * 塑造业务导向高效协同的工程师文化,鼓励创意创新的快速落地实践
    * 面向用户提供灵活的研发效能解决方案,并反哺平台核心能力建设

    2019-11-20 00:57:27

  • Christina Han

    2019-10-09 22:43:04

    将自己的经验分享,可以让后来人有参考,支持👍
    作者回复

    谢谢你的支持,也欢迎你多多分享你的经验,我始终觉得有一个平台给志同道合的朋友一起交流,这很DevOps😄

    2019-10-10 19:26:05

  • Woosang

    2019-10-08 18:30:35

    会涉及Jenkins X的内容吗?
    作者回复

    你好,Jenkins X体系相当庞大,我会在云原生和开源工具的部分有所涉及,但是不会面面俱到,感兴趣的话我们可以线下交流哈🤝

    2019-10-08 22:09:10

  • 随波逐浪

    2019-11-21 09:17:42

    雪峰老师,听完了很有诱惑力的开篇,更期待后续精彩的内容。作为一名忠实粉丝,给你点赞,为你打call,。◕‿◕。
    作者回复

    你好,感谢支持,一起加油哈!

    2019-11-25 13:12:53