基于 BPMN 流程引擎驱动的 前端研发平台 姜天意 阿里巴巴 - 前端技术专家 www.top100summit.com
Topic 前端 工程的变迁及对研发流程的诉求 基于 BPMN 流程引擎 - DSL 化 / 可编排的前端研发平台技术介绍 基础服务 BAAS 化与前端 工程架构分层 研发流程管理理带来的价值
没有 CDN 的时代, 开发者通过直接开发代码上传到 ftp 进 行行部署 工作流 : 开发 部署
要有 工程
刀耕火种 Apache Ant 是 一个将软件编译 测试 部署等步骤联系在 一起进 行行 自动化的 工具, 大多 用于 Java 环境中的软件开发 工作流 : 开发 合并压缩打包 部署
新时代 工作流 : 包管理理 脚 手架 开发 合并压缩打包 部署
yeoman 的进化 工作流 : 包管理理 脚 手架 开发 合并压缩构建 部署
工作流 : 包管理理 脚 手架 开发 合并压缩构建 部署
线下工作流的百花齐放 工作流 : 包管理理 脚 手架开发编译后处理理 合并压缩打包 部署
包管理理 脚 手架 开发 合并压缩构建 部署 够了了吗? 静态代码检查 线上编译与构建 自动化测试 灰度发布 自动雪碧 前端性能和错误监控 源站版本管理理与组件管理理
准备阶段 线下开发阶段 需求 包管理理 脚 手架开发合并压缩构建打包 线上监控 灰度 部署 预发环境 自动化测试 测试环境 代码检查 上线阶段 发布阶段 测试阶段
case1 拉代码 开发完啦 静态代码检查 线上编译与构建 自动化测试 灰度发布 自动雪碧 前端性能和错误监控 源站版本管理理与组件管理理 上线啦! bug
case2 需求 A,B 拉代码 A 开发完了了, 提测 B 拉代码, 开发, 提交 测试部署 :tm 什什么 鬼,A 这功能有 bug 吧? A 把 B 干掉, 重新 revert commit 测试好啦, 上预发! 线上有个 bug,c 赶紧拉代码改 一下! 用户投诉太多了了!C 赶紧上线! A 预发验证好了了, 合并主 干失败?? D 改了了个基础组件,Z 位升级发到 npm A 解 ( 删 ) 决 ( 掉 ) 冲突, 预发重新构建 D 你这什什么破组件, 这个场景有 bug?? A 写死版本号, 封 网了了
case3 新 人, 记得先去 XXX 平台创建 一个新需求, 然后去 XXX 代码仓库克隆隆下代码, 拉代码的时候使 用 XXX 平台的脚 手架, 然后去 XXX 站下载 一个开发 工具, 开发的时候去 XXX 文档中 心看下我们的开发规范, 去 XXX 组件库找你要的组件, 开发完毕后去 XXX 平台创建 一个测试任务, 并在 XXX 平台申请 一台测试机, 等测试过了了去 XXX 平台提交代码部署, 然后去 XXX 平台通过 一下 自动化测试, 然后在 XXX 平台提 一个发布单, 去 XXX 平台要个预发绑定, 上线时别忘了了去 XXX 平台申请 一个灰度发布单, 对了了, 记得去 XXX 平台查看业务数据, 去 XXX 平台查看监控数据, 去 XXX 平台查看错误数据, 之后别忘了了去 XXX 平台写篇 文章总结下!! 我唱了了 八 十 八个差不不多都差不不多 差不不多先 生不不会在乎这么多
流程缺失 效率低下 无法追溯 难以量量化
流程管控
流程管控的诉求 研发流程应该是 DSL 化的, 可描述的 研发流程应该是收敛的 研发流程必须可追溯 研发流程必须 方便便接 入其他服务, 只专注于流程
演示
流程管控平台? 怎么特么又有一个平台???????
如何实现 BPMN 流程引擎 + 基础服务 BAAS 化
流程引擎 - 概念 BPMN: 业务流程建模与标注
何为工作流 工作流 (Workflow) 指 业务过程的部分或整体在计算机应 用环境下的 自动化 是对 工作流程及其各操作步骤之间业务规则的抽象 概括描述
流程引擎介绍 Shark - XPDL - Process Activity osworkflow - fsm - State-action Jbpm, Activiti5 - bpmn2.0
BPMN: 业务流程建模与标注 Activities( 活动 ) 在 工作流中所有具备 生命周期状态的都可以称之为 活动, 如原 子级的任务 (Task) 流向 (Sequence Flow), 以及 子流程 (Sub-Process) 等 Gateways( 网关 ) 顾名思义, 所谓 网关 就是 用来决定流程流转指向的, 可能 会被 用作条件分 支或聚合, 也可以被 用作并 行行执 行行或基于事件的排它性条件判断 Events( 事件 ) 在 BPMN2.0 执 行行语义中也是 一个 非常重要的概念, 像启动 结 束 边界条件以及每个活动的创建 开始 流转等都是流程事件, 利利 用事件机制, 可以通过事件控制器器为系统增加辅助功能, 如其它业务系统集成 活动预警等
工作流为什么适合驱动研发流程 可编排, 工作流引擎的描述有标准, 驱动也有标准引擎 强 大的驱动能 力力, 可以完成节点的 自动运 行行, 重试等复杂场景 服务与流程解耦, 前端基础服务不不再揉杂到平台中, 而是下沉, 流程只需关注 研发过程本身 改进和优化业务流程, 提 高流程 工作效率
BPMN 实例
回顾, 如何解决这个 case 拉代码 开发完啦 静态代码检查 线上编译与构建 自动化测试 灰度发布 自动雪碧 前端性能和错误监控 源站版本管理理与组件管理理 上线啦! bug
一根筋类型开发
回顾, 如何解决这个 case 需求 A,B 拉代码 A 开发完了了, 提测 B 拉代码, 开发, 提交 测试部署 :tm 什什么 鬼,A 这功能有 bug 吧? A 把 B 干掉, 重新 revert commit 测试好啦, 上预发! 线上有个 bug,c 赶紧拉代码改 一下! 用户投诉太多了了!C 赶紧上线! A 预发验证好了了, 合并主 干失败?? D 改了了个基础组件,Z 位升级发到 npm A 解 ( 删 ) 决 ( 掉 ) 冲突, 预发重新构建 D 你这什什么破组件, 这个场景有 bug?? A 写死版本号, 封 网了了
多人, 单仓库, 奶妈型开发流程 奶妈负责 merge
实现 : 工作流引擎如何驱动研发流程
开源框架 添加 mysql 持久化引擎 适配 async/await 缓存服务 支持接 入 redis 子流程能 力力 支持
流程引擎 - 最简单实现
流程引擎 - 分支控制
整体架构 -WFMC 模型
系统整体架构
系统分层
流程定制 - 可视化搭建
基础服务 BAAS 化
baas 化 - 概念
baas 化 - 技术架构
baas 化 - 服务注册
baas 化 - 接入注册
流程定制 - 调用服务 获取 baas 准 入 初始化 baas client 调 用服务 写上下 文, 持久化
流程定制 - 隔离 沙箱中运 行行代码, 避免 干扰引擎
工程终局 线上平台 代码托管 研发流程平台 BAAS 网关需求与 文档管理理 线下工具链 基础服务代码扫描 自动化测试源站部署云构建
我们的收获 严控研发过程, 避免开 发者绕过质量量检查步骤 流程卡点 发布全貌 前端开发者可以在平台中看到发布的全貌, 方便便开发者回溯 自查, 也 方便便线上问题及时定位 研发全流程数据集中, 分析这些数据更更利利于针对性优化 研发数据 开放接 入 开放接 入最 小化改造成本, 最 大化集中收益
研发能力指标
研发效率指标
研发质量指标
您的质量量得分 88 分, 效率得分 70 分, 能 力力得 分 99 分, 超过了了阿 里里 99.99% 的迭代 Thank you Q&A
扫码关注 GIAC 公众号 www.top100summit.com