30人的产研团队如何高效协同?
作者介绍:以诺行CTO 刘自强 团队使用云效3年
网站建设哪家好,找成都创新互联公司!专注于网页设计、网站建设、微信开发、小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了五台免费建站欢迎大家使用!
团队协作需求
杭州以诺行汽车科技股份有限公司(以下简称“以诺行”)成立于2016年8月,位于杭州市余杭区文一西路科技高地海创科技中心。以诺行是一家集研发、销售及服务为一体的科技型企业,主要核心业务包括汽车软件、 汽车喷漆及汽车配件,致力于用精湛的技术和超前的互联网思维打造汽车维修平台全新格局。
以诺行目前有以下软件产品
- 基于SaaS的汽修管理ERP,功能包含进销存、维修流程管理、账务、CRM等。基于Web、Android、IOS、微信H5、微信小程序等操作终端。
- 以诺行喷涂全流程软件,基于Web、Android、IOS等操作终端。
- 以诺行询报价软件,基于Web、微信H5、微信小程序等操作终端。
- OA系统,基于钉钉小程序。
- 以及其它正在规划开发的产品。
所有软件产品由以诺行软件部门进行开发维护。整个部门分为产品、设计、开发、测试和实施岗位,共30人左右。
因为软件产品线较多,各职能部门人手无法做到每条产品线专人负责,所以并没有采用项目制,而是由项目经理和产品经理根据需求优先级与开发资源情况安排开发迭代。因此每个迭代安排人手时,需要清楚的了解每个职能岗位的工作状态,开发过程中也要及时跟进开发进度,及早识别风险。
出于以上原因,我们需要选择或者自己搭建一套项目管理和持续集成系统,并且需要考虑以下因素。
- 基本的项目管理功能和可配置的任务工作流
- 清晰易用的工作台和工作流通知
- 资源存储与共享
- 文档管理
- 代码托管
- 持续集成流水线,并且流水线与阿里云产品对接友好
- 使用成本
协作选型过程
最初,我们团队在自己的ECS服务器上搭建了开源的项目管理和持续集成工具,并经过配置实现了基本的需求。但是在使用一段时间后决定选择一款在线SaaS性质的项目管理工具,原因如下
1.管理效率低下
a.很多传统项目管理工具并没有非常直观的统计视图,需要将任务明细导出Excel再进行透视或者公式图表分析,无论是日常管理还是向公司提交汇报都很不方便。
b.缺少直观的日常统计,也会导致安排后续任务进度时得不到充分的数据支持,以至于进度安排过紧或过松,导致因赶工而产出质量下降或研发资源浪费。
2.运维成本高
a.开源产品部署后不易升级,大版本升级容易产生兼容性问题,并且可能需要重新调整配置。
b.资源存储在ECS上,对存储资源消耗较大,不过这个问题可以使用NAS服务缓解。
c.若日常使用时有较多截图,文档的读写操作,ECS带宽占用较大,容易导致ECS上部署的服务争抢带宽资源,而带宽成本较高。
d.后端技术转型,后端服务不再部署在ECS上,而是部署到了阿里云SAE(Serverless App Engine)产品,不再需要ECS。对于中小企业来讲,单独为项目管理工具保留一台ECS比较浪费资源。
我们调研了市面上比较流行的SaaS项目管理工具,部分功能满足我们的需求,但是普遍有以下的制约因素。
- 与阿里云产品无法直接对接。我们前端部署在OSS,后端部署在SAE,虽然云产品提供了各种API可以进行对接,也提供了一些常用持续集成平台的插件。但是对接上仍然比较复杂,甚至需要我们自己开发一定的中间件进行对接。
- 额外维护一套账号体系
- 收费较高
在调研试用各种项目管理工具期间,偶然在阿里云官网上看到了云效产品的推广,并且小微企业有一年期限的30人内免费。而云效可以基于阿里云RAM账号登录,并且对阿里云产品提供无缝对接,于是便开通试用了。
云效使用效果
由于大部分研发人员需要对各种云产品进行查看管理,所以已经开通了各自的RAM账号。因此使用RAM账号对我们来讲并不是额外的负担,对于不使用RAM账号的企业来讲,云效也支持使用钉钉账号进行绑定。
为每一个员工建立阿里云RAM账号,并在云效中配置好部门和角色就可以开始使用了。
项目管理
通过配置合理的项目管理功能,可以完成以下工作流程
- 项目经理的开发迭代管理
- 产品经理的需求生命周期管理
- 开发人员的开发任务管理
- 测试人员的测试计划管理
- 测试阶段的缺陷生命周期管理
- 实施和客户部门的反馈管理
其中涉及到了以下功能:
版本管理/迭代
版本管理和迭代功能提供了便捷的手段来管理各种任务、计划和资源。管理者借此可以清晰的查看开发迭代进展,识别进度风险。产品部门也可以预先对任务进行分类、评审和排期。
需求
需求模块提供了基本的需求管理功能,并支持自定义各种类型的字段、状态和工作流。
任务中可以关联各种文件任务资源和知识库条目作为附件,以更加丰富的媒体方式呈现需求内容。
进入开发的需求可以创建对应的子任务分配给研发人员,研发人员也可以快捷地打开关联需求查看设计细节。
测试计划
在开发迭代之前或开发过程中,测试人员可以使用测试计划模块来管理测试用例,也可以将研发人员特地声明的风险加入的测试计划。借此可以有效的追踪每一个迭代的测试情况,避免有遗漏,也可以在复盘时进行回顾分析。
任务
项目管理中可以根据现状来自定义各种基于工作流的任务,比如开发任务。通过配置好的状态和工作流,帮助各职能人员识别关注自己的任务,避免遗漏延期。
缺陷
缺陷由测试人员发起,经过研发的修复,再由测试人员验证关闭。借此闭环来管理研发中或者线上突发的缺陷。
测试人员创建缺陷后,填写优先级和备注后指派给对应开发,也可以挂接到对应需求上面。
在动态栏中相关人员可以进行便捷的沟通。缺陷修复后标记为已解决并自动指派回测试人员进行验证,验证修复后关闭即可。
知识库
知识库是文档管理中心,可以依托于具体项目,也可以独立项目之外。提供了协同编辑能力,并具备细粒度的权限管理。
代码托管
Codeup代码托管服务提供了完整的git仓库基本的功能,包括可视化的权限管理,代码合并,分支管理,Webhook等。
此外还提供了代码安全检测功能,比如代码中的明文密码,高风险的依赖包等, 比如这几天爆出来的log4j 2.14的高危漏洞。
报表功能也可以直观的追溯代码的提交评审行为,对于代码质量管理很有帮助。
值得一提的是,在代码库中可以一键开启WebIDE签出代码进行开发。在远程办公,紧急处理问题时很有帮助。
文件/分享/日程等
项目管理还提供了很多其它模块来促进项目人员间的共享和协作能力。
工作台
工作台中可以方便的追溯自己相关的工作,在日常工作中,每个岗位只需专注于“我执行的”页签内的任务并保证按时完成即可。
任务会根据截止时间和优先级进行分组排序,可以有效的帮助个人优先处理筛选出更加重要紧急的任务。
工作台同时提供了非常便捷的创建个人任务的功能,这类任务不依托于项目,可以很大程度上替代个人日常的TODO list。
"我执行的","我参与的"和"我创建的"页签基本上可以覆盖大部分对自己相关任务的管理场景,避免频繁的到具体项目的任务视图中查询。
持续交付
云效流水线功能提供了从代码直到部署的流程配置。原生支持与代码仓库Codeup的对接,并且可以方便的配置各种Webhook触发器。
以下是我们软件产品的架构图:
对于后端应用,配置好Dockerfile后,流水线根据Dockerfile执行构建并且把制品上传到阿里云容器镜像服务产品中。在需要部署时,则把镜像推送给对应的SAE应用执行灰度部署。这些都是在流水线中原生支持的。
对于前端资源,流水线中调用webpack打包脚本生成制品,在需要部署时,推送到OSS服务的对应bucket即可。
以下是流水线的列表页面,可以自定义表头来展示运维人员关心的字段。
流水线配置中也有丰富的触发器可以支持手动/代码库行为/流水线联动触发等。
统计
云效提供了丰富的统计功能,可以从各维度汇总数据。无论是内部管理还是对公司高层汇报,都可以方便的导出相关统计。
截止到当前,我们已有十多个应用产品线通过云效进行管理,其中核心应用已产生过万个任务,大部分都可以按时完成。
给中小企业的建议
现在对于中小企业,基本都不会自己搭建服务器和机房进行部署,而是选择各大云平台,选择一款SaaS项目管理工具可以极大的降低运维成本。
而持续集成,选择一款可以与自己选择的云产品方便对接的平台也是非常重要的,尤其是现今Serverless应用越来越广泛,持续集成平台担负的任务也越来越重,需要谨慎选择。
对于核心功能托管在阿里云产品(如ECS, OSS, NAS, SAE, ADAS等)的企业,云效流水线可以提供原生的对接支持,也会在第一时间适配各云产品的新特性,可以让运维人员专注于对部署流程配置。
项目管理方面,云效提供了易用的项目管理,知识库,统计等功能,可以覆盖大部分的项目管理场景。
最后价格方面,现在云效常用基础功能免费开放,且不对使用人数做限制,对于中小企业节约成本非常友好。
以上内容是以诺行在实施使用云效后的效果,对于中小企业,基本都不会自己搭建服务器和机房进行部署,而是选择各大云平台,选择一款SaaS项目管理工具可以极大的降低运维成本。感谢以诺行CTO 刘自强及团队对云效的信任和肯定,希望云效可以陪伴他们不断进步。
如果你也有故事要分享,请留言联系我们,一起打造10倍效能提升案例集。
欢迎大家使用云效,云原生时代新DevOps平台,通过云原生新技术和研发新模式,大幅提升研发效率。现云效公共云基础版不限人数0元使用。
点击下方链接立即体验云效DevOps全家桶!
https://help.aliyun.com/document_detail/.html?channel=case
分享标题:30人的产研团队如何高效协同?
分享链接:http://azwzsj.com/article/dscgggc.html