3个月夯实基建,鲜丰水果这样实现研发数字化

简介:3个月夯实基建,鲜丰水果这样实现研发数字化。简单、快速地提升产研团队的交付质量和交付效率,成为了支持组织业务创新的必选项。让我们一起看看鲜丰究竟如何逐步破局。

鲜丰水果,创始于1997年,历经25年发展史的鲜丰水果,目前已成为一家集新零售、智慧冷链物流和供应链B2B平台的全球化企业,是全国知名水果连锁企业之一。目前全国门店数超2200家, 并拥有23个共计48万方的现代化冷链仓储中心。

随着外部环境的变化,2021年初鲜丰水果数字化转型再次加速,短短几个月时间,研发团队人员扩张2倍有余,一些问题开始暴露:

  • 研发基础设施不完善,也缺乏相关领域的专业人员,需投入的人力及时间成本很高,且见效慢。
  • 很多环节感觉有问题,但是不知道如何观测,也不知道比较好的实践是什么。随着公司在产研侧的投入越来越大,更快、更好地交付业务价值的诉求也愈发紧迫。

简单、快速地提升产研团队的交付质量和交付效率,成为了支持组织业务创新的必选项。让我们一起看看鲜丰究竟如何逐步破局。

一、梳理流程,发现问题

解决问题,前提得知道问题在哪儿。

鲜丰水果研发负责人皮雪锋深知团队内部缺乏专业的研发转型人士,要想尽快推动转型落地,必须请外援。皮雪锋综合考虑成本、云产品集成性、功能全面性和易用性,最终选择了阿里云云效DevOps平台,也因此结识了由业内资深研发转型专家何勉带领的阿里云云效最佳实践团队,邀请他们对鲜丰水果整个研发流程进行端到端调研,帮助明确团队各个环节中碰到的问题。

鲜丰水果办公室研发流程梳理的便签贴满了透明墙

云效最佳实践团队和皮雪锋团队,经过梳理把问题归纳为两类。

1、端到端产研协作问题

  • 散装的产研协作工具带来的高协作成本和数据孤岛问题。

产品经理的PRD文档有的存在语雀、有的使用钉钉文档、有的则直接在本地,开发使用gitlab,测试却在xmind上维护用例和测试计划。

  • 缺乏统一、透明的协作流程导致的交付资源浪费、交付进展不清晰和交付质量差的问题。

产品无法无法及时了解需求的进展,研发是否遇到瓶颈,上线以后问题集中暴露,返工率极高。

2、工程交付能力和交付质量问题

先明确工程问题定义:把接受一个开发任务后,进行代码编写、联调、测试、集成,直到部署上线称为一次应用变更,整个变更过程中的问题均称为工程问题。

经过梳理分析,鲜丰的工程问题主要有3个:

  • 变更过程不顺畅,各个角色的等待、冲突多。

测试角色与开发角色关注在不同分支上,分支的管理依赖开发角色手工操作,由于双方的步调不一致,导致分支管理成本高,沟通成本高。

  • 交付质量严重依赖测试手工验证。

在当前的CI/CD流程中,没有内建的快速质量守护能力,必须依靠线下测试角色的手工验证,导致质量反馈滞后。

  • 云原生应用架构下的部署运维依赖少数专家。

鲜丰的应用架构已经全面转向无状态,基础设施全面转向云原生,但与此同时,对应用的部署和运维能力提出了新的要求,这些能力依赖少数几个专家。鲜丰希望能把这些实践经验沉淀下来,让每个研发都可以进行应用的部署和运维。

二、“三步走”解决问题

基于上述关键问题,鲜丰水果在阿里云云效最佳实践团队的建议下,实施了“三步走”的策略,明确了团队效能提升目标,并建立了相应的流程和机制,跑通以应用为核心的持续交付实践,实现了研发的“小步快跑”。

第一步,拉通跨职能团队达成目标-反馈闭环共识

由于工具链分散以及协同流程不透明带来的协同效率低、交付慢等问题,皮雪锋首先拉通了以业务目标为导向的跨职能团队,包含产品、设计、开发和测试在内,并明确每个跨职能团队的效能目标为提升交付效率和质量。为了让团队在执行落地的过程中更加清晰,做到“1+1>2”的合力效果,团队共识后皮雪锋给团队制定了两个阶段性目标:

  • 交付效率目标,主要指缩短需求开发周期,需求提交给开发后,85%的需要在两周内能上线;
  • 交付质量目标,明确开发准入和开发进入提测的标准,持续降低缺陷和线上问题的数量下降20%。

鲜丰在内部成立了的跨职能团队人员构成

在明确了团队成员的组成后,进一步明确了需求的整体交付过程,尤其是从效能视角,需要建立交付效能反馈闭环的机制。

经过讨论,最终确立的机制如下:从对齐业务目标出发,定期进行业务规划,基于业务规划进行对应的需求评审和研发排期,团队通过双周迭代或单周迭代进行需求开发、测试和验收。在这个基础之上,还通过建立每月规划、每周排期和每日站会,对齐规划、计划和进度。

整体交付流程

关于需求的交付周期和开发周期也做了明确的定义,如下图,需求交付周期从“已选择”到“已发布”,需求开发周期从“待开发”到“待发布”,在实际落地过程中,开发周期的终点会算到“已发布”,这样更能体现业务的视角。

第二步,基于共识确定流程和机制

1、需求流转机制和状态共识

通过对团队现状的调研,明确团队协作过程中的问题后,有针对性地设计出需求的流转状态和流转机制,并与团队成员达成共识。共识的背后是为了建议统一的认知和沟通语言。

2、拉通和可视化端到端的业务价值流

在明确需求流转状态和流转机制后,需要把机制和共识在云效上进行落地。用户价值驱动:各团队基于需求进行协作,每个需求都需要关注用户价值,一方面需要明确用户是谁,目标是什么,另一方需求需要被拆分到小颗粒度(一个需求开发测试完成要在两周内),当然对于小需求需要达到可测可发布。

前后职能拉通:在需求的整个流转机制中,需要关注需求阶段、开发阶段、测试阶段和发布阶段,需要全流程打通,拉齐各个阶段的角色一起协作,让整个协作过程顺畅和高效。

左右模块对齐:在开发中,需求会被拆分为开发任务。往往一个需求会被拆分为前端的开发任务和后端的开发任务,有时,后端的开发任务还是拆分到各个不同的模块。此时,需求下的各个开发任务,需要对齐接口,对齐联调和测试时间。

业务价值流在云效产品上的落地

3、明确各阶段准入规则,形成内建质量机制

需求的工作流明确后,接下来是需要明确需求流入各个状态的准入规则,不但要让需求能顺畅流转,更需要高质量的流转。同时从内建质量的视角出发,需求的质量不是靠最后环节的把关,而是需要从源头上就明确质量要求,让各个环节的质量都能达到明确的要求,直到最后高质量地交付。

我们会明确定义各阶段的流转规则,尤其是需求准入开发和准出开发的规则,因为这两个是产品、开发和测试这三个角色的需求抛接过程,而需求的抛接过程是最容易出问题的。

4、明确需求优先级机制

明确需求优先级机制在团队共识环节特别重要,因为需求优先级的高低代表价值的高低,价值的高低是直接和目标强相关的。在实时落地中,发现团队排入迭代的需求优先级都是紧急的,而没有明确排出优先级的顺序来。

咱们需要有一个按照绝对优先级排序的需求列表,最高优先级的需求要能被最先交付,同时还方便团队对需求的优先级进行积极的挑战,最终形成最合理的需求优先级列表。

5、明确进入开发后的需求责任人

进入开发中的需求,需求Owner需要负责协调把需求拆分成任务,并需协调至需求开发完成到提测,测试和发布完成为止。一方面让进入开发的需求有专人负责,另一方面也培养团队成员的责任感。

6、形成月规划、周排期和日站会的节奏

建立整体的节奏,形成月规划、周排期和日站会的节奏,同时各个是和需求的状态有紧密的集合的。

通过规划后的需求,需求状态会更新到“已选择”。通过排期后的需求,需求状态会更到“待开发”。通过站会后需求,需求的状态会更新到最新。

第三步,实践以应用为核心的持续交付

在工程方面,基于当前鲜丰水果的现状,皮雪锋决定全面拥抱以云原生应用为核心的工程实践方法,具体来讲,主要有两点:

1. 制定基于特性分支的研发模式,并落地到应用的变更流程中

为了保证变更过程中各角色的协同效率,结合团队实际情况,鲜丰决定去除测试分支,采用类似特性分支的研发模式,只保留一条长期分支,其分支模式类似下图:

基于该分支模式,鲜丰将master分支设置为保护分支,通过应用维度的云效流水线定义和串联整个流程,避免手工的部署和分支管理操作,保证所发即所测。其应用流水线模板如下:

上述流程按应用落地到云效AppStack的发布流水线中,类似下图:

2. 以云原生应用为核心聚合编排、环境、监控和研发流程

鲜丰从前两年开始进行云原生应用架构的转型,研发团队中只有很少的SRE(site reliability engineer),负责制定整体的研发和运维规则,应用的部署运维都由一线研发负责,但之前一直缺乏一个研发视角的工具平台,将应用研发相关的资源和操作都聚合起来。而这刚好是云效AppStack应用交付平台的设计初衷。为此,AppStack开启公测后,鲜丰便第一时间开始了试用,并逐渐把所有应用都搬了上来。

从上图可以看出,研发团队不直接操作云资源,对资源的操作都可以通过操作AppStack的应用环境进行,一方面更符合云原生研发的习惯,另一方面也更为安全。

当然,工具只是云原生转型的一部分,鲜丰的云原生转型包含了技术架构、部署架构和工程实践3个方面。

2.1 在技术架构上,做到每个应用可以独立地部署、验证和运维,并充分利用云原生基础设施提升弹性和韧性。

鲜丰的研发基础设施全面上云,基于云资源和开放标准来构建应用,主要采用了以下云产品:

  • 阿里云ACK:完全兼容K8S且免运维,无论生产还是测试环境的应用容器都承载在其上;
  • 阿里云RDS等数据库产品:遵循开源协议标准(如MySQL),可以无缝迁移,方便运维,且性能更好;;
  • MSE NacOS:开源的配置中心NacOS的商业版本;
  • 阿里云ARMS:一站式的可观测性平台,主要采用其中的k8s监控和应用监控,也可以集成RDS等的监控,对Java应用无侵入;

在选型的时候,鲜丰充分考虑了标准的开放性,保证应用可以无修改地承载在不同的云服务商上。

2.2 在部署架构上,做到每个应用一套编排作用于多套环境,环境差异通过变量来体现,做到镜像与配置分离。

鲜丰对部署架构的期望是:一个应用定义一个部署架构,不同的环境的差异通过变量区分,一个镜像可以部署到多个环境中,镜像内部不保留环境相关配置。为此,鲜丰基于AppStack采用了如下的实践方式。

首先,SRE定义企业的编排模板(如包含一个Service、一个Deployment)。

其次,在每个应用中,应用负责人选择该模板定义自己的部署编排,解决环境间有差异的地方定义变量来解决。

第三,应用负责人定义不同的变量组以适应不同的环境。

第四,应用负责人将变量组绑定环境。

最后,研发团队直接在环境上进行部署和运维操作。

2.3 在工程实践上,做到研发自发布、自运维,但SRE又能在全局上进行权限和策略的配置和管控。

鲜丰将研发角色分为应用负责人、开发、测试3类,以及一个企业级的SRE角色,SRE为其他每个角色配置对应的权限。

SRE为每个角色定义不同环境的操作权限,开发和测试角色可以部署和运维开发测试环境,但不能操作生产环境;只有应用负责人可以执行生产环境的部署和运维。

三、效能提升效果

开发周期缩短

经过三个月的落地,鲜丰水果的产研团队已经能够实现85%的需求两周内发布上线。

在这个指标制定/实现的过程中,也有一些小插曲。

一开始我们把开发周期的“85线”定为两周的时候,有产研同学会问,需求的交付时长不是和需求的大小强相关吗?是的,我们跟产研团队会先达成一个共识,即什么是一个需求?我们定义需求的标准是可独立交付和验收测试,在此基础上,颗粒度越小越好。

下图是鲜丰水果转型三个月之后的开发周期的统计图表,通过下面这个图表,我们不难看到,该试点团队在二月份交付的需求中,已经有85%的需求开发周期在13天以内,达到了我们预设的两个周的目标。

另外通过这个图表,我们也能看到一些其他的问题,比如还是出现了需求批量交付的情况,没有做到单需求持续发布。

相对理想的需求交付周期图:

平均交付周期:10天(两周以内)

期望的散点分布:

  • 纵向上向下集中----响应能力及可预测性提升;
  • 散点密度提高----提升交付效率;
  • 横向上更均匀分布----持续交付;

交付质量提升

经过三个月的落地,鲜丰水果的产研团队的线上问题数下降20% ,并且研发模式有根本性的变更。

前期,鲜丰水果的产研团队采用类似小瀑布的开发模式。团队集中设计、编码,引入缺陷,但并未即时地集成和验证。缺陷一直掩藏在系统中,直到项目后期,团队才开始集成和测试,缺陷集中爆发。越到后期发现的缺陷,修复难度大幅提升,修复成本大幅增加。

经过对现状问题的分析,团队开始向持续交付模式演进。在整个迭代过程中,通过上面的“三步走”策略,基本实现了“单应用部署,单需求交付”,团队以小粒度的需求为单位开发,持续地集成和测试它们,即时发现和解决问题。缺陷库存得到控制,系统始终处于接近可发布状态。这一模式更接近持续发布状态,团队对外的响应能力随之增强。

四、传统企业研发转型建议

经过三个月的实践落地,鲜丰水果的产研团队实现了研发流程的数字化转型,达到了预期的研发效率提升的目标。但是仍然有一些问题需要团队持续改进、提升,如从业务需求开始的整个业务监控的闭环建设,以及测试自动化能力的提升等等。

鲜丰水果作为“传统行业”研发转型“数字化”的新零售代表,其在转型中碰到的一些问题也是很多类似企业,已经遇到或者将要遇到的,这里我们做一个简单的小结,希望能够给有相似问题的企业以帮助:

  • 团队共识很重要。在鲜丰水果整个落地过程中,不管是一开始指标的确立,还是后续诸如流程、规范等的设定,让整个团队能够共识,达成理解一致是非常重要的一环。譬如我们为什么要看这个指标,什么是需求,需求完成的定义又是什么等等,只有团队真正共识,才能确保后续整个流程的顺畅。
  • 业务驱动是根本。研发的目的是为了业务价值的实现,所以通过业务需求拉通端到端的交付过程,对齐各个功能开发的工作,才能保证我们是以“用户”为目标在工作,最后的产出才是有价值的。
  • 拥抱云原生。云原生的技术栈已经成熟,同时随着业务的快速发展,不管从资源利用率、人力成本、可用性还是响应速度上,传统的基础设施构建方式已经很难满足企业发展的诉求,适时的“拥抱云原生” ,提高业务的灵活性以及快速响应的能力也变得愈发重要。

原文链接

本文为阿里云原创内容,未经允许不得转载。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/511124.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

打通源码,高效定位代码问题|云效工程师指北

简介:为了帮助企业和团队挖掘更多源代码价值以赋能日常代码研发、运维等工作,云效代码团队在大数据和智能化方向进行了一系列的探索和实践(例如代码搜索与推荐),本文主要介绍我们如何通过直接打通源代码来提高研发与运…

Nreal中国AR眼镜发布会:正式推出Nreal X和Nreal Air 售价2299元起

2022年8月23日,全球领先的消费级AR眼镜品牌Nreal在京召开中国首场AR眼镜发布会,面向中国市场正式推出三款硬件产品,其中包括两款AR眼镜:全球首款眼镜形态、探索增强现实技术无限场景应用的全功能AR眼镜——Nreal X;全新…

大数据时代下的App数据隐私安全

简介:随着信息技术快速发展,大数据为我们带来信息共享、便捷生活的同时,还存在着数据安全问题,主流商业模式下APP面临新的挑战。工信部持续开展APP侵权整治活动,进行了了六批次集中抽检,检查了76万款APP&am…

基于 Mesh 的统一路由在海外业务的实践

简介:本文主要介绍我们最近在利用 Service Mesh 架构解决海外业务问题中一些实践和价值探索。我们在海外业务引入 Mesh 架构过程中,充分利用 Istio 的基于 yaml 来描述和定义路由的抽象能力,制定了企业流量治理标准,并将集团海外业…

中国RISC-V机遇与变革下,赛昉科技发布两款高性能新品

8月23日,专注于RISC-V芯片研发的赛昉科技举办2022新产品发布会,发布两款重磅新品:全球首款量产高性能RISC-V多媒体处理器——昉惊鸿7110(JH7110),和全球性能最高的量产RISC-V单板计算机——昉星光 2&#x…

小米电商 Apache Dubbo-go 微服务实践

简介:2021 年是小米中国区电商部门变动调整较大的一年,小米中国区早期电商、服务体系建立在 Go 语言构建的微服务体系之上,由内部自研的 Go 语言微服务框架 koala 支撑起数以千计的微服务应用。随着业务的发展,新零售体系的成立以…

RocketMQ 端云一体化设计与实践

简介:本文首先介绍了端云消息场景一体化的背景,然后重点分析了终端消息场景特点,以及终端消息场景支撑模型,最后对架构和存储内核进行了阐述。我们期望基于 RocketMQ 统一内核一体化支持终端和服务端不同场景的消息接入目标&#…

计算机死机的时候,它在干什么?

作者 | 轩辕之风来源 | 编程技术宇宙今天花几分钟跟大家分享一个很有意思又能涨知识的问题:电脑死机的时候到底在干什么?电脑死机,应该每个接触计算机的小伙伴都经历过吧。尤其是早些年,电脑配置还没现在这么高的时候,…

交付铁三角的故事之兵戎相见

简介:大家好,交付铁三角带着全新的故事来啦!一直被应用交付难题所困扰的他们这次又遇到了新的难题,售前大佬的一句客户资源规划缘何让开发铁子暴怒,交付小锤的劝架为何致使自己的交付团队陷入这场漩涡之中,…

一位“老程序员”的反思:C、Python、Java 不可兼得,专心学好一门编程语言就行!...

摘要:大多数程序员在其职业生涯中,接触到的编程语言不止一种,但主要掌握并运用的多数只有一门。那么在数量繁多、适用领域各不相同的编程语言中,哪一门更适合你来学习呢?“老程序员”Eleanor Berger 总结了这些年来他对…

高效使用Java构建工具|Maven篇|云效工程师指北

简介:高效使用Java构建工具|Maven篇。众所周知,当前最主流的Java构建工具为Maven/Gradle/Bazel,针对每一个工具,我将分别从日常工作中常见的场景问题切入,例如依赖管理、构建加速、灵活开发、高效迁移等&am…

布局云与边缘之后,Akamai 为何加码安全领域

作者 | 宋慧 出品 | CSDN 云计算 随着云的深入和普及,云上的安全也变得愈加重要。CSDN 系列技术直播栏目《大咖来了》就曾重点讨论 云上安全的攻防之道 ,以及云原生的安全发展。 最近,发明 CDN 技术的资深技术厂商 Akamai,继增强…

Dubbo-go 服务代理模型

简介:HSF 是阿里集团 RPC/服务治理 领域的标杆,Go 语言又因为其高并发,云原生的特性,拥有广阔的发展前景和实践场景,服务代理模型只是一种落地场景,除此之外,还有更多的应用场景值得我们在研发的…

探索AI视觉技术新应用,夸克扫描王首推“离线模式”端侧AI算法提升隐私安全

手机扫描正在超越传统扫描仪,给大学生和职场人带来更高效、更便捷的信息服务体验。 在基于手机相机功能的搜索行为中,大学生的学习场景占比超过一半。 手机扫描的“离线模式”,让夸克成为第一个将扫描AI算法上端的App。 各大高校开学在即&…

作业帮云原生降本增效实践之路

简介:目前,作业帮已经和阿里云有一个关于 AEP 的 tair 方案的结合,在新的一年希望我们有更大规模的落地。文章里讲得比较多的是关于降本做的一些技术改进,其实在降本增效这里面还有很大一块工作量是运营,成本运营我们也…

基于 Serverless 打造如 Windows 体验的个人专属家庭网盘

简介:虽然现在市面上有些网盘产品, 如果免费试用,或多或少都存在一些问题, 可以参考文章《2020 国内还能用的网盘推荐》。本文旨在使用较低成本打造一个 “个人专享的、无任何限速的、如 Windows 体验的私有云盘”。 作者 | 西流…

Apsara Stack 技术百科 | 数字化业务系统安全工程

简介:数字化平台已经与我们生活紧密结合,其用户规模庞大,一旦系统出现故障,势必会造成一定生活的不便。比如疫情时代,健康码已经成为人们出门必备的条件,一旦提供健康码服务平台出现故障,出行将…

支撑百万级传感器的延时队列

文/升哲科技 刘鹏 摘要:本文主要描述升哲科技在打造物联智慧城市平台过程中关于如何实现延时队列服务的技术选型经验、延时队列服务的架构设计以及延时队列的底层细节实现原理。 背景 升哲科技是一家物联网与人工智能领域的国家高新技术企业、独角兽企业。 要打…

深度解析|基于 eBPF 的 Kubernetes 一站式可观测性系统

简介:阿里云 Kubernetes 可观测性是一套针对 Kubernetes 集群开发的一站式可观测性产品。基于 Kubernetes 集群下的指标、应用链路、日志和事件,阿里云 Kubernetes 可观测性旨在为 IT 开发运维人员提供整体的可观测性方案。 作者:李煌东、炎…

系列解读SMC-R:透明无感提升云上 TCP 应用网络性能(一)| 龙蜥技术

简介:已有的应用若想使用RDMA技术改造成本高,那么有没有一种技术是不做任何改造就可以享受RDMA带来的性能优势? 文/龙蜥社区高性能网络SIG 引言 Shared Memory Communication over RDMA (SMC-R) 是一种基于 RDMA 技术、兼容 socket 接口的内…