组装式应用交付-云巧 觉天(施磊) 阿里云-全球技术服务部 PART1/ 组装式应用交付的理念与方法 PART2/ 项目实践案例 PART3/ 面向未来的展望 PART1 组装式应用交付的理念与方法 数字化转型时代对IT架构的挑战 数字化已经成为共识,“加快数字化发展建设数字中国”进入十四五规划,但是企业对数字化的认知并不清晰。除企业的认知不足、组织配合不够等原因外,业务环境多变、数字化技能短缺也是主要原因 多变的业务使得企业处在VUCA环境IDC:70%的企业未达到数字化转型预期 VUCA Volatility易变 70% 转型未达 预期 39% 规划模糊 48% 未调整组织 Uncertainty不确定性 Complexity复杂性 73% 未涉及 中国企业数字化转型进展颇为不顺 79% 未明确 Ambiguity不清晰 商业模式改变 55% 未具备 移动办公 数字文化 数字化应用交付的画像与挑战 -客户遗留系统- -数字化应用- 业务服务 通用技术服务 中间件 数据库 对象存储 消息队列 缓存 CMDB 监控 搜索 日志 云底座 密钥服务 Oracle SQLServer MySQL 客户遗留数据库 ······ HR系统 ITSM OMS WMS CRM ERP 企业服务总线 客户遗留应用 ······ 系统入口B 系统入口A 企业主页 客户遗留页面入口 文档 搜索 流程 消息 权限 人员账号 登录 API&SDK 业务域 业务域 业务域 业务域 业务域 业务域 业务域 业务域 -服务端- 防火墙 页面入口 xxx.xxx 接口网关 api.xxx.xxx 开放网关 openapi.xxx.xxx 域名入口 安卓/IOS PC、H5、钉钉小程序 客户端 55% 42% 项目涉及多家伙伴交付 伙伴的前端技术栈不一致 以React、Vue、Angular为主 12% 有完整的前端工程体系 普遍缺乏灰度、自动回滚、A/BTest能力 59% 未接入监控 接入监控的项目,20%采用PrometheusZabbix等开源方案 27% 未引入开发规范 10%的项目未使用任何API管理工具 52% 项目存在需求不清晰的情况 37%的项目需求变更频繁 47% 未统一领域建模标准 缺乏DDD等领域建模实操 48% 客户要求适配开源中间件 比如开源Memcache、Kafka、ES、minIO等 17% 项目涉及多云环境 比如ZStack、Azure、华为云及客户自建机房 缺乏统一的集成标准 集成效率低 跨团队合作,业务语言不统一 重复造轮子 应用云化,多云适配 缺乏云原生最佳实践 屏蔽PaaS层差异,封装云产品使用的最佳实践 抽象不同PaaS层中间件的差异,借助云原生框架,实现编程的接口统一,提升软件的可移植性。 面向业务,构建可复用的软件单元 面向业务,规划可以独立提供服务的业务能力单元;技术设计上 ,用扩展代替耦合,避免对外部系统产生强依赖。 统一对外的集成界面,提升集成效率 在API、页面、消息等等可以被外部集成的界面上,制定统一的规范。让开发者可以借助工具,快速集成已有软件单元,提升新业务开发的效率。 组件是更适合数字化定开场景的沉淀和复用的颗粒度 产品复用 不适配客户的业务创新诉求 微服务复用 不能完整表达业务 组件级复用 技术和业务完整闭环 可组装指数(Gartner) •良好的模块化划分将产生合适 粒度的组件,既可以最大限度地提高敏捷性,又能保证组件 内业务的完整性。 • 最大化组件的自包含独立性。 在业务应用设计中,在更改或替换其他组件时对其他组件施 加的负担最小 •指组件为开发和运行时环境中的 组装、集成和治理做好准备。 • 可发现性意味着文档和其他元 数据的清晰度、完整性和可用性,让交付团队轻松找到组件 Gartner在21年10⽉发布重要战略趋势,提到可组装式应⽤(ComposableApplication) 可发现 可编排 自治性 模块化 数字化时代的软件复用:组装式交付 组装式交付最佳实践-云巧 组装式应用交付体系-云巧 1体系 云巧是基于组装式应用(ComposableApplication)理念提出的技术体系。针对应用定开交付场景,解决技术资产高效沉淀和复用。 UI API API 消息 消息 UI 微服务 微服务 微服务 数据和元数据 预集成云产品 可独立运行 •具备UI,可以独立运行并提供访问 •利用云原生技术,预集成云产品,适配 不同PaaS • • 业务闭环 组件的业务逻辑独立而完整 遵循高内聚,低耦合的业务设计原则 可组装 开发者友好 •统一UI规范、API规范等 •可以被微前端等技术组装,提升集成效率 • • 支持修改源代码来定制开发 做好日志埋点、链路追踪等工作 云巧组件的定义 通过复用组件,提升交付效率和质量 UI 前端 后端 移动端 数据自包含 应用集成 ApplicationComposition Platform 独立功能组件 交付项目 21年1月发布第一个云巧组件 云巧组件的定义和标准 云巧成熟度模型 Autonomous(自治):最小化组件依赖,独立运行自闭环CloudNative(云原生):支持容器化部署与弹性运维Cataloged(可发现):具有良好的自我描述能力Ochestrated(可编排):支持常用协议,能被方便组装Robust(健壮):质量保障,易于运维 DomainDriven(领域驱动):领域驱动,明确业务价值和边界 应用集成 运行时管理 组件装配 中心化管理的组件市场 资产下架 资产使用 资产上架 组件生产 组件的标准化生产平台 标准保障 DevOps 组件集成管控平台 提供完整的集成能力:页面集成|API集成|API编排|数据交换|事件编排 组件的集成管控平台 运行态 提供各种自动化集成工具和管控工具的一站式平台,加速集成效 率,提供运行时管控能力。 中心化管理的组件市场 设计态 对组件进行统一托管,设置技术准入门槛和上架机制,工程化解 决组件的上行和下行流程。 组件的标准化生产平台 设计态 按照既定的技术标准,并能够在软件研发流程中贯彻标准执行的 开发平台。 云巧工程体系三要素 下架通知 依赖确认 资源回收 下架审批 资产装盘 资产申请 资产下行 资源初始化 知识产权确认 可见性设置 行业分类 上架审批 架构守护 代码门禁 质量卡点 成熟度评分 环境搭建 资源规划 开发管理 发布管控 组件的标准化生产平台 BA/TM/客户 BA/PD/TM 业务设计/架构设计 •围绕领域驱动设计业务建模方法,BA/TM可以对自己的业务开展事件风暴建模工作坊,或者其他领域建模方法。建模结果可以沉淀到云巧工坊中。 架构可视化/架构洞察 业务流程可视化 质量标准可视化 领域模型可视化 前端开发 快速开发/用户体验保证 前端采用KOI工程脚手架,提供开箱即用的标准和研发方案。使用 B-Design设计系统,前端开发能够开发出统一的视觉风格,好处是让 不同的组件组装起来能为用户呈现统一的视觉风格,和一致的交互体验。 后端开发 快速开发/架构守护 •使用Dayuboot2.0,后端开发人员可以快速初始化工程,可以直接上手写代码。使用领域模型生成代码,大大提高后端开发的效率。 •基于领域驱动设计战术工具,设计了一套开发框架,后端开发能使用这些 框架可以写出更规范的代码,并且直接获得架构可视化的能力。 应用服务 •对于BA/PD,平台通过可视化领域模型的方式承载了核心业务的业务知识,用于与研发沟通的统一语言。 •对于TM,这些领域模型可以生成代码,作为领域模型与实现映射的途径。 组件中心化管理与分层 IoT 空间管理组件 设备管理组件 物流定位组件 LBS可视化组件 物流规则组件 质量管理组件 排产组件 工艺管理组件 物料管理组件 场景码管理组件 文书组件 资源管理组件 通办智能审批组件 通办事件管理组件 事件中心组件 数据资产目录组件 资源报障组件 对账组件 安全加固组件 客户端启动检测组件 参数加密组件 分布式参数组件 商品组件 卡管组件 支付组件 交易组件 营销组件 数字化应用交付零售制造能源 金融物联网 数字政府 互联网医疗 交通通讯媒体农业 业务组件 内容管理组件 字典组件 监控探针 流量染色 链路追踪 通用组件 云巧 Framework 分布式调度 分布式锁 通用幂等 接口重推 分布式多级缓存 B-Design(阿里云UED团队) 工程脚手架 Andriod IOS Koi 链路埋点 领域事件 异步任务补偿 安全加固 DayuBoot 共建 实人认证 云盾内容安全 应用身份服务 云原生应用交付平台技术 UIPaaS QiankunAEM 物流场景开发套件 规则组件 搜索组件 标签组件 数据开放组件 多语言组件 信息采集 4A组件 表单组件 流程组件 门户组件 通用SDK 视觉规范 工程脚手架 工具 工程脚手架 控件库 QI(自研) 访问控制 存储加密 密钥管理 安全规则 文档组件 消息组件 网关组件 对象组件 SAE RocketMQ OpenSearch OSSRDSKMS 移动端稳定性开发套件 组件的集成与管控 交付应用交付应用 页面API数据事件 组件集成管控平台 -自动化集成(LowCode)- -运行时管控- 页面编排 API编排 数据交换 事件编排 可观测性注入 安全加固 行为审计 微服务 数据和元数据 微服务 数据和元数据 微服务 数据和元数据 API API API 消息 消息 消息 页面页面页面 云巧组件 云巧组件 云巧组件 工程体系-构建组装式的软件供应链 01选配组件 云巧平台 组件装配单 02初始化 交付项目 GTS 统一工作台 研发项目管理 应用内分层架构 开发者/架构师根据客户SOW 4A组件 •云巧市场:自动初始化 …… . . .……. …… . .……. ,在云巧市场上寻找合适的组 流程组件 . . 研发项目,包括Fork组…..…. . 件,构成组件装配单。 件代码、分配云资源、 … . …… . .……. …… .……. … …… . .……. …… .……. 表单组件 构建流水线。 ... … … .... ….…. ..... … … .. ….…. 开发者 04组件沉淀 经过组件上架的流程,新组件沉淀到云巧资产市场 …… . .…… 门户组件 …… .…… …… . .…… •云巧工坊:基于云巧的开发框架,初始化新的定开应用。 03定制化开发 已有组件 定开应用 GTS 统一工作台 公共云部署 快速形成“研发基线” 安全合规检查 知识产权确认敏感信息扫描 代码安全扫描 ....... … … … ...... ….….…. •可以对已有组件进行定制化修改。 •新增集成层微服务、或者 集成开发/云巧组装平台 …… . .……. …… .……. …… . .……. 通过云巧的组装平台进行 …… . .……. …… . .……. 云巧成熟度评分 ....... … … … ... ….….…. 应用之间的集成工作。 …… . .……. .. … . . … …… .……. …… . .……. . 阿里云ADP 专有云部署 … . . . … …… .……. 组件管理 行业分类组件打标 资产上架到云巧市场 ..... … … .. ….…. CI/CD ... … … . ... ….…. PART2 项目实践案例 数字化项目案例(一) 项目背景 某大型制造业公司,需要对其核心的零件制造系统进行全面上云和改造,并且充分使用云原生的技术架构。 架构方案 制造业务 交付亮点 •基于云巧,快速交付了一个企业级基础设施,提升效率 。按互联网性能要求设计的云巧组件,完美支撑业务挑战。 •企业级“组装式”微前端体