软件架构生态化-多角色交付的探索实践

news2024/11/22 11:32:08

作为一个技术架构师,不仅仅要紧跟行业技术趋势,还要结合研发团队现状及痛点,探索新的交付方案。在日常中,你是否遇到如下问题 “ 业务需求排期长研发是瓶颈;非研发角色感受不到研发技改提效的变化;引入ISV 团队又担心质量和安全,培训周期长“等等,基于此我们探索了一种新的技术体系及交付方案来解决如上问题。

背景

嗨,大家都知道软件研发需要许多角色共同协作,包括客户、产品经理、研发工程师、测试人员、实施运营团队等等。在这众多角色中,研发工程师的人数占比最高,但是研发资源毕竟有限,随着需求量不断增加,在项目中还会听到如下吐槽:

1、研发团队排期瓶颈,非研发角色感受不到研发技改提效的变化。

2、引入ISV 团队又担心质量和安全问题,而且培训成本高、周期长,在核心复杂系统中,不敢也无法短时间大规模引入。

不过,如果有一种方法能够实现生态化交付和全民开发的愿景,那就可以解决上述问题了!这种方法可以让所有角色,无论是技术还是非技术的,以安全、更简单的方式参与进来。

这样一来,就可以在不增加团队人数的情况下,提高团队的吞吐量,实现更高效的需求交付,是不是很奇妙呢?

挑战

为了达到生态化交付和全民开发的愿景,我们需要解决如下几个问题?

1、如何让非技术角色实现研发的交付?

2、如何让全民开发者完整实现一个需求闭环,而非仅仅实现其中一部分需求?

3、如何解决交付中核心系统安全问题?

我们带这几个问题看下解决方案。在讲技术方案之前,我们先站在客户角度,从整体看一下,一个系统的需求都来自哪里?而我们都知道比起从0-1新做一个系统,二次扩展类需求更加复杂,我们今天就以二次扩展类需求入手和大家一起分享下,在京东智能供应链Y做的一些实践。

方案

设计思路

如上图就是任意一个系统中二次扩展类需求分类的最大集合,主要有8类:API类、参数类、模版类,界面类、流程类、规则类及数据库类。

1、API类:主要是新增API和在原有API的扩展,例如,原有API上新增一些属性。

2、模版类:主要是新增一个模版。例如,制作一类新的合同模版或问卷调研,各部门填报填写。

3、参数类:主要是新增KV类的参数。例如,新增“是否包括自营商品“参数,并让这些参数在某些逻辑中起到作用。

4、UI类:主要是新增菜单、按钮、布局、图表、校验规则等。例如新增一个外呼按钮,并调用外呼系统 接口。

5、流程类:在原有流程节点中新增新的节点。

6、规则类:在原有的规则前、后等,新增新的规则。

7、数据库类:在原有表中增加新的属性,或者新增一个子表。

8、最后还有一类其他:无法划分为某一类,需要复杂的逻辑处理实现。例如 数据重新聚合与逻辑运算

我们就基于这些研发的需求类型,设计一套技术体系,实现生态化交付和全民开发的愿景。

技术方案

我们把软件系统分成三层,建立完整的全链路扩展技术体系,在把这些能力通过零低代码手段把他们进行打通、包装和开放,就可以实现屏蔽源代码的情况下,对系统进行安全、简单、闭环的二次增强,进而达到全民开发的目标。具体包括:

1、界面层:该层扩展主要手段就是零低代码技术。

2、接口层:该层扩展主要手段就是依靠不同模型之前的映射来解决,而模型的扩展就可以依靠对象扩展来解决。

3、服务层:该层扩展主要依靠流程、规则引擎来实现,这个业界有很多开源工具,例如activity和drools等。另外还有很多场景是复杂的逻辑变更,这个可以依靠插件、事件驱动模式来实现。

4、模型层:该层扩展主要手段就是依靠元数据驱动,通过依赖元数据对象,而非底层物理数据库。

以上能力,在通过最后零代码技术的加持和封装,实现可视化配置,形成一个工作空间,在对工作空间进行分角色授权,让不同角色以熟悉的语言进行操作,这样就可以实现生态化交付和全民开发的愿景。

所以说扩展的技术体系不是一个单一的解决方案,它需要零低代码、插件、业务事件、元数据驱动、流程规则引擎等技术共同协作才可以。而难点是这几个技术需要互相搭配好,实现扩展的互认,例如我们在对象模型扩展中增加了一个属性,这个属性需要在界面展示、需要在接口中透传、需要在规则中校验,这就需要做好顶层架构设计。

我们通过几个案例来描述,它需要和可以实现哪些能力?

案例

案例1:让非技术参与进来,体会技术提效的变化

需求描述:基于业务变化,一个核心系统,需新增 “渠道类型” 这个属性,改动涉及:

1、数据模型变化(技术上:数据库字段变化)

2、后端服务及规则变化(技术上:接口变化、对象变化、判断规则变化等)、

3、展现界面变化(技术上:UI 界面增加带数据权限的查询条件、表格新列及图表增加等),

也就是需要软件不同层次的进行变化。通常,这些特别技术的需求变更,只能技术排期做,但是通过这种新方式。产品经理/客户就可以在无需等待,7 分钟内,全程零代码的模式下完成。

1、在对象扩展中,增加新的属性。

2、在规则引擎中,基于新的属性,编排增加新的校验。

3、在界面扩展中,把在对象扩展中的新列拖拽出来,展示为查询条件,并制作一个新的饼状图展示到界面。

通过这个案例,也就是说我们可以把黑盒的研发工作,安全、高效的交付给其非研发角色自助完成,提升交付效率,减低沟通成本。另外还有一点值得一提,这种方式也让非技术人员,可以直观的感受到技术提效的变化。

案例2:不触及代码情况下,实现安全一站式开发

需求描述:基于业务变化,一个核心系统,需要与客服系统集成,实现对某类特殊业务的客服外呼,改动涉及:

1、新增一个外呼按钮

2、新增前端规则校验,只有履约数据滞留2天的才需要进行客服介入。

3、调用外呼接口,组装数据增加复杂逻辑并传递。

4、发送邮件通知相关角色。

同样,这些也是特别技术的需求变更,原来只能原厂技术开发来排期做,但是通过这种新方式。客户IT或ISV,就可以在不触及代码的情况下,通过统一平台一站式完成需求的变更。

1、在界面层中,通过零低代码手段完成按钮新增。

2、在界面层中,通过零低代码手段完成规则校验的新增。

3、在服务层中,通过插件方式,实现代码逻辑处理,并调用外呼接口。

4、在服务层中,通过事件订阅方式,监听外呼状态,配置邮件模版,实现邮件自动发送。

通过这个案例,我们可以看出来,业务需求具有多变性,不能仅仅依靠一种手段完成扩展,需要多种方式进行搭配,才能实现大幅度提效。

结束

其实零低代码、插件、业务事件、元数据驱动、流程规则引擎等技术在行业中并不是一个新事物,而这些技术可以互相搭配,实现完美集成和互认,让用户在一个平台针对不同业务的场景使用合适的技术,完成需求的自助化,是个难点。它不仅仅需要平台技术,还需要对业务系统需要合理的抽象、抽取。

最后,我们在回过头看看最开始的技术挑战。是不是都解决了呢?

1、如何让非技术角色实现研发的交付?答:通过零低代码模式进行封装和开放。

2、如何让全民开发者完整实现一个需求闭环,而非仅仅实现其中一部分需求?答:需要全链路开放和打通,并不仅局限一种技术手段。

3、如何解决交付中核心系统安全问题?答:屏蔽源代码的完整扩展体系。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/892961.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

# 深入理解高并发编程(一)

深入理解高并发编程(一) 文章目录 深入理解高并发编程(一)SimpleDateFormat线程安全问题重现问题线程不安全的原因解决办法局部变量synchronized锁Lock锁ThreadLocalDateTimeFormatter Thread源码解读Thread类定义线程的状态定义r…

基于随机数据重置系统时钟的Windows功能正在造成严重破坏

Windows安全时间播种会将时钟重置为偏离正确时间几个月或几年 几个月前,挪威数据中心的一名工程师遇到了一些令人困惑的错误,导致Windows服务器突然将其系统时钟重置为未来55天。该工程师依靠服务器来维护一个路由表,当手机号码从一个运营商…

数据传承之道:MySQL主从复制实践指南

😊 作者: 一恍过去 💖 主页: https://blog.csdn.net/zhuocailing3390 🎊 社区: Java技术栈交流 🎉 主题: 数据传承之道:MySQL主从复制实践指南 ⏱️ 创作时间&#…

多维时序 | MATLAB实现WOA-CNN-BiGRU-Attention多变量时间序列预测

多维时序 | MATLAB实现WOA-CNN-BiGRU-Attention多变量时间序列预测 目录 多维时序 | MATLAB实现WOA-CNN-BiGRU-Attention多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 多维时序 | MATLAB实现WOA-CNN-BiGRU-Attention多变量时间序列预测 1.程…

能耗监测管理系统在产业园区中的应用分析

摘要:随着电信公司企业级智能化办公系统的不断迭代优化及财务辅助系统与各个业务系统之间的壁垒不断打破、融合,能耗监测管理系统在企业生产运行管理中,为实现企业能耗数据归集,“节能减排、降本增效”提供了系统支撑及可行性保障…

tkinter高级布局:PanedWindow和notebook

文章目录 PanedWindownotebook tkinter系列: GUI初步💎布局💎绑定变量💎绑定事件💎消息框💎文件对话框Frame控件💎PanedWindow和notebook控件扫雷小游戏💎强行表白神器 tkinter传统…

小航助学GESP_C++一级模拟测试卷第2套(含题库答题软件账号)

需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统(含题库答题软件账号)_程序猿下山的博客-CSDN博客 需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统(含题库答题软件账号)_程序猿下山的博客-CSD…

用Java实现原神抽卡算法

哈喽~大家好,好久没有更新了,也确实遇到了很多事,这篇开始恢复更新,喜欢的话,可以给个的三连,什么?你要白嫖?那可以给个免费的赞麻。 🥇个人主页:个人主页​​…

Android DataStore:安全存储和轻松管理数据

关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、人工智能等,希望大家多多支持。 目录 一、导读二、概览三、使用3.1 Preferences DataStore添加依赖数据读…

深度解析 Llama 2 的资源汇总:不容错过

“ 探索 Llama 2 背后的过程,包括了模型的全面解析,在线体验,微调,部署等,这份资源汇总将带您深入了解其内涵。” 01 — 周二发布了文章《中文大模型 Chinese-LLaMA-Alpaca-2 开源且可以商用》后,不少朋友们…

【Unity小技巧】Unity自制对象池和官方内置对象池的使用

文章目录 前言不使用对象池使用官方内置对象池应用 自制对象池总结源码参考完结 前言 发明对象池的人绝对是个天才,游戏中我们常常会遇到,频繁创建和销毁大量相同对象的场景,例如敌人子弹 如果我们不做任何处理,只是单纯的创建…

(stm32)低功耗模式

低功耗模式 执行哪个低功耗模式的程序判断流程 标志位设置操作一定要在WFI/WFE之前,调用此指令后立即进入睡眠判断流程 模式对比 睡眠模式 停止模式 待机模式

“绿心之眼”串联起“三大建筑”

本报记者 赵鹏 实习记者 池阳 通讯员 董浩程 步入夏末秋初的城市绿心森林公园,远远便看到在“三大建筑”间有块地面已悄然隆起,如同破土“种子”般正加速“萌发”。这枚生命之“种”泛着钢铁的颜色,一根根钢管编织起来,用叶脉的纹…

c语言每日一练(9)

前言:每日一练系列,每一期都包含5道选择题,2道编程题,博主会尽可能详细地进行讲解,令初学者也能听的清晰。每日一练系列会持续更新,暑假时三天之内必有一更,到了开学之后,将看学业情…

定位服务器CPU爆满的具体原因

1、查询CPU消耗的进程 使用top命令查看系统的CPU和内存使用情况 CPU一列是线程占用百分比 2、具体查看某个占分比大的进程 以为PId:7355为例, 执行top -Hp 7355,线程按照CPU使用率排序。 3、将线程PID转化为16进制 执行printf %x 7391,将…

三维模型OSGB格式轻量化重难点分析

三维模型OSGB格式轻量化重难点分析 在三维模型应用中,为了适应移动设备的硬件和网络限制等问题,OSGB格式轻量化处理已经成为一个重要的技术手段。但是,在实际应用中,OSGB格式轻量化仍然存在着一些重难点问题。下面将对这些问题进行…

视频云存储/安防监控/视频汇聚EasyCVR平台新增设备经纬度选取

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同,支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。音视频流媒体视频平台EasyCVR拓展性强,视频能力丰富,具体可实现视频监控直播、视频轮播、视频录像、…

Spring Clould 部署 - Docker

视频地址:微服务(SpringCloudRabbitMQDockerRedis搜索分布式) 初识Docker-什么是Docker(P42,P43) 微服务虽然具备各种各样的优势,但服务的拆分通用给部署带来了很大的麻烦。 分布式系统中&…

两个案例熟悉String的基本操作

1、第一个案例 Java语言规范要求完全相同的字符串字面量,应该包含同样的Unicode字符序列(包含同一份码点序列的常量),并且必须是指向同一个String类实例。 package string; public class StringTest4 {public static void main(St…