加入收藏 | 设为首页 | 会员中心 | 我要投稿 辽源站长网 (https://www.0437zz.com/)- 云专线、云连接、智能数据、边缘计算、数据安全!
当前位置: 首页 > 服务器 > 搭建环境 > Windows > 正文

把运维和开发放一起就是DevOps?还差得远!

发布时间:2019-03-29 02:46:00 所属栏目:Windows 来源:刘华
导读:DevOps倡导谁开发,谁运维和开发运维一体化,那么是不是简单地把开发和运维人员放在一起就完事了呢? 一、DevOps转型中的插队故事 1、运维专员小明的故事 小明入职时是运维专员,原来隶属于运维部门,负责某业务线系统的应用维护工作。 一旦系统的生产环境
副标题[/!--empirenews.page--]

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

把运维和开发放一起就是DevOps?还差得远!

一、DevOps转型中的“插队”故事

1、运维专员小明的故事

小明入职时是运维专员,原来隶属于运维部门,负责某业务线系统的应用维护工作。

一旦系统的生产环境出现任何故障,或者业务人员在生产环境上有任何请求,都是由小明所在的运维部门先处理,处理不了的,再联系该系统的开发团队一起处理。

由于生产环境关乎业务部门的业绩,每天收到的请求量也非常多,小明的压力很大,而且并不是每个故障或请求他都有能力或来得及处理;找开发团队,又会被开发团队说他只是把事情“左手交右手”,没有提供价值,小明很委屈也很为难。

他并没有参与系统的开发,而系统上线后的问题却需要他来应对,干着最苦最累的“背锅侠”的活,却没有什么掌声和成就感。

两年前,公司开始进行DevOps转型,把运维部门撤销了,小明“插队”到了业务线系统的原开发团队中。

公司希望借此让业务线的交付团队负责从开发到运维的整个链条,也让像小明这样的运维人员有机会参与到项目工作中,提升他们的技能和工作满意度。原来的开发人员也要参与运维,在开发中更多地考虑到生产环境运行的问题。

有重大问题时,整个团队都可以参与运维、解决问题。

但几个月后,小明发现他的具体工作并没有什么变化,生产环境的一切事务依然还是先派给他,由于这项工作已经占据了他所有的工作时间,他没有机会参与项目交付。

他感觉自己和团队里的开发人员是“同床异梦”,也没有机会拓展自己的能力。

2、DBA小崔的故事

小崔是持证DBA。原来隶属于独立的IT运维部门,该部门掌管着一切IT基础设施,如服务器、操作系统、数据库、中间件、网络以及相应的专家团队。

由于重要的权限都掌握在这些专家团队手上,业务线交付团队如果无法获得IT运维部门的支持,项目就进展不下去。当各业务线的项目需求越来越多时,IT运维部门就成了整个公司的瓶颈。

为了解决这个问题,公司开始将IT运维部门去中心化,部分领域专家“插队”到各业务线交付团队中,从而减少交付团队的对外依赖,实现“自给自足”。

小崔就是这波浪潮中的其中一员。被收编到交付部门后,他比过去更忙了。

由于DBA是比较专业的技能,多大的团队需要一个全职DBA成了一个问题。团队太小,拥有一个DBA响应力绝对没有问题,但是无法充分利用其时间;如果几个团队共享一个DBA,又会出现新的瓶颈问题。

小崔就是一个被几个交付团队“共享”的DBA,因为要疲于应付各交付团队的请求,他已经没有时间成长。

过去,由于DBA都集中在一起,他们之间可以频繁交流,相互学习,共同成长。而小崔现在收获到的只有孤独和压力。

3、DBA大鹏的故事

同样以DBA身份入职的大鹏则面对另一个情景。

由于他是新招的,直接进入了交付团队,但该团队的DBA工作不饱和,他被安排做了很多与DBA不相关的项目工作。

半年后,他辞职了,因为他感觉再这样下去,他的DBA武功就要废了。

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

二、思考DevOps时代下工作整合问题

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

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

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

在前DevOps时代,分角色分工的思路其实是来源于工业时代的。做过手工的都知道,如果要手工做100只灯笼,一开始会做得很慢,做了几只后,会越做越快,所谓熟能生巧。

再进一步,把做灯笼的过程拆解一下,比如拆解成搭骨架、糊纸、上色等工序,然后多找几个人来,每人负责其中一道工序,经过几番磨合,由于每个人要做的事情比较单一,很容易上手和熟练,效率将会大大提升。灯笼的成品和质量也会越来稳定。

把这个过程放大,就是一个工厂的模式。

所有工厂都是通过拆解和精细分工获得极高的效率的,而且,分工越精细,效率越高。而生产最大的特点是在不断地做重复的事情,产出是同样的产品,而且产品间的差异越小越好,最好趋近于零。对于重复的事情,就应该通过拆解、精细分工、标准化和自动化来提升效率。

但是软件交付过程则完全不一样,和生产最大的区别就是“不重样”。

每一个软件需求都是不一样的,用户想要的结果也是不一样的,这导致需求分析、开发、测试面对每个需求,或者运维面对每个故障的具体工作是不一样的。

而且软件交付是一个知识工作,是信息流动和转换的过程,而交接会带来信息的衰减和变异,因此在软件交付过程中,按角色分工非但不会带来像生产那样的效率提升,反而会因为信息在不同角色间的交接和传递而产生不必要的摩擦和误解,甚至交付出错误的软件产品。

因此,我们更希望软件交付团队成员可以具备从需求到运维的端到端的交付能力,每个团队针对一个特定的业务领域能够独立完成交付,减少交接,减少对外依赖。

而且这个团队应该足够小(最好不多于7人),以确保团队内目标一致、高效沟通和高度灵活。

然而,对于业务或用户来说,IT系统和服务是一个整体,除了软件,还有硬件。而每个人的带宽和能力都是有限的,术业有专攻,不可能每个人都是全能的,特别是有些细分领域专业度非常高。

如果把所有的职责都归到业务线交付团队,那么交付团队必然需要拥有具备各类所需技能的专家,从而形成新的庞大实体,除了造成不必要的资源浪费外,组织一旦变大,势必又会变得官僚和低效,原本想避免的问题又会重新出现。

三、解决工作整合问题的关键

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

那么问题的症结在哪里呢?通过前面的分析,我们知道,重复的工作,可以通过拆分、精细分工、标准化和自动化来提升效率,非重复的工作,可以通过减少交接和依赖来提升效率。

要解决如何分、如何合的问题,最关键的就是找出哪些工作是重复的,哪些是非重复的。重复的,解决方案是整合资源、角色分工和自动化;非重复的,解决方案是一体化。

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

1、网络、硬件等基础设施

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

2、部署

应该尽量自动化,最低要求也应该标准化,有标准的具体作业流程,谁都可以遵照流程做好。

(编辑:辽源站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读