its better to run than curst the road
初心
相信很多小伙伴在刚刚接触项目交付时会发出相同的感慨
- 项目交付的低水平。
我们提出为企业做全面数字化转型很多年了。 但是在项目实际执行的过程中,常常的会陷入劳动密集型的堆人,堆代码的节奏中。 代码缺乏设计,稳定性听天由命。 - 项目沉淀难
因为项目 deadline 的紧迫,往往能成功交付便万事大吉。 虽然希望可以在项目中沉淀一些能力,但是因为项目定制逻辑过多,沉淀成本过高,最终放弃,提效也就无从谈起。
作为一名技术人,当时我常常发出感叹,我们的边界在哪里,沉淀在哪里,价值又在哪里。
正巧 Gartner 在 2021年10月19日,正式发布了 2022 年重要战略趋势, 其中包括了“可组装式应用”这一战略。当时我的 Leader @觉天 根据这一战略趋势,结合项目交付的现状,正式提出了可组装式交付的概念(后演化为云巧)。 在我看来完美回答了,如何提高交付效率、沉淀项目代码、把我们从交付的业务泥潭中拯救出来的问题。 所以我变毅然投入云巧核心组件的开发。 后面我会在站在一个内部开发者的视角,聊一聊云巧核心组件是什么,开发云巧核心组件的设计思想,以及价值在哪里。
关于云巧组件
什么是云巧组件
第一个理念是“从项目中来,到项目中去”,所有的组件都是从项目中沉淀而来,抽象后可以被复用到其他项目中去。第二个理念是“赋能开发者”,云巧的定位是“数字化转型的中间件”,云巧的使用者是阿里云生态伙伴的开发者,通过云巧组件可以帮助他们更好地开发各行各业的数字化系统。第三个理念是“开放”,云巧市场的定位类似于Github,提供各种数字化转型所需的技术组件,伙伴可以基于项目需要灵活选择组件,项目中的其他部分由伙伴定制化开发,最终把云巧组件和定制化开发部分集成起来,完成一个完整项目的交付。
我们可以看到,云巧组件天然应该是从交付项目实际需求出发,可定制,可复用的组件。 解决的是交付场景下,需求多变,定制困难的问题。
云巧组件的设计理念
引用自《Gartner 可组装式应用的报告的解读》
Gartner提出了可组装能力指数,通过四个核心维度(模块化、原子性、可编排、可发现)来度量企业的技术和业务抽象能力。
云巧组件的设计思路正是取自于可组装式应用的设计思想,下面会回到具体的 4A 统一安全管控组件,我们将可组装能力指数四个核心维度与该组件做一一对应
云巧组件的最佳实践 - 4A 统一安全管控组件
4A 是指:认证 Authentication、授权 Authorization、账号 Account、审计 Audit。云巧 4A 统一安全管控组件实现对自然人、资源、资源账号的集中管理,提升系统安全性和可管理能力,实现可视、可控、可信的安全管理体系。统一安全管控组件(以下简称 4A 组件)系统超级管理员角色包括用户管理、数据字典管理、系统公告管理、应用管理等,各个应用对接 4A 组件之后用户、角色、资源权限都会交给该平台进行管理,其他应用将无权直接对用户、角色、资源进行管理操作。
为什么我们选择云巧 4A:
- 4A 组件与其他云巧组件打通, 如果项目中依赖多个云巧组件可无缝组装
- 4A 组件对客户已有 4A 系统提供适配器,可以兼容 IdaaS 、Cas 或其他客户自研系统
目前 4A 组件已经在 GTS 内部多个项目中落地,并沉淀了支持对接 IdaaS 、Cas、Xxl-sso 等多个系统的能力。
自治性
组件可替换
在 4A 组件的设计理念里,就将可替换的能力作为基本能力进行设计。 在组件的 SDK 中提供了 适配器(adapter) 以 OIDC、OAuth 2.0 作为设计的技术标准, 将登录的主要逻辑抽象为 Filter,并提供了扩展点使得在项目中只需要专注于关键接口的实现。 目前 4A 组件默认提供了对接 IdaaS、Cas、Xxl-sso 等登录系统的能力, 同时对于项目中已存在的用户中心、登录系统均可以在进行少量的适配后加以支持。
数据自包含
在 4A 组件中,使用 FLYWAY 作为数据自包含的实现, 在启动时会通过 FLWAY 自动向数据库注入原始数据,保障了组件开箱即用的能力。
隔离需求对变更带来的影响
云巧组件的生命周期主要由云巧资产市场进行管理。 云巧资产市场中有组件快照这一关键的特性, 可以保证组件在生成快照的一刻代码、配置、镜像等内容的不变性。 4A 组件后续的持续迭代不会对已有快照版本产生影响。
模块化
组件的封装性
4A 组件提供了封装完善的 yunqiao-foura-sdk 无论是面向前台的登录场景,还是面向其他应用的管理场景,都通过 SDK 提供了清晰的入参、出参、异常的定义。
同时因为 SDK 的提供,使得无论向后对接 IdaaS、 Cas 还是其他系统对端的返回都是一致、透明的。这在 4A 组件与其他组件(如 表单组件、流程组件)做集成时,其他组件都无需进行改造。
面向单一、清晰、完整的业务定义
无需赘言, 4A 的功能内聚于 认证、授权、账号、审计,这四大功能点, 对外提供提供低耦合的 yunqiao-foura-sdk 。
可发现
被注册中心 & 网关发现
4A 组件支持 SpringCloud 的标准, 可以通过指定 URL 进行调用,也可通过集成 nacos 被发现, 若您的项目中需要引入 API 网关, 4A 组件天然集成了被云巧 API 网关发现的能力
自启动
同时 4A 组件已上架资产市场,符合资产市场上下行标准,通过暴露变量,在组件下行到目标交付项目时资产市场解决资源预检、变量自动替换等问题,保证 4A 组件可以一键启动成功。
可编排
页面编排
在管理端,4A 组件符合前端云巧标准,所有页面均可被门户组件选择使用,也意味着您在使用 4A 组件管理端的能力时,可以选择使用一项或几项功能。
在登录端, 4A组件提供可配置的能力,可以替换 banner 图、logo、title 等登录信息,也可以配置您项目的钉钉二维码等。
能力编排
4A 组件默认提供独立部署的能力,当在云巧资产市场被引用下行启动后,默认独立运行。 当需要对接云巧门户时,仅需要修改一个配置项就可以切换为非独立运行模式。
Quick Start
一起建设云巧
在 FY 22 ,我们开始进行云巧的探索,我们提出了一套组件开发的方法论指导交付领域的软件开发。 因为我们深知没有实践的理论是无根之木,所以我们也毅然投入去建设云巧的核心组件去验证我们理论的正确性。 在 @张瑞 瑞哥的支持和规划下,我们也成功举办了第一届云巧大赛,取得了一些阶段性的进展。
同时,我们深知我们的人力微薄,所以我们建设了云巧资产市场去容纳的组件,我们将组件做的尽可能的自包含、低耦合、可定制,以期有更多的伙伴可以去使用我们的组件、建设更多的组件,繁荣云巧的生态。
软件开发没有银弹,只有不断贴合交付场景,渐进增强式的步步为营。 所以我们需要更多的同路者。
如果您想使用 4A 组件, 请联系 @文衡
如果您想建设云巧组件,请联系 @汝砺
如果您想咨询使用云巧交付的其他若干未尽事宜,请联系 @墨月 @江怀 @晴芊