商米科技成立于 2013 年,总部位于上海市杨浦区创智天地,是一家极具产品创新基因和互联 基因的公司。商米在短时间内迅速成长为一家近1000人的企业,产品研发人数占比一度超过70%。
做为一家初创企业,商米研发团队早期也经历过与当下大部分创业公司一样困境:协作基本靠吼、发布基本靠手的阶段。然而,业务的快速发展,团队规模不断的扩大,给商米带来了在「团队协作」和「工程效能」上的双重挑战。
一、蒸汽时代
为了能快速让团队进入步入正轨,商米研发团队早期采取和大多数企业类似的组织方式,以职能为单位的进行团队划分,分为前端、后端、Android端、测试、产品等职能团队,并采用传统瀑布研发模式组织团队协作。当时,我们称之为正规的研发模式。
每个团队由组长负责制,具体负责团队任务的分配、技术决策和人员培养,组员负责具体的研发任务。根据这样的职能协作的方式,商米建立了早期的研发流程:
为了更好的进行跨地域协同,数字化研发活动,在协作工具上,商米引入Teambition推出的敏捷模板,能够对Sprint进行规划,并且能够对迭代数据燃尽图进行分析。
研发协作模式的改变,给团队在协作效率和节奏上带来了真正的好处。团队再也不觉得自己是草台班子了,而是真正具备一家科技公司该有的样子。这是技术团队,在管理模式上的一次重大升级。
**小结:**采用以业务为导向的跨职能团队,有效解决职能间协作的依赖问题,同时增加团队的业务归属感;以技术委员会,从职能角度组织人员培养和技术决策;落地Scrum研发模式,让团队形成节奏感。
商米经过敏捷转型,解决了部分问题,支撑了团队规模和业务体量的进一步扩大,进入了新一轮增长期。除了支持企业内部的研发发布,同样商米也在构建自己的研发生态圈,按部就班的研发方式,显然难于应对当前业务的复杂性和不确定性,体量越来越大。
同时,随着产品服务化之后,服务的数量持续增加。业务复杂性,团队规模,还是技术的复杂性和耦合性,都给整个协作和发布效率带来了巨大的麻烦。
看似繁华的背后,却有着道不尽的心酸:
-
发布流程不规范
-
发布频次低,流程长,时间久
-
人工介入多,容易出错
-
漏测、搭车现像频繁
-
没有验证完,还不愿发的被发布了
-
每两个月就有由于流程原因导致的故障
-
-
信息同步不准确不及时
-
任务的工作状态与发布流程割裂
-
线上的事情线下做约定
-
发不发不清楚,发到哪不清楚
-
不知道具体应用什么时候有谁做过发布
-
各角色、各系统之间的信息分离
-
-
检查及测试手段匮乏
-
无检查无验证卡点,测试后置
-
检查验证手段有限,测试手工兜底
-
每次发布,验证周期时间很长
-
代码评审集中在少数人,有瓶颈
-
代码评审成为做样子
-
漏发、漏测
-
-
公地危机,环境问题
-
环境被长期占用,总是不够用
-
环境有脏东西,不清楚是什么
-
每次发布,对业务有影响,停机发布
-
通过”行云/飞流”工具套件,商米解决了工程效能的问题:
第一步:自动化部署流水线,释放运维人力。一是对部署能力上,进行自动化改造,不再让发布成为瓶颈,团队想发就发,发失败了也有相应的自动化应急措施。另一方面,在整个流水线上,通过基于飞流提供的流水线模板,快速创建了自己的流水线,并同时进行了改造,保存为企业自定义的流水线模板,这样,当有团队需要用到流水线时,自动从模板上复用下来,减少了配置和推广的成本,默认从同一个模板上生成的流水线,在规范上是一致的。
同时,灵活卡点设置,根据团队业务情况动态配置研发流程。
第四步:整个流程可视化,发布状态实时感知,日志完善方便研发排查问题;
又得到运维看板上去协调发布请求,并且建立发布请求与需求之间的关系:
引入飞流DevOps工具,工程师可以直接从需求/任务卡片上创建变更分支,自动就将代码变更与需求/任务卡片进行关联,代码变更的提交,同时自动地触发的流水线,流水线的状态也同样会显示到开发看板中,大大减少了信息同步过程花费的时间。
真正做到基于一个团队开发看板,就能可视化代码变更、发布流程所有信息,将隐性的工作显性化,进一步简化了信息同步,促进了协作。
同时,针对工具平台本身的安全,同样采用行云和飞流提供的白名单设置,权限管理等,来提前做好安全的防控,做到事前预防;同时,在过程,工具平台,还可以对一些异常行为(如批量的代码转移或删除动作)进行监控,提前提出预警,做到事中监控;如果一旦发现有问题,我们也可以利用平台的日志功能,来做到事后追溯的目的。
整体上来说,这些安全的能力已经完全够用,如果不想用到这些能力,想用自己的话,也可以,disable掉,接入自己的就可以了。不过,我还是建议那些没有太多安全防控能力的企业,直接采用平台内置的功能,省得重复制造轮子。
写在后面
问题永远是创新发展的发动机。在商米走向DevOps的路上,正是这样一个个的问题,促使着我们去探索发现,也正是这样每一次的探索发现,在解决问题路上的那点小纠结、小成就、小雀喜,让我们在解决问题的路上走得更坚定,更有信心。
感谢在我们成长路上帮助过的人们,正是你们的毫无保留地帮助,才让我们走得越来越有信心。我们依旧在路上。
希望我们的故事,能够对你有一点点启发,那怕只是一点点,我们也会很开心。
参考
- 阿里云智能云研发团队:《跨越敏捷,企业DevOps解决方案》
文振熙,2015年加入SUNMI科技,一直从事云计算研发管理相应岗位,当前任职「SUNMI-云计算委员会主任」、「SUNMI-SBS业务线后端委员会组长」。曾推动SUNMI多次转型:Go语言推广、全面SOA服务化、K8S容器化落地、Wayne自助平台以及《行云/飞流》CI/CD落地等。
开源作品:
-
CSDN认证专家(http://w-blog.cn)
-
PhalApi PHP-API开源框架核心开发者
刘文沣,2017年加入SUNMI科技,从业务开发至前端研发管理,现任职「SUNMI-SBS业务线前端委员会组长」。先后承担多次技术攻坚及推动技术演进:ng1向react栈的迁移改造、基于webrtc的设备远控功能、 前端自动化构建及容器化部署、项目微应用化以及「行云/飞流」CI/CD落地等。
文章知识点与官方知识档案匹配,可进一步学习相关知识云原生入门技能树首页概览8818 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!