如何设计实现中后台搭建系统 - Paas 服务

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. 如何设计实现中后台搭建PaaS平台 阿⾥里里巴巴 - 淘系技术部 - ⻜飞冰 - iceluna Created By 樊健辉(⽉月⻜飞) 2020.03.20
2. 个⼈人介绍 樊健辉(花名:⽉月⻜飞) 创业 • 阿⾥里里前端技术专家 • ⻜飞冰搭建产品iceluna创始⼈人 • 集团中后台搭建协议标准规范负责⼈人 • ⼊入职7年年,带领营销中后台团队,贴合业务探索中后台搭建平台建设 聚划算 2013 天猫 2016 PC详情 ⽆无线详情 淘宝 2019 营销玩法团队TL 玩法、互动狂欢城 现在 营销中后台团队TL 中后台业务/Iceluna
3. 话题介绍 前端搞搭建 ⾯面向运营 ⾯面向研发 可视化配置 低代码开发 1 Iceluna产品 ⽆无线⻚页⾯面搭建 h5/Rax/⼩小程序 中后台系统搭建 ⽆无线模块搭建 2 PaaS平台 no-code low-code
4. 分享⼤大纲 1. iceluna产品介绍 2. iceluna架构设计 3. 中后台搭建基础设施建设 4. 提供搭建服务的PaaS平台建设 5. 总结&展望
5. 1.0 产品介绍
6. 1.1 产品背景 ❖ 中后台技术之殇 业务量量⼤大,前端紧缺,⼤大量量系统依赖后端/外包/isv负责研发,由于 前端⼯工程环境复杂,技术迭代快,⻔门槛⾼高,在效率/质量量/体验/可维 护性等⽅方⾯面存在较多问题,对于如何赋能?如何改善协作模式?传 统源码模式已不不能满⾜足业务发展的诉求。 ❖ 低代码开发 低代码开发模式的崛起 据Forrester市场调研结果,通过低代码开发模式可带来数倍甚⾄至10 倍以上研发效率的提升。对于如何提效?通过低代码搭建中后台系 统,给了了我们⾜足够⼤大的效率提升想象空间。 ❖ 扩展能⼒力力 搭建泛滥后的收敛和统⼀一 阿⾥里里内部各BU针对不不同业务场景构建有数⼗十个低代码搭建产品,投 ⼊入成本巨⼤大,能⼒力力完善程度不不⼀一,存在⼤大量量的底层能⼒力力重复建设和 低⽔水平能⼒力力竞争。如何收敛和统⼀一?完善搭建基础设施,统⼀一提供 搭建服务的运⾏行行和开发环境,势在必⾏行行。 可视化配置 ⽆无需编码完成 中后台系统常⽤用功能 少量量编码扩张 更更多功能
7. 1.2 产品定位 ❖ iceluna的三层定位&⽬目标: 1. 由淘系技术部研发,⾯面向全体研发⼈人员可⽤用 改变⽣生产关系,提升⽣生产⼒力力 赋能 的中后台通⽤用搭建产品。 2. 集前端应⽤用⼯工程创建、开发、调试、发布全 降低研发成本 链路路⼀一体化的 低代码开发平台。 3. 建设搭建基础设施,基于标准搭建协议⽣生产 搭建物料料,为各业务场景提供搭建服务的运 ⾏行行和开发环境的PaaS平台。 孵化领域产品 提效 搭建⽣生态
8. 1.3 产品现状 ❖ 赋能: 活跃⽤用户数1000+,包含前端、后端、外包、测试 测试 外包 10% 7% ❖ 提效: 应⽤用440+,⻚页⾯面6000+,覆盖阿⾥里里多个部⻔门中后台应⽤用研发,
 ⼈人均研发效能提升200%左右(霍尔斯特德软件复杂度算法模型测算) ❖ 搭建⽣生态: 提供完备的搭建基础设施服务,已孵化8+业务场景定制的搭建编辑器器 后端 44% 前端 38%
9. 2.0 架构设计 搭建 产品 中后台通⽤用搭建 图表搭建 PaaS 服务 表单搭建 Rax搭建 ⼩小程序搭建 智能搭建 审批流搭建 研发中⼼心 开箱即⽤用的PaaS平台服务 站点中⼼心 插件⽣生态 低代码搭建编辑器器 搭建 基础 设施 (⻣骨架、插件、控件,编排模块,渲染模块…) 后端 服务 物料料⽣生态 组件规范 ⼯工程脚⼿手架 GUI⼯工具 应⽤用中⼼心 物料料中⼼心 中后台搭建描述协议 Schema 视觉规范 … CLI命令⾏行行 nodejs (midway) 国际化 数据中⼼心
10. 2.1 功能模块设计 搭建基础设施 基础建设 编辑器器内核 搭建协议 ⻣骨架能⼒力力 视觉规范 平台服务 插件⽣生态 研发中⼼心 物料料⽣生态 PaaS能⼒力力 站点中⼼心 应⽤用中⼼心 数据中⼼心 模型驱动 组件搭建 编辑器器定制 Portal⾸首⻚页 变更更管理理 站点数据 主题定制 图像识别 研 区块搭建 多⼈人协作 站点管理理 ⻚页⾯面管理理 应⽤用数据 组件规范 插件能⼒力力 数据驱动 模版搭建 多分⽀支开发 应⽤用管理理 低代码组件 ⽤用户数据 ⼯工程脚⼿手架 控件能⼒力力 逻辑编排 创建实例例 代码回滚 组件中⼼心 NPM组件 效能衡量量 命令⾏行行⼯工具 编排模块 流程编排 创建组件库 云端构建 区块中⼼心 导航设置 物料料数据 GUI⼯工具 渲染模块 ⼤大纲树 物料料发布 发布/存储 模板中⼼心 发布管理理 性能数据 … 国际化⽀支持 物料料⾯面板 物料料共享 物料料托管 ⽂文档中⼼心 … … … 属性⾯面板 … Socket通信 … 事件⾯面板 样式⾯面板 … 发 模 式 升 级 Gitlab存储 … ⻩黄⾊色模块 为接下来重点讲解内容
11. 2.2 研发流程设计 站点管理理员 (前端负责⼈人) 站点基本信息 应⽤用默认配置 编辑器器默认配置 (名称、部⻔门、logo等) (gitlab组、埋点、主题等) (主题、⾯面板插件、快捷键等) 物料料默认配置 (组件库、区块库、模板库等) 基线 迭代 应⽤用开发者 (前端/后端/外包/ISV) 页面 创建应用 物料 发布 调试 低代码搭建 创建分支 1. 应用基本信息录入 1. 多分支管理 1. 界面可视化布局 (WYSIWYG) 1. TNT跨域调试方案 1. 应用、组件、编辑器发布能力 2. 3. Gitlab 项目打通 IDE环境生成 2. 多人协作 2. 3. 4. 5. 样式属性配置,数据绑定 业务逻辑代码编写 低代码及NPM组件生态互通 区块、模板物料互通协议 2. 数据Mock 2. 3. 4. 开发环境去中心化 组件依赖分析 版本控制&CDN发布
12. 3.0 中后台搭建基础设施建设 物料料中⼼心(fusion) 物料料研发 源码 物料料 《物料料协议》 标准⼯工程规范 源码物料料: 源码组件 源码区块 源码模版 搭建物料料: 搭建组件 搭建区块 搭建模版 专业前端 物料料流通 源码解析 低代码搭建编辑器器(iceluna) 搭建组件 描述⽂文件 《搭建组件描述协议》 源码物料料低成本接⼊入 搭建 物料料 编排模块 ⻣骨架 主题 渲染模块 插件 控件 物料料丰富度 沙箱隔离 调试能⼒力力 多端适配 ❖ 搭建基础设施⽬目标: 1. 2. 3. 4. 5. 6. 搭建描述协议 - 标准规范 低代码编辑器器 - 开发⽣生态 低代码编辑器器 - 多端适配 低代码编辑器器 - 核⼼心能⼒力力 低代码编辑器器 - 物料料⽣生态 协同模式变⾰革 可定制 可扩展 开 发 ⽣生 态 前端/后端/外包/ISV 《搭建描述协议Schema》 icejs+ 互转能⼒力力 ⻚页⾯面 Schema 导出源码 线上React渲染
13. 3.1 搭建描述协议 - 标准规范 - Schema ❖ 版本化、语义化、渐进性描述 协议有版本控制,语义清晰,简明易易懂,可读性强; 从⼩小往⼤大渐进性的描述组件、区块、⻚页⾯面、应⽤用,实现递归嵌套 ❖ 不不引⼊入新概念、可与标准源码互转 不不引⼊入新的语法概念,代码部分纯js语法,降低上⼿手⻔门槛; 明确每⼀一个属性与源码对应的转换关系,可⽣生成跟⼿手写⽆无差异的⾼高质量量 标准源代码。 ❖ 可扩展、可流通、⾯面向多端 ⽀支持第三⽅方npm包引⼊入,增强协议描述能⼒力力的扩展性。 产物能在不不同搭建产品中流通,不不涉及任何私域数据存储。 不不仅能⾯面向React,还能⾯面向⼩小程序、vue、Rax等移动端技术栈。 ❖ 国际化⽀支持
14. 3.2 低代码编辑器器 - 开发⽣生态 搭建编辑器器框架 iceluna-ide ⻣骨架 skeleton 主题 theme 功能插件 addon … 编排模块 iceluna-canvas 多设计模式 designMode 物料料增删 materialAdd/Remove 物料料选中 materialSelect 物料料拖拽 materialDnd  消息处理理 msgManage 快捷键注册 shortCuts 下钻编辑 drillDownEdit 浮动⼯工具条定制 toolbar 渲染模块 iceluna-engine React虚拟DOM树构造 virtualDOMCreate 循环/条件渲染处理理 loop/condition 组件属性解析 propsParse 表达式解析 expressionsParse 异步数据流处理理 dataSource ⽣生命周期 lifeCycles ⾃自定义⽅方法构造 methods 状态管理理 state 编辑器器内核 iceluna-core 消息通讯 状态管理理 配置解析 ⻣骨架加载 插件注册 编辑器器初始化 国际化 ❖ 架构分层 由⾥里里⽽而外、⾃自下⽽而上的分层实现 可根据业务场景定制单层实现 ❖ 模块化解耦 均为独⽴立npm包, 原⼦子化服务能⼒力力 低代码编辑器器整体开放 编排引擎独⽴立开放 渲染引擎独⽴立开放 ❖ 扩展能⼒力力 & 开发⽣生态 提供开发脚⼿手架 & 命令⾏行行⼯工具 ⻣骨架可定制、可配置 插件可定制、可配置 控件可定制
15. 3.3 低代码编辑器器 - 多端适配 … 中后台搭建 数据报表搭建 消费者端搭建 淘宝⼩小程序搭建 ⽀支持不不同技术体系的搭建产品 低代码编辑器器 技术体系适配层Adapter React渲染模块 Vue渲染模块 Rax渲染模块 渲染模块内核 ⼩小程序渲染模块 …
16. 3.4 低代码编辑器器 - 核⼼心能⼒力力 ❖ 开箱即⽤用 提供全链路路⼀一体化的搭建服务 ⽀支持定制搭建编辑器器 ⽀支持定制业务主题⻛风格 ⽀支持多⼈人协作 ⽀支持多分⽀支并⾏行行开发 <iframe /> 画布区域 ❖ 安全沙箱隔离 编辑⻚页⾯面 与 编辑器器iframe隔离,互不不⼲干扰 ⽀支持编辑应⽤用 与 编辑器器独⽴立主题设定 ❖ 实时调试能⼒力力 画布渲染真实runtime 画布事件&数据实时⽣生效 & 实时调试
17. 3.5 低代码编辑器器 - 物料料⽣生态 物料料中⼼心(托管) 搭建模版: Fusion Pro 搭建区块: 表单 搭建组件: AntD Pro 列列表 Fusion组件 详情 Antd组件 ICE Pro 图表 图表组件 业务区块 ❖ 物料料低成本接⼊入 低代码搭建编辑器器(⽣生产) 视觉规范 区块搭建 模版搭建 物料料基础规范 组件实例例 搭建物料料规范 ⽀支持React组件npm包接⼊入 保持功能完整的属性配置能⼒力力 具备有良好的编辑体验 ❖ 搭建物料料流通 建设搭建物料料市场 形成类似iconfont的⽣生态机制 npm社区组件 搭建组件 组件库 国际化规范 接⼊入 源码组件 统⼀一标准,规范⽣生产 提升搭建物料料的可复⽤用性 业务组件 物料料流通 组件搭建 ❖ 统⼀一搭建物料料描述协议 功能组件
18. 4.0 提供搭建服务的PaaS平台建设 ❖ PaaS定位: 平台即服务 ( Platform-as-a-Service ),把 搭建编辑器器 的 运⾏行行和开发环境 作为⼀一种服务,提供给不不同业务场景下的搭建产品。 搭建 产品 PaaS 服务 搭建 基础 设施 中后台通⽤用搭建 编辑器器定制 效能数据 图表搭建 表单搭建 云端构建/发布/存储 Socket通信 Gitlab存储 ⼩小程序搭建 Rax搭建 多⼈人协作 多分⽀支开发 物料料托管 低代码搭建编辑器器 (⻣骨架、插件、控件,编排模块,渲染模块…) 智能搭建 代码回滚 审批流搭建 … 提供运⾏行行环境 … 插件⽣生态 搭建物料料⽣生态 提供开发环境
19. 4.1 搭建编辑器器定制服务 ❖ 提供给⽤用户以站点维度定制编辑器器, 按照编辑器器规范进⾏行行配置,云构建⽣生成。 云构建
20. 4.1.1 搭建编辑器器定制 - ⻣骨架定制 ❖ 编辑器器⻣骨架⽀支持布局定制,满⾜足不不同场景编辑器器布局诉求
21. 4.1.2 搭建编辑器器定制 - 主题定制 ❖ 借助基础物料料库主题包能⼒力力,提供编辑器器主题定制能⼒力力
22. 4.1.3 搭建编辑器器定制 - 插件定制 ❖ 通过插件化机制和开发脚⼿手架,实现编辑器器功能解耦,可插拔,可定制。 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. logo 搭建应⽤用信息 ⻚页⾯面切换 搭建协作者 设计模式切换 前进&后退 历史记录 编辑器器刷新 保存 预览 发布 组件树 组件库 区块库 ⻚页⾯面schema 应⽤用样式 应⽤用公共函数 应⽤用全局常量量 应⽤用信息配置 画布配置 ⽂文档 样式配置 属性配置 事件配置 数据配置 画布
23. 4.2 云端构建/发布/DB存储服务 云构建服务是iceluna低代码开发平台核⼼心链路路之⼀一,核⼼心将静态离散的schema⽂文件或配置⽂文件,转换成可运⾏行行 云构建服务是iceluna低代码开发平台核心链路之一,核心是将静态离散的schema文件转换成可运行的应用(组 的应⽤用(组件)程序代码,并提供Gitlab多分⽀支操作、程序构建及CDN、NPM部署能⼒力力。⽬目前⽀支持应⽤用(⽇日常/线 件)程序代码,并提供Gitlab多分支操作、程序构建及CDN、NPM部署能力。目前支持应用(日常/线上)、组 上)、组件(lowCode/ProCode)、编辑器器(画布/框架)3⼤大功能6种形态构建能⼒力力。 件(LowCode/ProCode)、编辑器(画布/框架)3大功能6种形态构建能力。 DB 应用 页面 Schema Git存储 + 组件 Schema DB存储 Iceluna iceluna 云构建 云构建服务 组件 NPM仓库 CDN 编辑器 编辑器器配置 编辑器器资源包 云构建服务 版本发布 CDN推送
24. 4.2.1 云端构建架构图 ❖ 去中⼼心化 应⽤用层 编辑器器1 编辑器器2 通信层 编辑器器3 编辑器器4 … 编辑器器主题定制 组件扩展 版本化控制 websocket双向通信 ❖ ⼀一键发布部署 编辑器器构建(去中⼼心化) 运⾏行行时 数据层 应⽤用/组件构建(⼀一键发布部署) 克隆隆⼯工程 依赖分析 权限管控 克隆隆⼯工程 主⼲干合并 ⽂文件⽣生成 Gitlab提交 冲突解决 依赖分析 npm包缓存 依赖安装 webpack构建 ⽂文件⽣生成 Gitlab提交 依赖安装 CDN发布 版本⽣生成 webpack构建 CDN发布 版本⽣生成 DB Gitlab CDN Tair ODPS 权限管控 依赖分析 合并主⼲干&冲突解决 webpack构建 CDN发布部署 ❖ 多系统打通 Gitlab存储/回滚 Tair构建并发锁 ODPS构建⽇日志
25. 4.3 多⼈人协作服务 ❖ iceluna多⼈人协同原理理:socket连接 + ⽂文件锁(⻚页⾯面锁 & 组件锁 & 公共⽂文件锁) socket与服务器器建⽴立连接 访问⽂文件(尝试获取锁) 返回(锁状态) Client 存储以⻚页⾯面id为key的⽤用户信息 获取⻚页⾯面⽂文件id为Key是否有⽤用户在编辑中 Server socket连接⼼心跳保活 Tair 主动失效的分布式乐观锁 ⽅方案 优点 缺点 典型案例例 编辑锁 避免覆盖 实现简单 ⾮非实时 实时要求不不⾼高 WIKI系统 diff-patch 多⼈人同时编辑 实现相对简单 ⾮非实时 易易冲突 GNU diff-patch
 Myer 算法 实时编辑 实现较复 杂 Google Docs ⼤大规模多⼈人协 同 实现复杂 钉钉⽂文档 OT技术 Operational Transformation 分布式OT Operational Transformation
26. 4.4 多分⽀支并⾏行行 ❖ 多分⽀支开发⽅方案: 1. 执⾏行行发布流程 2. 合并主⼲干代码 开始 ❖ 新建MR master->Branch 发布流程 - 冲突解决 3. 冲突判断 4. 冲突解决 5. 基线同步(GitToDB) 判断是否 有变化 6. 冲突解决流程结束 是 Accept Merge 判断是否 成功 是 冲突解决 否 否 冲突解决状态 结束 GitToDB
27. 4.5 代码回滚服务 离散数据 Git提交(DBToGit) 保存操作 ⽤用户应⽤用搭建 应⽤用源码⼯工程 数据库 Git提交(DBToGit) 1. ⽤用户在编辑器器进⾏行行应⽤用搭建 2. 保存操作执⾏行行DB⼊入库 3. ⽤用户进⾏行行发布(⽇日常/线上)操作 4. 将会通过读DB⽣生成⽂文件,并进⾏行行Git提交 基线同步(GitToDB) Git仓库 基线同步(GitToDB) 1. ⽤用户执⾏行行发布(⽇日常/线上)操作 2. 执⾏行行主⼲干合并流程 3. 如果主⼲干代码有更更新,执⾏行行GitToDB 4. 通过⽂文件读进⾏行行DB回写 可指定任意commit hash进⾏行行编辑器器应⽤用代码回滚服务
28. 4.6 搭建效能衡量量体系 衡量量标准: 霍尔斯特德软件复杂度测量量算法模型 Halstead complexity measures 计算公式: 研发效能 = 预计开发时⻓长/实际开发时⻓长 霍尔斯特德 复杂度模型 + 可视化 代码 操作1 操作n 实际开发时⻓长 ❌ d1 d2 预计开发时⻓长 d3 dn 实际开发时⻓长 = d1 + d2 + … + dn
29. 5.0 总结&展望 前路路总结: 中后台通⽤用搭建产品建设成本超⾼高,能很好的解决赋能&协作的问题,但研 发提效未达数倍甚⾄至10倍的预期,需要往模型驱动、智能搭建等nocode新 研发模式升级,或建设领域搭建产品矩阵来达成数倍提效的⽬目标。 展望未来: 致⼒力力于将iceluna打造为中后台领域的 hpaPaaS 平台(超⾼高⽣生产⼒力力平台) 如果志同道合,期待的你的加⼊入!
30. 团队⻛风采&招聘 淘系技术部 - ⾏行行业⼯工作台团队 - 招聘 请微信扫码联系!
31. Thanks!
32.

Home - Wiki
Copyright © 2011-2024 iteam. Current version is 2.139.0. UTC+08:00, 2024-12-23 12:41
浙ICP备14020137号-1 $Map of visitor$