上海品茶

您的当前位置:上海品茶 > 报告分类 > PDF报告下载

工程&研发 - 3 - 毛远俊 - 得物前端monorepo技术架构与实践.pdf

编号:155682 PDF 43页 11.17MB 下载积分:VIP专享
下载报告请您先登录!

工程&研发 - 3 - 毛远俊 - 得物前端monorepo技术架构与实践.pdf

1、得物前端monorepo技术架构与实践远俊得物客服前端负责远俊深耕前端余年,专注于业务,曾在唯品会、蘑菇街和阿巴巴作过21年加得物,前主要负责得物客服前端中后台体系的建设0102030405背景:散乱且低效的代码复基:统多端的分模型架构:仓研发流程的设计迁移:平滑式的迭代与迁移并存收益:仓带来的成效什么是monorepo?将多个项的源代码、依赖和构建配置等都放在个仓库中管理 仓库中的项可以相关,也可以完全独GitlabAPP1APP2APP3APP4APPAPP1APP2APP3APP4polyrepomonorepo背景:散乱且低效的代码复得物前端架构的现状业务发展快:团队规模从10+到10

2、0+,应数量从10+到150+代码复难:不同业务域中应重复功能模块代码重复多,难复基础能升级难:通的npm组件包依赖,升级进度很难把控构建问题定位难:不同应构建脚本不致,出现问题定位难快&难协作效率低下:不同团队代码格不致,轮岗上成本仓monorepo技术调研国外最佳实践 Google:Piper+Citc Meta:Mercurial+VSCode pnpm workspace/yarn workspace lerna/rush/changesets turborepo/nx workspace社区常的解决案依赖管理发包管理命令脚本管理pnpm workspace+changesets+tu

3、rborepo基:统多端的分模型 如何管理不同端及不同业务的代码件 如何实现仓代码的按需拉取如何管理不同端及不同业务的代码件.deps:不同端的依赖,B端、C端和Node服务 ah5/anode/apps:不同端的录,存放不同业务域应 packages:仓顶层通组件和功能依赖,包括组件、utils shell:不同端的构建脚本件 business:具体的业务域,如商家、客服 _share:当前业务域下通的基础能,包括组件、utils crm:具体应录如何实现仓代码的按需拉取git sparse checkout:稀疏检出,根据检出件配置下载所需要的件sparse-checkout配置件spar

4、se-checkout拉取代码步骤最终拉取的应录如何实现仓代码的按需拉取简化执步骤:命令具CLI+VSCode插件命令具CLIVSCode插件架构:仓研发流程的设计 权限管理 统的研发流程 单元测试 主研发流程权限管理-存在的问题仓下的代码是所有研发可的,研发可以改任何录下的代码 实习万不删除了核代码,提交了怎么办 不同业务研发改了不相关的代码,不提交了怎么办权限管理-解决案基本权限约束流程约束 权限 分保护 件Owner Git hook校验权限管理-基本权限约束Owner:代码仓库的所有者,般为TLMaintainer:代码仓库的维护者,般为TL/PMDeveloper:代码仓库的开发者,

5、般为研发员保护分研发本地没法直接提交release-*hotfix-*master权限管理-基本权限约束Gitlab专业版本提供了codeowners的功能,鉴于此功能的实现扩展了gitlab的功能:持录件Owner权限配置,在CR阶段会有件录权限卡点件owner权限卡点件owner配置权限管理-流程约束 pre-commit和pre-push两个钩函数会对件Owner权限做校验 pre-commit的校验必需的 pre-push的校验是必需的研发流程-存在的问题 每个迭代都有上百个开发分,如何让新建的分不冲突 每个业务域的迭代节奏不致,是仓维度还是应维度的部署发布 研发员技术能参差不,如何减

6、少上成本和保证研发体验 快速的迭代过程中,如何保证不同应的代码CR之间互不影响研发流程-解决案分命名规范统的构建脚本辅助的命令具CLI严谨的MR/CR流程研发流程-分命名规范 Dev分命名规范:feature-应标识-版本号-定义 测试分命名规范:test-应标识-版本号 发布分命名规范:release-应标识-版本号 热修复分命名规范:hotfix-应标识-版本号应标识是唯的研发流程-辅助的命令具安装应的依赖安装三的依赖installaddupdatestartbuildremove命令具dx简化流程、减少理解成本、提升研发效率dx install-sdx install vue-Spnpm

7、 install-filter monorepo-app/frontend-monorepopnpm install-filter monorepo-app/kefu-monitor-migrate.pnpm install vue-w-Spnpm install vue-S研发流程-统的构建脚本turbo.jsonpackage.jsondx build-e env应workspace依赖构建turbo build依赖解析/lint检测定义 buildmax build/vite build构建 build研发流程-统的构建脚本 统构建参数:sh cloud-build.sh-d custo

8、mer/kefu-xxx-kbench-e t1按应维度的发布,各业务应发布互不影响 统解压路径:./apps/customer/kefu-xxx-kbench/dist研发流程-严谨的MR/CR流程在CR阶段通过件owner确认,避免错改其他业务域代码带来的险研发流程-单元测试 组件源码依赖之后,如何确保组件的发布质量 研发迭代开发需求已经很忙了,还有时间写单元测试吗 研发发布流程中,如何集成动化单测卡点研发流程-单元测试覆盖率和分覆盖率组件发布检测组件单元测试组件/组件档构建组件同步物料市场上传组件档中组件发布消息同步publishpre-publishpost-publish组件发布流程

9、研发流程-单元测试AIGC辅助成在给 AI 的代码尽可能全的情况下不让关代码对 AI 产负影响避免含有 AK/SK 等关键信息的代码外发通过示例告诉GPT应该如何对些常复杂的代码逻辑编写单测 对运环境、依赖版本等添加提示词,约束 AI 产的结果将分析后的代码、prompt 等组合与当前项结构、代码进融合代码AST分析数据安全险校验向量化及加载模板添加规则调AI接格式化返回结果与现有单测代码合并研发流程-单元测试流程卡点Gitlab webhook Push eventCICD构建检测流线任务卡点配置研发流程-主研发流程频繁集成、持续集成减少分管理的复杂性master作为发布分releasema

10、sterreleasemaster转变研发流程-主研发临的问题 对研发的平要求较,如何让所有研发适应流程 频繁集成、持续集成给服务带来的压如何缓解 前后端的发布节奏不致,如何做好双端之间的协同 集成到master代码不定会在当前的release分发布研发流程-主研发流程集成到master代码不定会在当前的release分发布功能开关:能够动态的控制线上功能是否即时效前端配置平台Ifelse单元测试研发流程-主研发流程迁移:平滑式的迭代与迁移并存平滑式的迭代与迁移-现状 迭代和迁移同时进的时候,如何做到快速迁移 应迁移之后,如何确保应的功能在产环境不出问题平滑式的迭代与迁移-档与具提效平台配置修

11、改:迁移档+修改应配置修改:命令具dx平滑式的迭代与迁移-灰度环境验证研发测-功能灰度-同步测试-发布上线收益:仓带来的成效仓带来的成效接成果 业务应70+总代码数200万+总的commit数1万+物理空间占200M左右接效益 统了lint规范,减少上成本 统了研发流程,提升协作效率 更好的代码复,提升编码效率遇到的难点与挑战 幽灵依赖的问题 全局lock还是局部lock 动回合master给服务带来的压 CR过程中如何避免本次变更带来的扰 组件中peerDependencies依赖带来的多实例问题 Git元数据不断增加带来的git命令执效率问题内容回顾背景:得物前端平台的架构现状以及前期的技术调研基:仓的分模型以及代码按需拉取的实现架构:仓的权限管理、研发流程、单元测试和主研发的设计迁移:平滑迁移的流程与线上质量的保证收益:前迁移的仓数据现状以及带来的收益关于我们稀掘:https:/ 谢

友情提示

1、下载报告失败解决办法
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站报告下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。

本文(工程&研发 - 3 - 毛远俊 - 得物前端monorepo技术架构与实践.pdf)为本站 (张5G) 主动上传,三个皮匠报告文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三个皮匠报告文库(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。
会员购买
客服

专属顾问

商务合作

机构入驻、侵权投诉、商务合作

服务号

三个皮匠报告官方公众号

回到顶部