站点图标 起风网

运维团队(OPS)与技术团队有效沟通配合探讨

一、技术团队细分及配合问题 在IT企业里产品从创意到交付给用户,从整体上看是由技术部门负责,但如果深入到技术部门,会发现由不同的技术团队负责不同的部分或者阶段。一般会分产品团队、开发团队、测试团队以及
运维团队,在互联网公司里,
运维团队一般还分基础运维和产品运维两个团队,基础运维负责基础设施(包括机架、网络、硬件)和操作系统的安装,为整体公司的所有产品提供基础设施的运维服务。而产品运维负责线上产品的问题处理、代码的布署和跟开发的接口等。
不同的技术团队一般隶属不同的部门,分散在公司不同的办公区域,团队内部的沟通相对多一些,但团队之间的沟通较少。不同团队都会形成自己的办事习惯、节奏,都有自己的关注点,一般只是知道与之接口的团队的总体职责,但是不知道对方可能面临的困难与工作中的挑战点。另外,如果公司够大,每个团队内部又会分为许更细的小团队,如基础运维一般有系统团队、网络团队和IDC团队等,这样更加重了团队之间沟通难度。 从产品策划到上线,一般是以下边的顺序经过各个团队:

  1. 开发团队收集产品的需求,定下时间表并进行开发
  2. 开发完后,交由测试或质量团队进行测试
  3. 然后交给运维团队布署新产品或新版本
  4. 运维团队将运维过程中发现的代码缺陷反馈给开发团队进行修复

在上面的每个阶段,对应的团队都是各做各的,一般是在最后才会把球踢给下一个团队,如果下一个团队发现问题又会把球踢回原来的团队。如果你深入到不同的团队中去,或听到不同的抱怨声音。
基础运维团队经常抱怨:

产品运维团队会说:

而开发团队却说:

另外,测试团队的人也许会说:

二、技术团队之间配合不好的影响 上面看到的团队之间的冲突和抱怨问题虽然都不一样,产生的影响确是类似的:

最近又发生了运维团队与开发团队之间的配合不好的问题,影响及原因如下:

  1. 新产品上线延误了两个星期,正常情况下一天就可以上线。原因是开发考虑不周,测试环境中没有发现,到上线前才发现部署到多台机器上后,按开发原先计划的方式多台机器无法协作完成任务。还有就是在设计阶段没有考虑生产环境的状况,在上线的过程中需要做出对应的代码调整。
  2. 上线后质量不稳定,出现多次紧急修复。原因同上。
  3. 临时增加硬件投入。新产品中有个组件采用全新的技术方案,跟原来的LAMP体系不兼容,所以需要新增机器,单独部署。
  4. 除低了服务可用性标准,并产生了遗留问题。因为临时需要增加硬件,而恰好又只有一台,这样就形成了单点,如果该机器出现故障,服务将全部中断。另外,由于开发前设计上考虑不周,跟别的组件集成时产生别的单点。所以这些降低了服务的可用性,以后还得想办法解决。除此之外,组件采有新的软件,安装、服务起停以及软件配置的管理都是纯手工打造,以后还得找时间纳入到自动配置管理中。
  5. 影响了团队士气。在上线过程中开发、测试和运维都觉得不舒服,相互之间产生了抱怨。如果不处理好,会影响以后的配合。

虽然,有些问题确实需要靠某些团队提高自身的人员技能才能解决好,但这些团队能够形成一股合力的话,同样的人员组合肯定会产生更好的效果。
三、过去解决团队配合问题的方法 第一次碰到团队之间的配合问题时,我们还没来得及解决的时候,公司战略调整,整个开发和系统运营团队转给了另一个大部门。但我们在别的地方重新梳理技术团队时,后来又没有出现这种问题,回想起来,我们的做法是:

这样,不同团队之间虽然有职责上的明确分工,但在中间的配合的部分做了不少柔性处理。另外,开发、运维与测试等团队中的核心人员之间本身就有认同感,大家一开始的目标就是奔着公司能成功来的,这是没有出配合问题的根本原因。这一点其实跟DevOps的核心点类似,既然如此,何不重新审视一下DevOps,并参考着解决团队之间的配合问题呢。
四、DevOps DevOps是2010年从欧洲传过来的概念,最先是由一群有着跨学科技能的工程师提出来的,为了解决下面的问题:

我认为DevOps的核心是不管你是开发者、测试人员、管理者、DBA、网络工程师还是系统管理员,大家都是一起的,只有一起努力给客户提供稳定而高质量的软件服务,实现公司的商业利益才会有别的,包括自己的工作机会。 所以,DevOps实际是给各个团队之间搭桥,让他们不仅仅是依靠上线申请单这样的鸿雁传书工具进行沟通,而且经常离开自己的孤岛,走到别人的岛上去,了解别人,并提供自己的想法,帮助对方。 DevOps更象是一种运动,每家公司都需要根椐自身的特点进行借鉴,推动团队之间的协作与合作。需要在三个方面努力:

  1. 人员 一方面对现有人员进行培训,鼓励他们了解别的团队的工作、面临的挑战等,让他们用自己的特长去审视和帮助别的团队,另一方面也想办法招一些全面的技术人才,在不同团队之间搭出一些适用的桥来。
  2. 流程 在研发的前期,让系统运维同事参与起来,一起搭建测试环境,验证想法,或者也可以在一些项目团队中直接配有系统、开发和测试以及产品人员,一起为产品的上线努力。出现问题的时候,一起想方法找到问题的真正根源,避免相互推托,将解决方案落实在以后的研发过程中。从绩效考核流程上也需要考虑协作因素。
  3. 工具 说实在的,大家针对DevOps在工具方面其实讨论得更多,这里面跟敏捷有些类似之处。 快速的系统部署和自动化产品代码发布方面的工具显得尤为重要了。

为了避免校弯过正,走向另一个极端,也需要避免下面的对
D
evOps的常见误解:

  1. DevOps意味着要给开发者root权限 可以给开发者加sudo权限,运行指定的命令,比如重启web服务。让开发者更多地了解生产环境和产品的运行状况,但并不意味着让开发者象管理员一样的去管理机器。
  2. 所有系统管理员需要写代码,所有开发者需要上架机器 在系统管理和开发者各个领域仍然需要各自的专家,如存储、网络、安装、javascript等专门的人才,DevOps并不意味着让大家不做自己专长的事情。
  3. 你一定要用某个工具,不然就不是DevOps 一些技术和自动化的工具对推动各个团队之间协作很有帮助,但是还是需要聚焦于要解决的问题,根椐问题和组织的特点选择合适的工具。
  4. 我们需要招聘DevOps DevOps不是一个新的岗位

五、结合DevOps,解决团队配合问题 管理人员关注团队之间的沟通机制及氛围:

让开发人员了解运维工作、关注点及挑战,并从开发视角帮助运维:

让运维人员了解开发过程的关注点及挑战,并从运维角度改善开发过程:

原文链接:https://lookme.blog.csdn.net/article/details/52598906

本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。

退出移动版