vivo浏览器的快速开发平台实践-总览篇
一、什么是快速开发平台
快速开发平台,顾名思义就是可以使得开发更为快速的开发平台,是提高团队开发效率的生产力工具。近一两年,国内很多公司越来越注重研发效能的度量和提升,基于软件开发的特点,覆盖管理和优化、团队工程实践、个人工程实践、优化流程四大方面。本文所讲的快速开发平台可以大幅缩短需求周期,给研发效能带来了开发快、上线快、风险低、成本低、门槛低的优点。
用制造业来做个对比,被誉为“工业之母”的模具可以大幅提升生产效率,而快速开发平台也可以做到在1分钟内完成需求的开发、上线;另外3D打印机给制造业生产带来了重要改变,快速开发平台也能换一种方式,用可视化拖拉拽完成需求开发。所有行业都在追求着化繁为简,快速迭代的能力。所以低代码大火的时候,大家都觉得这个概念近些年也见过,根因就是企业和技术人员都一直在追求更高的生产效率。
二、我们在做的事儿
目前行业内的快速开发产品大多都是为了解决企业级应用场景,vivo浏览器作为公司互联网核心产品,在敏捷开发的节奏下,需求千余运营后台的管控能力,另外又要求高性能、高并发、高可用以及需求的快速响应。所以我们在日常的工作中很频繁的接到一些任务:迭代版本要完成大量后台开发;紧急需求需要半小时内完成后台的开发上线;线上后台需要快速增加一项新功能。
在此背景下,为了支撑业务快速迭代,推出应用于配置和运营后台的快速开发产品。总体来说,我们不断升级我们的架构,就是围绕以下几点来实现快速开发:
支持后台快速设计开发,以及内容快速投放能力;
支持菜单、用户等多维度权限控制;
支持自定义数据流程;
支持开发者二次开发和快速上线的能力。
三、产品架构两步走
产品架构的演进都是服务于业务,跟随着业务发展和技术潮流不断发展变化的。起初我们就是从运营后台开发开始的,到现在持续为公司业务提供高效率、高标准、快速响应的开发解决方案。下面就正式开始介绍产品和架构。
3.1 一阶段(配置平台)
2017年底,随着内核版本升级,为了应对新内核的云控要求,配置平台应运而生,并发展成为内核的十大特色能力之一,并持续为浏览器等数十个业务提供服务,在一年内踏入百亿请求服务俱乐部。
3.1.1 平台简介
相较json-editor之类快速生成页面的产品,最大的不同就是平台化、服务化。基于统一的平台提供了表单设计器及数据存储的解决方案,支持20多种组件类型、上百种组件属性;并且提供通用后台接口;并在操作链路中预置了锚点,让开发者能方便的去做一些定制化需求的开发。
所以平台化给产品带来了更快速的集成和升级能力,使得可以不断丰富表单组件,让用户快速享受到强大的表单DIY及云端控制能力。服务化则带来了高性能的配置投放能力,通过各端SDK的通道,完成整个配置生产、投放、消费的生命周期。下面将从配置生成引擎和无代码高性能服务来分别介绍一下。
3.1.2 系统架构
3.1.3 表单设计器和渲染引擎
表单设计器是抽象后台表单,对组件进行归纳、设计、定义,提供一套可视化的操作来进行后台组件的增添设计的工具。后台生成引擎是我们快速完成后台的开发的利器,基于此可以1分钟完成一个后台的开发、上线。
我们将后台抽象为布局,字段、操作三块,基于组件+流程这样的模型进行无限的拓展,支撑复杂多变的业务需求。下面先简单列举下的:
1)在主体布局上设计出运营后台的通用模板,在此之上进行配置开发,更加迅速,更加标准化。
主要布局包括全局操作、条件查询区、运营规则、表格区、配置操作区。
全局操作是对针对表单的操作行为,如发布、添加、批量修改、导入、导出等;配置操作是对一条配置的查看详情、编辑、删除、预览、审核等操作。
2)后台定义可以帮助完成诸如表单名称、权限控制、数据模型定义、门户集成、后台表单操作等一系列后台设计功能。将数据结构拆分为基础组件和用于编排的复合组件。
基础表单字段主要有文本、数值、选择、图片、文件、时间、标签等组件,并对对应的组件有属性上的配置增强,如文本长度校验、正则校验、图片大小校验、是否列表隐藏,是否可导出等;
复合组件主要有支持树状数据结构配置的子表单组件,还可以对多个基础组件进行组合,以及多个组合组件的列表等等;
3)流程操作这块主要打造了运营后台的编辑、删除、发布、预览、审核的数据流程。
3.1.4 无代码平台服务
如果说后台低代码是我们实现快速开发的第一步,那融合低代码能力具备智能投放和云端控制的平台服务,则是从工具转换为平台的核心因素。
3.1.4.1 智能投放
智能投放是一种数据实时编排,动态计算的API技术,加上我们客户端和服务端SDK的通道建设,是快速实现需求的无代码解决方案。它可以给平台开发带来这样的能力:
A表单配置的内容,可以直接通过接口下发,对于后续新增、修改的字段,也可实现接口自动下发;
A表单拼接B表单,可进行编排打包一起下发,或者可拼接B、C、D等无限个表单各自独立的处理拼接逻辑;
A表单可联动B表单数据,进行逻辑处理(表达式)后进行组装编排,来实现更为复杂的业务需求;
数据的编排和玩法花样很多,这里就不再过多赘述。
3.1.4.2 云端控制
云端控制是实现线上智慧运营的解决方案,目前支持但不限于地区、运营商、人群画像、人群灰度、客户端版本号、安卓版本等等各种自定义控制元素来管控下发。
3.1.4.3 智能推送
通过结合自身的控制及配置能力和系统推送能力,来给运营提供这样一种从后台出发更实时的触达解决方案。
3.2 二阶段(低代码平台)
2021年,行业低代码之风袭来,我们意识到一些局限性,也期望朝着产品化和更广泛的管理后台更进一步,于是重新出发。
3.2.1 平台简介
后羿是符合低代码平台的定义的一款产品,提供了可视化编排能力的开发语言。相较于一阶段的配置平台,设计了首页门户、运营平台、开发者平台、技术文档平台,提供了二次开发和生态建设能力,支持各种数据通道开发方式,大幅提升了产品力。最终都是为了完成技术平台到技术产品的转变和将低代码开发变得更加简单易懂、更加快速开发。
3.2.1 系统架构图
3.2.3 系统说明
3.2.3.1 开发者平台&运营平台子系统
开发者平台是整个平台的核心产品,开发者也是平台的核心用户,我们为提供开发者提供了一站式的项目、模块、菜单、页面制作的能力。
用户可以在开发者平台创建项目。完成创建后,就会自动生成一个后台门户;
随后创建目录和菜单,即可进入编辑平台,就可以体验到快速可视化开发的能力。另外还可以通过预置的各种强大的模板来快速的完成开发。
3.2.3.2 通用存储子系统
通用存储则是给运营数据提供了个一套标准化的存储方案,支持用户灵活使用自有仓、在岸外部仓等各类数据源。
不同于低代码目前纯粹的表单驱动、模型驱动;在所见所得的可视化开发后,可以智能生成对应的数据模型;
系统有一系列通用的运营后台操作接口,去完成对应的操作行为;也提供一些通用的数据处理流程,并利用二次开发来增强业务。
3.2.3.3 开放平台子系统
开放平台则是我们平台和外部数据连接的一个纽带,它是一个数据双向同步的通道,提供了实时接收、异步批量等同步方式,配合有鉴权、频限等一些安全措施。另外该系统也是我们去适配对接第三方服务的窗口。
3.2.3.4 投放平台子系统
投放平台则是实现配置灵活下发的投放渠道,保留了配置平台成熟的下发能力和SDK集成能力,也会更多地去集成一些如内容库、广告这些业务能力,来丰富我们投放的业务属性。
3.2.4 产品展示
1)门户、运营、文档平台展示
门户:展示平台的介绍、能力,也同步集成了后羿其他的产品。
运营平台:汇聚接入系统,模块、菜单、tab,为各运营团队提供最简化的操作。
文档平台:维护后羿的操作文档、设计文档、部署手册等等。
2)编辑平台展示
提供了所见即所得的可视化开发的能力,也提供了众多模板方便快捷开发。
四、写在最后
在完成了上述两个阶段的能力建设之后,我们具备了运营后台的快速开发能力,可以快速完成后台的开发上线,极大限度的提升研发效能。与此同时我们也面临着配置语言是否标准,可视化操作是否易用,开发者是否容易上手,更复杂的后台需求是否可以达成,快速开发带来的对现有产品开发流程的冲击等等问题和挑战。尽管如此我们也必将在产品设计上保持简单、好用、边界的产品特性,始终坚持快速开发的理念。
后续也将在此系列继续更新通用接口、数据处理、存储方案,生态建设和二次开发能力、高性能API实战、灾备能力建设等等文章,敬请期待。
作者:vivo互联网服务器团队-Lu Xiaohu
vivo浏览器的快速开发平台实践-总览篇的更多相关文章
- SNF快速开发平台项目实践介绍
SNF快速开发平台分如下子平台: 1.CS快速开发平台 2.BS快速开发平台 3.H5移动端快速开发平台 4.软件开发机器人平台(目前是CS版本,后续有规划BS版本) SNF快速开发平台是一个比较成熟 ...
- SNF快速开发平台2019-权限管理模型-记录级-字段级权限实践
1.1.1 字段级权限 字段级权限适用于对不同人的能否查看或录入不同表不同字段的权限控制. 是否启用字段级权限配置 不启用字段级权限后,[用户权限管理]程序[字段级权限]按钮会隐藏,导致无法给管理其 ...
- SNF快速开发平台2019-用户安全控制-权限管理模型实践-权限都在这里
1.1 是否保存密码 勾选记住密码后,再次开启程序用户密码不需要再次输入,直接显示在密码输入框内,方便快捷. 图 4.1‑1 记住密码的登录页面框 1.2 是否自动登录 勾选自动登录后,再 ...
- SNF快速开发平台2019-权限管理模型实践-权限都在这里
其它权限实践系列文章: 1.角色.权限.账户的概念理解-非常全的理论讲解权限控制 https://www.cnblogs.com/spring_wang/p/10954370.html 2.权限管理模 ...
- JeeSite 企业信息化快速开发平台
平台简介 JeeSite是基于多个优秀的开源项目,高度整合封装而成的高效,高性能,强安全性的开源Java EE快速开发平台. JeeSite本身是以Spring Framework为核心容器,Spri ...
- 软件快速开发平台 WebBuilder 6.8
WebBuilder是一款开源的跨平台.数据库和浏览器的可视化Web应用快速开发平台.WebBuilder使用了多项最新的技术,使Web应用的开发更快捷和简单. 作为一款高效的Web开发工具,WebB ...
- JEECG 3.7.1 版本发布,企业级JAVA快速开发平台
JEECG 3.7.1 版本发布,企业级JAVA快速开发平台 ---------------------------------------- Version: Jeecg_3.7.1项 目: ...
- 1024程序员节宅男节日快乐 -- JAVA快速开发平台,JEECG 3.8宅男优化版本发布
JEECG 3.8 版本发布,系统全面升级,重构上传组件.优化代码生成器机制! 导读 ⊙平台性能优化,系统更稳定,速度闪电般提升 ⊙系统上传组件全面重构,使用plupload组件,解决flash的 ...
- Winform开发框架之通用附件管理模块 --SNF快速开发平台3.3-Spring.Net.Framework
最近项目太多都没有时间写文章了,实际项目需求一,CS端和windows平板都需要附件上传管理功能.以前做的都是BS的附件管理和上传功能.本来计划在Winform上嵌套一个浏览器直接用bs的附件上传功能 ...
随机推荐
- Java的脚本机制、编译器API
学习 xxl-job 定时任务时了解到基于 JVM 的 Grovvy 脚本语言.搭建 Jenkins 时知道了编译API 1. Java 脚本机制 Java 的脚本 API 可以让我们调用 JavaS ...
- [atARC122F]Domination
如果一个红石头在另一个红石头的左下方(包括左和下),那么在后者的限制满足时,前者也一定满足,因此可以删去前者,再将其按照$rx_{i}$排序,即有$rx_{1}<rx_{2}<...< ...
- [atAGC022D]Shopping
称0到$L$的方向为左,同时为了方便,可以假设$0<t_{i}\le 2L$ 当我们确定是进入店中的方向,根据这个店的位置以及购物时间,不难确定出来时火车经过0或$L$的次数,由于$0<t ...
- 从零开始学Kotlin第三课
kotlin函数和函数式表达式的简化写法: fun main(args:Array<String>) { var result=add(2,5) println(result) ///简化 ...
- BFS实现迷宫问题
BFS实现迷宫问题 问题描述,要求从起点走到终点,找出最短的距离,要避开障碍 输入描述,输入一个二维数组表示地图,其中等于10就是终点,等于-10就是起点,等于1就是障碍,等于0就是可以走的 代码: ...
- 洛谷 P7718 -「EZEC-10」Equalization(差分转化+状压 dp)
洛谷题面传送门 一道挺有意思的题,现场切掉还是挺有成就感的. 首先看到区间操作我们可以想到差分转换,将区间操作转化为差分序列上的一个或两个单点操作,具体来说我们设 \(b_i=a_{i+1}-a_i\ ...
- R 语言实战-Part 4 笔记
R 语言实战(第二版) part 4 高级方法 -------------第13章 广义线性模型------------------ #前面分析了线性模型中的回归和方差分析,前提都是假设因变量服从正态 ...
- 富集分析DAVID、Metascape、Enrichr、ClueGO
前言 一般我们挑出一堆感兴趣的基因想临时看看它们的功能,需要做个富集分析.虽然公司买了最新版的数据库,如KEGG,但在集群跑下来嫌麻烦.这时网页在线或者本地化工具派上用场了. DAVID DAVID地 ...
- 关于vim复制剪贴粘贴命令的总结-转
最近在使用vim,感觉很好很强大,但是在使用复制剪切粘贴命令是,碰到了一些小困惑,网上找了一些资料感觉很不全,讲的也不好,遂自己进行实践并总结了. 首先是剪切(删除): 剪切其实也就顺带删除了所选择的 ...
- C++20协程实例:携程化的IOCP服务端/客户端
VC支持协程已经有一段时间了,之前一直想不明白协程的意义在哪里,前几天拉屎的时候突然灵光一闪: 以下是伪代码: task server() { for (;;) { sock_context s = ...