有赞移动有weex发布平台、移动配置中心平台、App分发平台、热修复平台等。这些平台都需要发布,而发布就需要规范化,需要审批制度。如果为各个平台开发这个审批流程,看起来是一种浪费。
首先想到第一种方案:接入现有的前后端发布平台。
移动侧的发布基本是配置类的发布,跟后端应用和前端应用的发布不一样。后端应用和前端应用的发布都是将指定的内容推送到某台或者多台机器进行部署、启动。两者如果硬要做抽象,成本反而更大,而且不易维护。所以放弃第一种方案。
那么是否可以抽象成单独的统一管理平台,进行标准化呢?
首先看一下标准的发布审批流程一般是怎么样的?
第一步:申请人提交发布单
第二步:负责人审批
第三步:申请人发布
而这里申请人和负责人就是以权限为区分。
一般的权限角色有模块负责人、开发、运营、测试等。
其中,审批人是模块负责人,而申请人可以是开发,也可以是模块负责人。而二方平台还可以根据不同角色赋予不同的权限。
权限实质上指的是用户和模块之间的关系。所以只需要模块的唯一标识和用户的唯一标识,用户的唯一标识由统一的用户认证服务提供,模块的唯一标识由各个二方平台提供。对于二方平台来说,只要提供模块唯一标识和用户唯一标识,然后获得角色即可,然后根据角色进行相应的操作。所以这一层就可以单独抽离出来。现有的前后端发布平台也已经验证了这一点。
审批需要哪些元素呢? 申请人、审批内容、审批人、审批状态。其中审批内容在各个二方平台是不一样的。
尽管如此,还是可以抽象成两个字段:审批单唯一标识和用于查看审批详情的链接。这两个字段都可以由二方平台提供。所以审批也是可以做抽象的。
如何设计这个统一的平台将权限与审批流程标准化呢?首先看一下二方平台和有赞移动权限与审批统一管理平台(以下简称统一管理平台)的交互流程图。
首先,二方平台和统一管理平台都要依赖CAS,CAS是有赞的用户认证平台。这样,就可以基于同个用户进行权限管理。
从图中可以看到,二方平台与统一管理平台主要有四大交互:添加模块、获取权限、提交发布单、获取发布单状态。
模块是最小的可配置权限的元素,比如weex发布平台对应的各个模块、热修复平台对应的App等。需要在发布平台配置权限的时候,就需要选择模块。 所以,二方平台在注册模块的时候,需要同步到发布平台,带上平台和模块的唯一标识,以及模块的名称,增强可读性。
权限由统一管理平台管理,模块负责人可以编辑权限,其他人可以申请权限。
二方平台通过携带平台和模块的唯一标识,以及用户的唯一标识,从统一管理平台获取权限,依赖权限进行相应的操作。
移动侧的各个二方平台发布的内容基本是配置类的信息,配置的内容、格式、条件都不一样。
比如weex发布的内容包含平台、环境、规则、描述,和页面列表,如图:
而热修复平台发布的内容包括应用版本、补丁文件、描述、下发模式(规则)等:
首先想到的是将这些配置类内容抽象成内容、规则和描述。但是如果这么做的话,各个二方平台展示时各自需要重新解析,也不便于根据内容里的字段进行搜索。
所以,各个二方平台的发布页面由各个平台自己开发,提交发布单的时候,再将唯一标识符(包含平台、模块、发布单ID等)和发布单详情的url传给统一管理平台,统一管理平台来维护一张审批表,包含发布单唯一标识符、状态、申请人、发布单详情url等。
其中,状态包括待审批、审批通过、审批拒绝。发布单详情url用于审批人在统一管理平台审批时可以跳转查看审批内容详情。
各个二方平台有各自的发布单详情表,而审批状态统一从统一管理平台获取。二方平台通过审批状态,判断是否可以进行发布。
考虑到每次需要添加的权限的时候,都需要模块负责人去权限管理页面添加,对于负责人来说是一种不必要的时间浪费。于是增加权限申请的入口,不仅在统一管理平台可见,在各个二方平台也开发入口,通过再url后面携带平台、模块、角色等参数,跳转到统一管理平台的权限申请页面。申请后,模块负责人会收到通知(企业微信、钉钉或者其他形式),同意申请即可。既减少了模块负责人的操作成本,也减少了模块负责人与申请人的沟通成本。
申请人发起发布申请后,审批人会实时收到通知。而审批人通过/拒绝申请后,申请人也会实时收到通知。减少了二者的沟通成本。
可能有一些模块的特殊性(测试模块),或者环境的特殊性(有赞的网络环境分为Daily、QA、Pre、Prod),有些模块在某些环境需要关闭审批,这样更能提高效率。否则在测试环境,每次发布都要审批,着实比较麻烦。
由此,所有的审批操作和权限操作都在统一管理平台进行。添加模块、提交发布单和发布、回滚等操作在各自的二方平台进行。统一管理平台以Dubbo的形式向二方平台提供统一标准接口:
统一管理平台的后台操作页面,主要是权限管理界面和审批界面。
由此就将发布的审批流程和权限管理进行了标准化。现有的二方平台,以及将来更多二方平台都可以通过统一管理平台提供的接口接入,在统一管理平台上进行权限和审批流程的管理。后续随着二方平台的复杂度变高,权限角色的增加,审批类型的增加都可以很方便地进行扩展和复用。
标准化意义在于降低成本,包括开发成本和使用成本。日常开发中需要更多思考,识别业务中哪些可以标准化哪些需要个性化,然后将可标准化的部分抽象出来做成服务,对于效率和扩展性来说都是更好的选择。
欢迎关注我们的公众号
Original url: Access
Created at: 2019-09-26 13:17:24
Category: default
Tags: none
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
java windows火焰图_mob64ca12ec8020的技术博客_51CTO博客 - 在windows下不可行,不知道作者是怎样搞的 监听SpringBoot 服务启动成功事件并打印信息_监听springboot启动完毕-CSDN博客 SpringBoot中就绪探针和存活探针_management.endpoint.health.probes.enabled-CSDN博客 u2u转换板 - 嘉立创EDA开源硬件平台 Spring Boot 项目的轻量级 HTTP 客户端 retrofit 框架,快来试试它!_Java精选-CSDN博客 手把手教你打造一套最牛的知识笔记管理系统! - 知乎 - 想法有重合-理论可参考 安宇雨 闲鱼 机械键盘 客制化 开贴记录 文本 linux 使用find命令查找包含某字符串的文件_beijihukk的博客-CSDN博客_find 查找字符串 ---- mac 也适用 安宇雨 打字音 记录集合 B站 bilibili 自行搭建 开坑 真正的客制化 安宇雨 黑苹果开坑 查找工具包maven pom 引用地 工具网站 Dantelis 介绍的玩轴入坑攻略 --- 关于轴的一些说法 --- 非官方 ---- 心得而已 --- 长期开坑更新 [本人问题][新开坑位]关于自动化测试的工具与平台应用 机械键盘 开团 网站记录 -- 能做一个收集的程序就好了 不过现在没时间 -- 信息大多是在群里发的 - 你要让垃圾佬 都去一个地方看难度也是很大的 精神支柱 [超级前台]sprinbboot maven superdesk-app 记录 [信息有用] [环境准备] [基本完成] [sebp/elk] 给已创建的Docker容器增加新的端口映射 - qq_30599553的博客 - CSDN博客 [正在研究] Elasticsearch, Logstash, Kibana (ELK) Docker image documentation elasticsearch centos 安装记录 及 启动手记 正式服务器 39 elasticsearch 问题合集 不断更新 6.1.1 | 6.5.1 两个版本 博客程序 - 测试 - bug记录 等等问题 laravel的启动过程解析 - lpfuture - 博客园 OAuth2 Server PHP 用 Laravel 搭建带 OAuth2 验证的 RESTful 服务 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 利用Laravel 搭建oauth2 API接口 附 Unauthenticated 解决办法 - 煮茶的博客 - SegmentFault 思否 使用 OAuth2-Server-php 搭建 OAuth2 Server - 午时的海 - 博客园 基于PHP构建OAuth 2.0 服务端 认证平台 - Endv - 博客园 Laravel 的 Artisan 命令行工具 Laravel 的文件系统和云存储功能集成 浅谈Chromium中的设计模式--终--Observer模式 浅谈Chromium中的设计模式--二--pre/post和Delegate模式 浅谈Chromium中的设计模式--一--Chromium中模块分层和进程模型 DeepMind 4 Hacking Yourself README.md update 20211011
Laravel China 简书 知乎 博客园 CSDN博客 开源中国 Go Further Ryan是菜鸟 | LNMP技术栈笔记 云栖社区-阿里云 Netflix技术博客 Techie Delight Linkedin技术博客 Dropbox技术博客 Facebook技术博客 淘宝中间件团队 美团技术博客 360技术博客 古巷博客 - 一个专注于分享的不正常博客 软件测试知识传播 - 测试窝 有赞技术团队 阮一峰 语雀 静觅丨崔庆才的个人博客 软件测试从业者综合能力提升 - isTester IBM Java 开发 使用开放 Java 生态系统开发现代应用程序 pengdai 一个强大的博主 HTML5资源教程 | 分享HTML5开发资源和开发教程 蘑菇博客 - 专注于技术分享的博客平台 个人博客-leapMie 流星007 CSDN博客 - 舍其小伙伴 稀土掘金 Go 技术论坛 | Golang / Go 语言中国知识社区
最新评论