Lattice 在提高低代码平台高可扩展性的实战
Lattice 是一个强大的、轻量级的,面向业务定制高可扩展的业务管理框架。通过使用 Lattice 框架,可以对复杂的业务定制进行高效的组织与管理。关于 Lattice 的介绍,可参见:https://xie.infoq.cn/article/85fe94515a1ce0a8315550d62
1 传统低代码平台的挑战
低代码平台是最近几年比较热门的一个话题。当传统的开发模式面临成本高、周期长等困境的时候,低代码开发工具的只需要点击几下,非编码人员也可以构建简单的应用程序的解决方案看起来很不错。很多低代码厂商抓住了客户这一需求点,开始大力的营销着低代码开发工具,投资机构也将目光瞄准在这一赛道。
这几年,市面上涌现了大量非常优秀的低代码 SaaS 平台。他们无一例外的都在宣传“无码化”、“拖拉拽方式配置”、“业务人员开发应用”等等。这些特点无一不是在体现应用搭建快、配置简单、应用上线快。也的确在特定场景下,这些平台能够快速的实现一个应用的搭建。但不同类型的业务、不同体量的企业,他们的业务复杂度会差异非常大。而且,业务规则也会随着企业规模的增长,也会变得越来越复杂。
从 CTO/CIO 的视角,除了应用搭建快、上线快这些基本能力外,还需要考量:
业务的可持续发展:当业务随着企业的发展,其业务规则复杂度也越来越高时,之前基于低代码平台构建的应用是否能很好的对业务进行支撑?复杂的业务逻辑,低代码平台是否支持?复杂的业务配置,业务人员是否能够胜任?繁琐的配置,开发人员是否愿意去用?
业务安全生产:传统的低代码平台,其实是一个面向页面表单、流程、数据、规则的高可配置系统。有些页面表单、流程在配置之后,就立刻生效了。这就存在了巨大的安全隐患,页面表单的修改,往往是要配合流程的修改、规则的修改,甚至是数据模型、周边相关集成服务的修改。并在统一测试无误后,才能发布上线。平台对于业务的安全生产的支持,是基本属性。
组织建设与人才获取:业务人员的本职工作,是确保进行业务规划制定、业务规则梳理、业务执行落地并确保能拿到结果。简单好用的低代码平台,可以让业务人员通过简单配置,快速制作原型 DEMO,并做业务逻辑确认。但是,业务人员并不能为 IT 系统的高效、稳定负责。这是典型的 “能做”与“该不该做”的问题,这也是 CTO/CIO 在信息化部门建设,对业务长期发展支撑,要想清楚的。
从开发人员视角看,传统的低代码平台所谓的可视化配置语言,只能算是一种高阶的业务抽象 DSL。而且,这种抽象之后的 DSL 并不是完备的。所以,从开发者视角看,他们需要一个具备高度可扩展的、非封闭的应用快速开发平台。以下一些问题,是开发者对低代码平台的一些担忧:
代码开发平台封装的组件是否限制了程序员的使用,对于不够丰富的组件库(永远不会完全丰富),组件的完善是否只能依赖低代码厂商?
低代码平台是否提供了语言级高可扩展能力,并且扩展的业务插件能和表单配置、流程配置、数据配置形成一个共同体,可以进行统一的版本管控、发布管控?
低代码平台是否对安全生产提供支撑,可以做到开发态、测试态、生产态的环境隔离以及流水线方式发布?
低代码平台是否足够健壮,能做到随着业务的发展,热点应用可以方便的升容或者缩容?
对于已经配置并发布的应用,后期的运维是否方便?
2 三位一体的应用快速开发平台
笔者在参与的某国内首创的无代码(No Code)、低代码(Low Code)以及轻代码(Lite Code)三位一体的业务快速开发平台,针对业务快速成长、大型企业数字化转型中的复杂业务逻辑,提供了高可扩展的插件化机制。该平台在模型、表单、流程上提供了大量的可扩展点。企业 IT 部门(或者 ISV)可基于这些可扩展点,对模型处理、表单渲染、流程处理进行逻辑定制与扩展。这些业务扩展逻辑能以插件化、云原生方式进行部署。随着业务量的增长,可以根据业务量进行升容缩容。
基于应用开发新模式,让应用搭建方便快捷,复杂业务定制也游刃有余。该平台不仅拥有表单、流程、表格、自动化、插件开发等核心功能。通过拖拉拽的操作方式,让企业快速搭建出负责自身需求的应用。灵活与高可扩展性有助于企业规范业务流程、促进团队协作、实现业务精细化跟踪与管理,让商业创新更简单!
该应用快速开发平台包含 9 大功能:表单设计、模型设计、表格设计、流程设计、插件开发、模板中心、环境管理、版本管理、自动化。
这里,我暂不对传统低代码中的表单设计、流程设计、模型设计等基础特性展开介绍。我先重点介绍里面所特有的,轻代码方式高可扩展的业务插件特性。
3 轻代码业务插件特性介绍
3.1 应用业务插件开通
在平台中创建完应用后,可以进入应用,并切换到“插件管理”模块。如果此时还没有为该应用生成插件代码仓库,会显示如下信息:
我们点击“开通”按钮,此时会提示要针对页面、模型、任务等哪些功能做扩展,如下:
我们全部勾选后,继续点击”开通“按钮,系统会为该应用分配一个代码仓库。插件代码仓库创建完毕后,会显示如下界面:
我们可以把分配的代码仓库地址,在本地执行命令,把代码下载下来:
复制代码
然后,我们可以用 IDEA 打开这个应用插件工程,我们可以看到平台已经默认给大家生成了针对流程、界面、模型的扩展点空白实现。如下:
我们的开发同学可以针对扩展点门面里面的扩展点进行 Override,即可实现以轻量级代码的方式进行复杂业务逻辑的扩展。比如,我们可以在任务创建保存到数据库之前做最终校验、额外复杂业务信息存取等。
3.2 应用插件部署
基于应用扩展点构建的业务插件代码,是需要编译并部署到插件容器中的。如果业务插件还没有购买容器,首先要先购买容器并进行绑定。如下图所示:
点击“去购买”,我们可以根据业务需要来买不同规格的业务容器,比如 CPU 数、内存大小、副本数以及时长,如下:
点击下一步进入容器资源购买结算页,在完成付费后,即可完成容器资源的购买。
在容器资源购买成功后,我们点击“更改”按钮,可以为当前应用插件的开发环境、测试环境以及线上环境进行资源绑定。如下:
点击确定后,即可完整应用插件环境与容器资源的绑定。
对于开发好的业务插件,可以点击“发布”,在弹出的对话框中,选择要发布的版本分支后,点击“发布”按钮。完成将业务插件编译、打包并部署到已购买的容器中。
平台会用流水线方式,对开发、测试、生产环境分别进行部署。在业务插件发布详情页,我们可以看发布的过程以及发布日志,如下:
在平台中,定义了大量的可扩展 API 供业务插件进行开发,下面我们就以两个简单并常见的业务定制案例进行介绍。
3.3 业务定制插件样例
样例 1:定制页面标题
我们在页面的可视化设计器中,把需要通过轻代码方式进行定制的页面,启动插件功能。该选项位置如下:
只有启动了“插件功能”的页面,才能以轻代码的方式对该页面用 SDK 方式进行定制扩展。
页面屏幕(Screen)在渲染时,对于一些复杂的业务逻辑,开发者可以通过代码方式,对页面信息进行自定义。最终,平台会根据最终调整的页面内容进行渲染展示。
我们以下面这个轻代码样例应用为例,他的原始 Header 中的标题是"Origin Title”:
我们对这个页面的标题,用轻代码方式进行自定义:
插件代码提交后,编译并部署到开发环境中,我们可以看到运行结果已经是我们定制之后的结果。如下:
样例 2:定制任务流水号
默认情况,任务的流水号 KEY 的生成时按照时间戳方式生成的,时间戳格式流水号大致如下:
但在实际应用中,有的业务时希望用特定的前缀、特定内容以及后缀进行流水号生成。比如,“TT-20221221-0001” 就是要求 TT 作为前缀、中间是当天日期、后面四位是当天的流水(递增)。
那么我们可以通过定制任务 SDK 中提供的扩展点,实现自定义流水号规则:
插件代码提交后,编译并部署到开发环境中,我们可以看到新创建的任务的流水号,已经变成我们定制之后的结果。如下:
4 总结
通过上面这一个特性的介绍,我相信读者已经可以看到具备轻代码(Lite Code)能力的应用快速开发平台,在传统低代码平台基础之上,提供了面向企业级高可扩展,并具有 DevOps 安全生产能力的应用快速开发能力。各位有兴趣的朋友,不妨可以联系我,试一试!
版权声明: 本文为 InfoQ 作者【毗卢道场】的原创文章。
原文链接:【http://xie.infoq.cn/article/196bda96d1481d91ceba62601】。文章转载请联系作者。
评论