揭秘vivo低代码平台的提效秘诀

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. 揭秘vivo 低代码平台的提效秘诀 王宁 | vivo互联网高级前端工程师 陈文洋 | vivo互联网架构师
2. 引言 对用户 图形化操作,容易上手 内置各种模板、组件,降低开发难度 可视化拖拽,开发效率高 后疫情时代 究竟需要什么样的新技术, 才能真正解放 IT 生产力! 低代码!!! 是一种可视化的应用开发方法 用较少的代码、以较快的速度来交付应用程序 对企业 缩短产品周期 节省成本,提高效率 维护便利,即改即用
3. 目录 后羿低代码平台的 提效秘诀 游戏中心低代码 探索与实践 01 前后端分离的低代码方案 01 背景介绍与痛点分析 02 自研高性能渲染引擎 02 如何搭建业务“低代码”平台 03 高效的可视化配置方案 03 成果展示与未来展望 04 千亿级内容投放 05 低代码如何与传统开发共存
4. Chapter 1
5. 平台名称「后羿」 定位 面向用户 支撑运营后台业务 高效高质量落地的 低代码平台 开发者 40+ 1600+ 45+ 服务部门 服务用户 产出项目
6. 后羿低代码平台的提效秘诀 前后端分离的低代码方案 1.1
7. 传统WEB开发 前后端分离 前端开发 前后端不分离 后端开发 UI 开始 开始 根据产品原型 设计开发 根据产品 原型设计 API文档 根据API文档 mock接口数据 功能接口开发 VS 开发 根据产品原型 开发业务逻辑 术业专攻、分工明确 分层明确、解除耦合 UI设计稿 整合数据 渲染模板 联调 测试 测试 交付 优势 交付 提升效率、缩短周期
8. 低代码方式开发 前后端不分离 WEB应用 页面、接口、逻辑、数据、鉴权等 产品思维 用户 低代码平台 小程序 各平台应用、接口、逻辑、数据等 应用一体化 适合非专业用户 Native应用 各平台应用、接口、逻辑、数据等 前后端分离 WEB服务 APP应用 BFF XxxSDK API网关 开发思维 用户 后端 低代码平台 认 证 服 务 权 限 服 务 存储 服 务 应 用 微 服 务 应 用 微 服 务 应用分层 服 务 适合开发者 ✔️ 后羿
9. 低代码实现方式 前后端不分离 灵活性差 可视化编辑器 存储/CDN DSL解释器 制品/源码 部署 拓展性差 可集成度较低 DSL/JSONSchema 前后端分离 解除耦合 可视化编辑器 DSL解释器 前端制品/源码 前端部署 灵活性较高 拓展性较好 存储/CDN DSL解释器 DSL/ JSONSchema 后端制品/源码 前端部署 可集成度较高 对开发友好 ✔️ 后羿
10. 后羿平台架构 运营平台 WEB 开发者平台 资源解析 路由 DSL转换 自定义组件管理 前 端 FormRender 自定义 组件 列表 表单 自定义 渲染器 上下文 自定义渲染器管理 TableRender 自定义流程节点管理 自定义交互 解释节点 动态交互 渲染引擎 ✔️ 后羿 BFF 资源发布、迭代 单页面/微应用 版本对比及回溯 APIProxy 监控 日志 前后端低码能力分离 术业专攻、分工明确 业务服务 后 端 服务 存储 平台服务 通用功能服务 开放服务 基础服务 文件服务 SSO/权限 消息通知 人群画像 实验…… 监控 调用链 基础监控 日志中心 业务监控 DB监控 Redis集群 MySQL主从集群 MongoDB主从集群 LPR磁盘缓存 分层明确、解除耦合
11. 后羿的分与合 通过可视化平台抹平用户群体认知和实现差异 开发者平台 DSL WEB服务 运行时 单页 微应用 DSL 后端服务 BFF 接口 功能服务 一体化低码用户 一体化 低码应用 形 态 ① 一体化低码用户 具备低码分离实现的优势 前端 页面 交互 接口 形 后端低代码 态 服务、逻辑、存储 ② 逻辑 符合不同用户群体的认知 存储 监控 后端 满足不同用户群体的需求 灵活性较高 拓展性较好 接口服务用户 可集成度较高 对开发者友好 形 前端低代码 态 页面、交互、逻辑 ③ 前端页面用户
12. 其他的一些利好 01 02 BFF层做接口代理、 鉴权、日志 接口微服务化 功能、组件懒加载, 03 提升性能 与传统开发兼容 04 各施所长 独立部署更灵活、高效 05 更易被第三方 06 应用集成
13. 后羿低代码平台的提效秘诀 自研高性能渲染引擎 1.2
14. 渲染引擎的作用 DSL 自定义 组件 列表 表单 自定义 渲染器 上下文 自定义交互 解释节点 渲染 动态表单 动态交互 渲染引擎 page/template 渲染列表 (或图表等) 贮藏执行 动态交互
15. 表单渲染器:FormRender JSONSchema 自定义组件 功能 • 表单数据管理 • 自定义组件解析渲染 • 实现组件联动 • 表单校验 innerState 响 应 式 内 核 【formData、flatten、errFields】 实例方法 validator 特点 基于JSONSchema驱动的分层架构 • 逻辑与 UI 框架解耦 UI桥接 组件库【Antdv、Element等】 • 学习成本极低 • 拓展简单 可挂载到动态交互上下文, 实现与各块级组件的联动
16. 列表渲染器:TableRender JSONSchema 响 应 式 内 核 自定义渲染器 特点 基于JSONSchema驱动的分层架构 内置常用渲染器 • 逻辑与 UI 框架解耦 • 学习成本极低 内置多种生命周期 实例方法 • 拓展简单 可挂载到动态交互上下文, 实现与各块级组件的联动 组件库【vxe-table】
17. 动态交互 一次有序的交互 动态交互流程建模 点击 按钮 点击 按钮 流程触发源 next 表单弹窗 表单弹窗 校验不通过 触 发 处 理 失 败 消 息 填写表单 执行校验 校验通过 调用接口 执行服务端数据处理 流程节点 校验不通过 触 发 处 理 失 败 消 息 填写表单 执行校验 校验通过 调用接口 执行服务端数据处理 next 流程节点 next 流程节点 next 接口结果 提示 接口结果 提示 流程节点 next 刷新列表 刷新列表 结束 结束 流程节点 动态交互队列
18. 动态交互解释器 伪 代 码 架 构 JSONSchema 交 互 解 释 器 自定义交互节点 内置交互节点 【API、methods、function】 功 能 贮藏动态节点 传递动态上下文 解释执行动态交互 传递动态上下文 动态节点队列执行器
19. 后羿低代码平台的提效秘诀 高效的可视化配置方案 1.3
20. 资源管理 V消息 V消息 热更新 专注资源 (菜单)编排 单资源版本管理 及批量发布 V消息工单 版本审批 发布、迭代安全 高效可追溯 热更新
21. 模板、代码片段 • 专注页面复用 • 提高配置效率 • 专注组件、功能复用 • 提高配置效率
22. 系统功能 一键开启 可视化配置 多种类型客服信息 水印 文字 菜单搜索 链接 消息通知 二维码 V消息调起
23. 页面、组件拖拽配置 拖拽生成 实时预览
24. 动态交互流程可视化配置 交互逻辑可视化
25. 贴心的功能 接口:支持代理,方便调试 接口配置:统一管理、选择复用
26. 贴心的功能 大纲: 快速定位到组件 版本比对: 支持选择任意两个版本对比 版本回退: 支持多步撤销及恢复指定版本
27. 贴心的功能 右键功能 • 组件、流程节点快速复制 • 组件、流程节点快速粘贴(可跨 组件、页面) • 精确定位组件Schema • Schema与可视化实时同步 • 代码片段快速保存、使用
28. 贴心的功能 自定义组件 支持编辑器协议 享受内置组件同等可视化配置能力
29. 贴心的功能 嵌套场景: 扁平化快速切换 字段级功能说明 组件、节点级 文档指引
30. 后羿低代码平台的提效秘诀 千亿级内容投放 1.4
31. 数据流程 业务 数据 统一数据处理 • 通用接口、通用处理组件(无代码) • 基于JAR包动态加载的自定义处理能力(低代码) • MongoDB通用化存储(非关系型数据) 统一存储 • MongoDB可配置路由策略(分仓存储) • MySQL业务数据定义、分发策略管理(版本号、DMP) 精确分发
32. 高可用 用户 Dubbo、HTTP 服务 实例1 本地缓存 磁盘缓存 服务隔离 服务 实例2 本地缓存 磁盘缓存 Redis集群(根据量级调整) 数据源(MongoDB) 实例1 本地缓存 磁盘缓存 Redis集群 磁盘灾备 独立缓存 同城双活
33. 高并发 MongoDB数据源 无上级缓存 Redis缓存 异步处理 无上级缓存 单元查询 并行 本地缓存 数据选择 并发查询 数据处理 批量查询 (异步) 结束 单元映射/分组 数据组合 单元查询 本地缓存 异步加载 ZK监听 数据更新 数据选择 数据处理 高速缓存 水平拓展(服务、实例)
34. 后羿低代码平台的提效秘诀 低代码如何与传统开发共存 1.5
35. 为什么需要共存 灵活 无场景限制 成本低 传统开发 & 低代码开发 技术成熟 周期短 效率高 优势互补才能发挥更大的价值
36. 后羿是怎么做的 架构上兼容传统开发 • 双向支持 iframe • 双向支持微应用 • 页面、区块、组件级支持 iframe 和微应用
37. 后羿是怎么做的 素材托管 快速部署能力 • 多种工程脚手架 • 脚本命令一键发布 即使传统开发也要快人一步
38. 低代码不是万能的 才是万能的
39. Chapter 2 如何“拼”出一个页面
40. 游戏中心低代码探索与实践 2.1
41. vivo游戏简介 产品形态 vivo游戏中心 vivo游戏内置悬浮窗 定位:vivo游戏用户内容服务平台 定位:vivo游戏中心再单游戏内的延伸触点 定位 vivo用户玩游戏的平台 帮助用户找游戏玩 帮助用户玩好游戏 帮助用户找人玩游戏 找到想要的游戏 找到游戏相关攻略、玩法、福利、特权 游戏玩家社交互动 价值点
42. 首页结构介绍 banner和导航栏 游戏列表和穿插构成
43. 首页存在的问题 行业流量见顶,分发提升困难,需要探索新方向,而应对新需 求的时候研发周期过长,运营效果低于预期。 用户的核心关注点不同,现有产品形态无法对用户带来强烈的 下载刺激。 不同生命周期节点的运营需求重点不一样,现有固化的产品无 法满足需求 运营需要在某个节点更换二级落地页或者响应开发者诉求,搭 建专区的时候,现有功能无法快速支持
44. 首页存在的问题 缺少灵活多样,动态调整组件的能力。 缺少可视化,快速搭建页面的能力。
45. 解决问题的方案 低代码平台下的组件化
46. 游戏中心低代码探索与实践 如何搭建业务“低代码”平台 2.2
47. 组件化设计 01 针对产品进行功能分析,设计出组件 02 组件多样化选择将产品定制化
48. 游戏中心组件化 01 针对游戏中心进行功能分析, 设计出一系列功能模块(业务组件) 02 通过组件(业务组件)组合构成不同的页面, 以满足用户的需求
49. 如何打造标准组件 组件一 组件二 组件三 组件四 组件五
50. 如何打造标准组件 元组件: 游戏 icon卡片排列,游戏行数和个数可配置, 左上配置标题,右上配置跳转 数据: 游 戏列表 组件 元组件: 尺寸为984*345的图片容器 数据: 单个游戏(游戏详情页) 元组件 数据
51. 如何打造标准组件
52. 如何打造标准组件
53. 如何打造标准组件
54. 如何引入数据 数据 HTTP DUBBO 数据类型:运营配置数据与系统自动数据 数据来源:内部数据与外部数据 协议
55. 如何引入数据 运营场景确定 选择元组件 确定数据类型 确定调用接口
56. 如何引入数据 更换了图片
57. 如何引入数据 调用方式 Dubbo泛化调用。服务消 费者应用不再需要引入服 务提供者的SDK二方包。 表达式语言 • 弱类型脚本语言 • 逻辑控制 • 防腐设计
58. 如何组装页面 可视化快速搭建
59. 如何组装页面 方案:所见之页面集合 方案 页面:推荐、吃鸡、超休闲 组件:专题组件 元组件: 1*4icon卡片 数据: 专题+ 时间+ dmp 组件2 页面1 页面2 组件N 专题组件 数据 元组件 专题 时间 dmp
60. 如何组装页面 元组件 数据 策略 元 组 件 静 态 配 置 系 统 自 动 运 营 配 置 底层数据 活 动 图片 内 容 专 题 视频 游 戏 文字 组 件 2 组 件 3 页面2 (dmp) 页面3 (dmp) 方案2 (多层实验 框架) 方案3 (多层实验 框架)
61. 游戏中心低代码探索与实践 2.3
62. 效果展示 研发流程轻量 客户端 开发人员 服务端 开发人员 运营 人员 开发/更新新组件 上传新的元组件 配置业务组件 上传差分包 配置元组件信息 配置页面 点检生效 配置组件应用场景 点检审核 服务器下发新组件 配置场景管理数据 调用方式/调用源 上线
63. 效果展示 研发效率提升 客户端 动态化组件无需预定义组件,全量上线周期缩短15天以上,且有较高的容错性 服务端 流程标准化,服务端无需开发或者少量开发,开发效率提升4倍甚至更多 测试端 无需回归版本问题,测试效率提升 30% - 50%; 运营端 界面化操作,学习成本降低30%,配置效率提升 10%,能够及时响应诉求
64. 效果展示 项目周期变化 现有组件满足 需求场景下 运营直接配置生效,无需开发,无项目周期 修改组件场景下 客户端修改组件,上传差分包,测试后,运营配置后生效,项目周期为原来的1/5以下 新增组件 客户端修改组件,上传差分包,服务端少量逻辑开发或者不开发,测试后,运营配置后 生效,项目周期为原来的 1/4 以下,服务端和客户端可以并行
65. Pad适配 Before
66. Pad适配 After
67. 解放生产力,提升用户体验 做最好用的安卓低代码平台
68. 低代码概念最近很火,争议也很大,有人认为以后“人人都是程序员”, 也有很多人认为是新品装旧酒,但作为技术人,最重要的还是通过技术解决业务问题, 驱动业务发展,无论是后羿系统,还是游戏中心低代码实践, 都旨在提高开发效率,帮助业务取得更好的结果。 未来,我们也会投入更多的精力,不断优化系统, 能够为用户带来惊喜,能够为行业带来革新
69.

Home - Wiki
Copyright © 2011-2024 iteam. Current version is 2.137.1. UTC+08:00, 2024-11-17 04:36
浙ICP备14020137号-1 $Map of visitor$