技术正在改变各行各业的发展,Gartner的主要战略技术趋势一直是行业的技术风向标之一。近3年,Gartner在主要的战略技术趋势中都提到组装式技术,2021年首次提出组装式企业,2022年提出可组装式应用,2023年在2项主要战略技术趋势中都提到通过组装式技术来构建。

可组装式能力被频繁作为技术方向,主要是因为可组装式能力可以让企业更容易适应类似新冠疫情的变化冲击,帮助企业面向新的业务价值点、通过组装工具去把控飞速变化的风险。可组装式能力将为企业增加极大的竞争力和灵活性:

  • 门槛更低:搭积木方式组装应用,降低门槛,使业务可以参与进来;

  • 产品更敏捷:产品从单一解决方案转变为预先预组装的业务功能集,可更敏捷响应外部变化;

  • 交付更敏捷:采用组装式方法交付新特性比竞争对手快80%;

  • 决策更敏捷:具备可组装式能力,能够在决策时做出更快的更改和响应。

那到底什么是可组装能力?如何具备才能具备可组装能力?可组装是否就是模块化、微服务?可组装架构是否就是微服务架构?

01 什么是可组装能力

可组装的几个概念定义

为了搞清楚什么是可组装能力,我们需要明确什么是可组装单元、可组装式应用和可组装式开发等概念。

概念1:可组装单元

Gartner把可组装的单元叫PBC(Packaged business capabilities),翻译为中文叫做打包好的业务能力,后续我们都简称PBC。我们摘取了Gartner官网的英文定义:

Packaged business capabilities(PBCs) are software components that represent a well-defined business capability ,functionally recongnziable as such by a business user.Techically,a PBC is bounded collection of a data schema and a set of services,APIs and event channels .The well-implemented PBCs are functionally complete to ensure autonomy(no critical external dependencies,no need for diret external access  its data).PBCs are meant to be used as building blocks for application product suites and custom-assembled application experiences.

从定义看,PBC是定义良好的业务功能,可以被用户识别的软件组件;是软件组件,不是序列化的程序包,这块有区别于微服务。

从技术上讲,PBC是有边界的集合,组成元素包含内部数据、元数据、服务、API和事件通道。PBC在功能上是完整的,以确保自治(没有关键的外部依赖,不需要直接访问其他组件的数据)。

概念2:可组装式应用

结合PBC定义,可组装式应用就是由一系列封装好的PBC按业务组合。

概念3:可组装式开发

可组装式开发就像搭积木一样把一系列PBC按业务组合,并开发业务场景的界面,当需求变化或流程变化时,可以通过新增、拆分、替换等方式重新组合PBC即可。

概念4:可组装式架构

可组装式架构是基于PBC为基础,用户可以按需组合多个PBC加上项目化需求构建业务应用。业务封装遵从PBC标准。

微服务架构的主要特征为充分解耦,提供服务注册、服务发现、服务安全、熔断降级等管理,提供监控、升级、灰度等治理。可组装式架构是一种新思维,是微服务架构的进一步演进,变革了应用交付模式,采用组装式交付,通过自助方式选择PBC并进行组装。

组装能力评估模型

可组装能力概念清晰后,我们看下如何评估组装式能力。Gartner给出可组装能力评估模型。评估模型从模块化、自治、可发现、可编排四个核心维度来度量企业的技术和业务抽象能力。

  • 模块化:模块化是基础,也就是封装组成整个系统的每个PBC都必须是具有独立而完整业务逻辑的单元。信息隐藏、分离关注点、封装等是划分良好模块的方法。

  • 自治:PBC要关注边界,可以有自己的存储、数据等,不能直接去查另外一个PBC的数据。

  • 可发现:可发现包含两个方面,一是PBC组件开发出来后,可以业务用户快速找到,文档足够清晰和完整,能让业务用准确评估适用性;二是指动态注册和发现,通过动态注册和发现组件来完成业务流程的动态编排和扩展。

  • 可编排:基础的可编排需要支持业界通用协议,不限于特定的编程语言。PBC组件提供者要尽可能让自己的组件可编排,比如定义好清晰的接口、做好幂等控制、支持标准协议、可扩展等方面。

02 如何具备可组装式开发能力

企业要实现可组装式的目标,需要组装平台和PBC一起努力达成,两者各有侧重,PBC侧重于模块化、自治部分,组装平台侧重于可发现和可编排能力。

从可组装式开发看,需要实现组装式开发需要PBC和组装平台,组装平台实现PBC的管理、可视化组合和编排、可视化界面开发和可视化业务流程开发,PBC是按业务场景进行封装和供给。

那我们重点看下什么是合格的PBC,组装平台需要具备什么能力。

如何封装PBC

基于PBC的定义看和组装能力评估模型,PBC至少需要满足如下标准:

  • 内部功能:包含业务模型、数据、服务;

  • API:对外开放标准协议的API;

  • 消息通道:开放消息通道;

  • 服务:PBC设计层面考虑自治,考虑幂等。

除了最基础要求,封装时候还会有一些关键点需要重点关注,比如PBC的是否需要UI、PBC粒度、PBC的可变性、PBC的架构适配性等。

关键点1:PBC的UI

针对PBC的UI,我们建议是可选的。主要是考虑UI的变化非常频繁,布局、颜色、流程、交互方式都会频繁发生变化,PBC不推荐包含UI。当然,为了保证统一的UI风格设计,建议PBC组装过程通过统一的UI设计工具实现风格统一。

关键点2:PBC的粒度

PBC封装粒度可以采用业界应用的比较多的是领域驱动方法(DDD),基于领域驱动方法,我们一般会按照实体或者聚合来划分PBC。

关键点3:PBC的扩展点

PBC是业务能力封装,要实现PBC的高复用,就需要考虑PBC适配多样化的业务场景。PBC的设计层面可以采用共性和变化分离办法,即采用目前流行的基于业务身份的扩展点架构,分离的变化采用扩展点方式实现,不同的业务身份实现不同扩展点来支持变化的实现。

关键点4:PBC的架构适配性

为了考虑PBC复用到不同业务场景,不同业务场景可能有不同数据库、中间件等诉求。PBC在架构层面可以比较容易实现不同数据库、中间件的迁移,最好是可以适配多种数据库、多种中间件。

基于以上关键点分析,PBC的封装我们可以采用如下模型来表示:

PBC的内部能力

  • 基础信息:PBC版本信息等;

  • 元数据:资源定义、配置定义、流程数据、服务数据、领域模型设计等;

  • 文档:提供功能介绍、使用场景、操作手册、安全检测问题、测试报告等;

  • 数据:业务数据等。

PBC的集成能力

  • 外部资源依赖:外部API接口、消息、数据源等依赖;

  • API接口:对外提供的API列表,能自动发现并注册到API集成平台;

  • 消息:对外提供消息接口;

  • 数据交换:对外提供的文件数据交换等;

  • 扩展点:PBC封装时候开放的扩展点列表。

PBC的架构适配性

  • 架构适配提供的多数据库、多中间件的可选配置。

PBC的用户界面

  • 可选,页面名、URI清单,用于PBC的试用和微服务页面装配。

组装式开发平台

有了合格的PBC,那组装平台需要管理PBC,并对PBC组装、编排,并按业务场景进行界面的开发,基于这些,我们认为组装平台至少需要具备如下能力:

  • PBC管理:提供PBC的标准和规范、上下架管理、订阅管理等全生命周期管理;

  • PBC组装和编排:提供可视化的PBC的组装和编排;这块就需要服务集成、数据集成、服务编排、流程编排,并需要提供PBC的界面开发。

组装式开发平台主要包含组装工厂、资产市场、连接与集成。

  • 资产市场:统一定义资产标准和规范,提供资产目录、资产管理能力,资产上下架和使用流程流程化;资产种类包括应用模板、PBC、基础组件、页面区块、页面模板、函数等;

  • 组装工厂:提供可视化工具,实现PBC的行组装和编排,并通过可视化设计器进行场景界面开发;

  • 连接与集成:提供服务集成、数据集成、消息集成和生态集成能力,提供PBC的集成管理,提供应用、PBC跟企业内外系统的集成。

当然,企业要具备组装式能力,除了组装平台和组件生态外,还需要在团队和协作模式上做一定调整。需要建立融合的团队,让业务人员和技术人员融合一起,通过快速组装方式实现业务响应和快速创新。

最后插一句,浩鲸科技灵犀平台是一个组装式开发平台,提供了PBC全生命周期管理、资产市场、可视化的组装工具,可以把一系列PBC按业务组装成不同业务应用。

未来技术方向——“乐高式”可组装式开发能力相关推荐

  1. IT:后端进阶技术路线图(初级→中级→高级)、后端开发工程师(技术方向分类之后台业务开发/中间件/内核/分布式架构)基础知识简介、技术路线/技术趋势指南(如何选择自己的技术方向)之详细攻略

    IT:后端进阶技术路线图(初级→中级→高级).后端开发工程师(技术方向分类之后台业务开发/中间件/内核/分布式架构)基础知识简介.技术路线/技术趋势指南(如何选择自己的技术方向)之详细攻略 目录 后端 ...

  2. 选择技术方向都要考虑哪些因素

    本文主要是作者读安晓辉老师的<程序员职场进阶 32 讲 >中关于"选择技术方向都要考虑哪些因素"这部分做的一些笔记和自己的思考.在这里分享给各位! 选择一种技术可能会考 ...

  3. “乐高式”自动驾驶研发开放平台,让开发更简单灵活高效

    一.2周构建自动驾驶研发平台的秘诀详解 自动驾驶商业化落地加速 中国自动驾驶行业目前面临两个较大的变化.首先,去年11月北京正式开放自动化驾驶的商业化试点,这意味着自动化服务迈过了商业化门槛.与此同时 ...

  4. 对我的学科方向软件工程开发技术方向的认识

    写于2007年9月 摘要 目前北京交通大学软件学院软件工程专业分为两个方向,即软件开发技术方向和数字媒体方向.我将要选择软件开发技术方向.软件开发技术方向的培养目标是: 培养学生掌握现代软件开发的过程 ...

  5. 未来安防人工智能需要攻克的几大技术方向

    前言:作为人工智能.大数据技术落地应用的典型行业领域,公安行业近几年来在相关技术的推动之下发生了较为显著的变化,其中人脸识别.车辆结构化描述等技术进入到相对成熟的应用阶段,但随着公安实战应用需求的增加 ...

  6. asp用于取代什么技术_.NET的未来:关于.NET5,每个.Net开发人员必须知道什么

    原标题:.NET的未来:关于.NET5,每个.Net开发人员必须知道什么 NET 5是.NET的未来 微软在Build 2019大会上宣布了新的.NET 5(.NET的未来). .NET 5将是用于构 ...

  7. 解决问题的经验-javaweb-第一次-已掌握技术栈大致总结(部分),和相关理解,总结,以及对未来学习方向的规划

    学习Javaweb的相关总结以及对未来学习方向的规划:{这很重要} 技术性总结 ** 后端方面 ** 1,基础的jsp+servlet 基础中的基础,但不完全推荐jsp,需要视情况而定 .jsp的九大 ...

  8. 技术人该如何选择未来职业方向?一起听听这几位美团同学的故事

    2021年还有不到两个月结束,如果你回头去看过去的这两年,不难发现中国科技互联网的潮流走向发生了巨变,用数字化技术改造物理世界.助力实体经济,已经成为一种格外重要的能力. 越是潮水方向改变时,选择越是 ...

  9. 2019年Android开发的未来发展方向该如何走?

    作为一名资深的Android 开发者.从2017年下半年开始,就听到各种言论,例如"Android 开发凉凉"."移动端开发没出路了赶紧转行"."要被 ...

最新文章

  1. Xilinx DMA kernel 驱动详解 (一)
  2. c语言文件查找函数fread,文件函数fread
  3. Ibatis.net 属性字段中使用 IN 查询条件
  4. html中怎么使用数字轮播,【求助】页面上显示几个数字,打开html的时候希望能滚动起来...
  5. IT巨头组队年末将推“Gen-Z”内存新架构,英特尔和思科缺席是闹哪样?
  6. element-ui 使用table控件绑定的list数据的坑
  7. 机器学习之琐碎知识(代码运行问题)
  8. fc协议有哪些数据传输服务器,FC协议详解
  9. ssh无秘钥登录报错sign_and_send_pubkey: signing failed: agent refused operation
  10. python学习网站-python学习网站整理
  11. 单链表java实现及相关操作(版本1)
  12. mysql上线脚本规范_MySQL 的 21 个规范、优化最佳实践!
  13. 软考历年真题以及真题试卷
  14. 单场淘汰制场次计算方法_怎样用单循环制进行的比赛计算场数
  15. 无法启动计算机上的服务msdtc,MSDTC服务无法启动,导致网站打不开
  16. leetcode 1818 绝对差值和
  17. html教程:网页字体的设置
  18. 面试常问--你是否曾经得到过低于自己预期的成绩?如果得到过,你是怎样处理这件事情的?
  19. 怎么把视频压缩到100MB以内
  20. Codeforces Gym 2015 ACM Arabella Collegiate Programming Contest

热门文章

  1. 抖音短视频SEO优化排名服务
  2. No.184# 蓝绿发布实践回顾
  3. C语言 联合(union)
  4. C语言联合体union详解
  5. 街头篮球最近无法进入游戏解决方法(转)
  6. Armory​以主要成员身份加入持续交付基金会
  7. L1-034 点赞 (20 分)
  8. matlab绘制三维点云和点云凸包
  9. 如何使用浏览器开发者工具?
  10. 人脸识别-Java实现刷脸登录