DevOps倡导“谁开发,谁运维”和开发运维一体化。那么是不是简单地把开发和运维人员放在一起就完事了呢?

01

“插队”的故事

小明入职时是运维专员,原来隶属于运维部门,负责某业务线系统的应用维护工作。一旦系统的生产环境出现任何故障,或者业务人员在生产环境上有任何请求,都是由小明所在的运维部门先处理,处理不了的,再联系该系统的开发团队一起处理。

由于生产环境关乎业务部门的业绩,每天收到的请求量也非常多,小明的压力很大,而且并不是每个故障或请求他都有能力或来得及处理;找开发团队,又会被开发团队说他只是把事情“左手交右手”,没有提供价值,小明很委屈也很为难。他并没有参与系统的开发,而系统上线后的问题却需要他来应对,干着最苦最累的“背锅侠”的活,却没有什么掌声和成就感。

两年前,公司开始进行DevOps转型,把运维部门撤销了,小明“插队”到了业务线系统的原开发团队中。公司希望借此让业务线的交付团队负责从开发到运维的整个链条,也让像小明这样的运维人员有机会参与到项目工作中,提升他们的技能和工作满意度。原来的开发人员也要参与运维,在开发中更多地考虑到生产环境运行的问题。有重大问题时,整个团队都可以参与运维、解决问题。但几个月后,小明发现他的具体工作并没有什么变化,生产环境的一切事务依然还是先派给他,由于这项工作已经占据了他所有的工作时间,他没有机会参与项目交付。他感觉自己和团队里的开发人员是“同床异梦”,也没有机会拓展自己的能力。

小崔是持证DBA。原来隶属于独立的IT运维部门,该部门掌管着一切IT基础设施,如服务器、操作系统、数据库、中间件、网络以及相应的专家团队。由于重要的权限都掌握在这些专家团队手上,业务线交付团队如果无法获得IT运维部门的支持,项目就进展不下去。当各业务线的项目需求越来越多时,IT运维部门就成了整个公司的瓶颈。为了解决这个问题,公司开始将IT运维部门去中心化,部分领域专家“插队”到各业务线交付团队中,从而减少交付团队的对外依赖,实现“自给自足”。

小崔就是这波浪潮中的其中一员。被收编到交付部门后,他比过去更忙了。由于DBA是比较专业的技能,多大的团队需要一个全职DBA成了一个问题。团队太小,拥有一个DBA响应力绝对没有问题,但是无法充分利用其时间;如果几个团队共享一个DBA,又会出现新的瓶颈问题。小崔就是一个被几个交付团队“共享”的DBA,因为要疲于应付各交付团队的请求,他已经没有时间成长。过去,由于DBA都集中在一起,他们之间可以频繁交流,相互学习,共同成长。而小崔现在收获到的只有孤独和压力。

同样以DBA身份入职的大鹏则面对另一个情景。由于他是新招的,直接进入了交付团队,但该团队的DBA工作不饱和,他被安排做了很多与DBA不相关的项目工作。半年后,他辞职了,因为他感觉再这样下去,他的DBA武功就要废了。

如果你的公司也在做DevOps转型,以上故事是否也在你身边发生呢?虽然说分分合合是组织转型的常态,但是处理不好,代价是相当沉重的。

02

什么样的工作需要整合,什么样的工作不应该整合?

既然我们已经通过多年的经验证明了在软件交付领域,分角色的精细分工是不利于整体交付效率的,那为什么在DevOps倡导下的全栈工程师、开发运维一体化又会产生新的问题呢?如何解决这些新问题呢?

也许,我们需要认真思考,在整个软件交付过程中,什么样的工作需要整合,什么样的工作不应该整合。

在前DevOps时代,分角色分工的思路其实是来源于工业时代的。做过手工的都知道,如果要手工做100只灯笼,一开始会做得很慢,做了几只后,会越做越快,所谓熟能生巧。再进一步,把做灯笼的过程拆解一下,比如拆解成搭骨架、糊纸、上色等工序,然后多找几个人来,每人负责其中一道工序,经过几番磨合,由于每个人要做的事情比较单一,很容易上手和熟练,效率将会大大提升。灯笼的成品和质量也会越来稳定。把这个过程放大,就是一个工厂的模式。所有工厂都是通过拆解和精细分工获得极高的效率的,而且,分工越精细,效率越高。而生产最大的特点是在不断地做重复的事情产出是同样的产品,而且产品间的差异越小越好,最好趋近于零。对于重复的事情,就应该通过拆解、精细分工、标准化和自动化来提升效率。

但是软件交付过程则完全不一样,和生产最大的区别就是“不重样”。每一个软件需求都是不一样的,用户想要的结果也是不一样的,这导致需求分析、开发、测试面对每个需求,或者运维面对每个故障的具体工作是不一样的。而且软件交付是一个知识工作,是信息流动和转换的过程,而交接会带来信息的衰减和变异,因此在软件交付过程中,按角色分工非但不会带来像生产那样的效率提升,反而会因为信息在不同角色间的交接和传递而产生不必要的摩擦和误解,甚至交付出错误的软件产品。因此,我们更希望软件交付团队成员可以具备从需求到运维的端到端的交付能力,每个团队针对一个特定的业务领域能够独立完成交付,减少交接,减少对外依赖。而且这个团队应该足够小(最好不多于7人),以确保团队内目标一致、高效沟通和高度灵活。

然而,对于业务或用户来说,IT系统和服务是一个整体,除了软件,还有硬件。而每个人的带宽和能力都是有限的,术业有专攻,不可能每个人都是全能的,特别是有些细分领域专业度非常高。如果把所有的职责都归到业务线交付团队,那么交付团队必然需要拥有具备各类所需技能的专家,从而形成新的庞大实体,除了造成不必要的资源浪费外,组织一旦变大,势必又会变得官僚和低效,原本想避免的问题又会重新出现。

03

找出哪些工作是重复的,哪些是非重复的

那么问题的症结在哪里呢?通过前面的分析,我们知道,重复的工作,可以通过拆分、精细分工、标准化和自动化来提升效率,非重复的工作,可以通过减少交接和依赖来提升效率。要解决如何分、如何合的问题,最关键的就是找出哪些工作是重复的,哪些是非重复的。重复的,解决方案是整合资源、角色分工和自动化;非重复的,解决方案是一体化。

那么在软件交付过程中,哪些工作是重复性的呢?我想到的有以下这些:

  1. 网络、硬件等IT基础设施不会因为不同的项目和需求有太多的差异,而且专业性强,不太适合一人分饰多角,这些角色整合在一个独立团队中,使他们保持专注,也有利于这些专业领域的技术交流和知识传递。

  2. 部署,应该尽量自动化,最低要求也应该标准化,有标准的具体作业流程,谁都可以遵照流程做好。我们可以安排前文中的小明把应用部署过程整理成含具体操作步骤的标准化手册,这样这项工作团队内谁都能做,把他从部署这项具体工作释放出来,在此基础上,让他把这个过程自动化,从而让他学习流水线和自动化部署的技术,接触技术性工作。他也可以把故障处理流程整理成操作手册,赋能其他团队成员在合规的环境下承担运维工作,把他自己释放出来;

  3. DBA、操作系统等专家团队应该通过脚本、自助服务等形式赋能交付团队在受控的环境下满足交付需要,减少对他们的依赖。我们可以让前文中的小崔和大鹏收集各交付团队对于DBA的具体需求,把具有共性的需求提炼出来,做成可以通过DBA权限执行的脚本,既满足交付的需求,又确保了DBA权限不会被滥用;

  4. 所有项目都必须要走的标准流程,如采购等,由专业的团队提供服务的形式来执行,大大降低各项目团队由于需要熟悉繁琐流程的过程所导致的不必要浪费;

需求分析、开发、测试、业务支援等非重复性工作则应该保持在一个自满足小团队中,为特定的业务领域提供软件交付和维护服务。

04

总结

分分合合是组织转型的常态。DevOps的目标是实现持续交付,提升整体的交付效率。要实现这个目标,简单地把开发、应用维护,甚至IT运维整合在一起,有点过于粗暴。我们还是应该认真分析哪些具体工作是重复的、可标准化的和哪些是非重复的、不能标准化的来分开处置。重复的,解决方案是整合资源、角色分工、标准化和自动化;非重复的,解决方案是一体化。

关于作者


  • 就职于世界500强银行,负责基金服务业务软件开发与交付

  • 敏捷、精益、DevOps专家

  • 精通极限编程、Scrum、看板方法、测试驱动开发、持续集成、行为驱动开发、DevOps工具栈

  • 曾在GDevOps、DevOpsDays Meetup、中国软件技术大会等论坛发表主题演讲

  • 著有《猎豹行动:硝烟中的敏捷转型之旅》一书

购书通道

纸质书、电子书在京东、当当、亚马逊等渠道已全面上架,搜索“猎豹行动 硝烟中的敏捷转型之旅”。

当当自营购书码:

京东自营购书码:

关注公众号看其他原创作品

DevOps背景下的分合之事相关推荐

  1. 银行背景下分库分表技术选型

    业务持续增长带来的单表数据量过大,必然影响到数据库的读写性能,那到底要不要分库分表呢? 阿里巴巴P3C规范给出一个推荐: [推荐]单表行数超过500万行或者单表容量超过2GB,才推荐进行分库分表. 说 ...

  2. DevOps交付模式下,软件测试的那些事

    众所周知,近10年IT领域有两个关键的风向转变,传统IT向云计算转变,传统瀑布和迭代开发模式向敏捷开发模式转变.这两个转变促成了DevOps产品交付模式的出现.互联网行业竞争激烈,许多公司专注于产品和 ...

  3. 【工业互联网】郭朝晖:工业互联网平台背景下的工业大数据与智能制造

    4月11日,工业互联网平台宣讲团第二季第三讲继续开讲,由走向智能研究院工业大数据首席专家.清华大学访问学者郭朝晖为大家分享"工业互联网平台背景下的工业大数据与智能制造"." ...

  4. 【CTO讲堂】双创背景下的移动开发及变现之路

    为了帮助IT从业者职业之路拥有更多收获,在诸多C粉的殷切期待下,由CTO俱乐部打造的CTO线上讲堂自登场以来获得大家好评.本期邀请AppCan CTO赵庆华带来双创背景下的移动开发及变现之路的主题分享 ...

  5. 谈新IT背景下的CIO角色定位和专业知识体系构建

     关注ITValue,看企业级最新鲜.最价值报道! 作者丨何明璐 出品丨人月聊IT 新IT背景下的CIO角色定位 对于企业CIO岗位角色定位,在网上有很多的文章都谈到,自己博客在前面也谈到过CIO应该 ...

  6. 【2016年第2期】大数据背景下的治理现代化:何以可能与何以可为(上)

    刘强强,石乾新 贵州大学公共管理学院,贵州 贵阳 550025 摘要:大数据是后工业社会中信息爆炸式增长和网络计算技术迅速发展的结果.大数据时代深刻地改变着现代社会的生活方式和治理理念.分析了公共治理 ...

  7. 云原生背景下的运维价值思考与实践

    作者:刘天斯,腾讯游戏高级工程师 前言 随着公司自研上云战略如火如荼地进行,IEG-增值服务部作为较早一批响应的团队,截止目前自研上云已完成1/3的流量切换,日PV超百亿.切云的服务大量采用了云原生的 ...

  8. ssm电商背景下精品茶网站的设计与实现毕业设计-附源码191732

    摘 要 近年来,随着移动互联网的快速发展,电商背景下精品茶网站越来越受到网民们的欢迎,电商背景下精品茶网站对国家经济的发展也起着越来越重要的作用.简单的流程.便捷可靠的支付方式.快捷畅通的物流快递.安 ...

  9. 新零售背景下“农村淘宝“线下和线上服务

    新零售背景下"农村淘宝"线下和线上服务 农村淘宝在做什么? 2019年对于农村淘宝(下文简称"村淘")来说是关键的一年,作为阿里巴巴集团新零售战略中的第六路大军 ...

最新文章

  1. 编程模式 之美 -- 抽象工厂模式
  2. python下载不了-python安装不了
  3. 单位四元数(unit quaternion)
  4. idea 2018.2.2安装
  5. 正整数分解为几个连续自然数之和
  6. Navicat连不上Ubuntu?
  7. 蔚来、威马抢装的英伟达Orin,正成为高端智能车标配
  8. leetcode-884-两句话中的不常见单词
  9. VTD信号灯TrafficLight数据解析提取
  10. QCC3003项目实战:BlueMotor6 AGHFP CVC 蓝牙对讲耳机
  11. Informatica批量导入、导出xml文件
  12. SOC核心处理器单元解构分析
  13. CISP 考试教材《第 7 章 知识域:信息安全支撑技术》知识整理
  14. Outlook2013 邮件签名设置
  15. java整钱兑零美元换算成美分,人民币和美元大写格式在线工具,美元美金数字金额转换大写,外币大写金额...
  16. 分布式系统中Topology(Rack) Awareness的实现思路
  17. Lucas–Kanade method(LK光流法)
  18. mysql 设置密码出现ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
  19. 别整天 “学妹/前女友”了,花2小时整理了Numpy测试习题100道,做个测验吧!
  20. 海康威视网络摄像头购买指南(焦距像素等参数)

热门文章

  1. neo4j common match
  2. 批评国足?王兴和美团被大帝们抵制了
  3. 计算机大题知识点总结,计算机二级office操作题考点大总结!
  4. 那么我们应该如何优化Youtube的视频呢?
  5. 程序员数学(19)–一次函数
  6. Mac 查看本机密钥
  7. com.android.kyj.onj,Android 自学之列表选择框Spinner
  8. 傅盛离职内情:从360叛将到腾讯马前卒 --学习周鸿祎的优点+360怎么做起来的
  9. python试卷(有答案版本、个人答案不是官方答案)_python试卷(有答案版本,个人答案不是官方答案)...
  10. 华为工业互联网白皮书 附下载