“任何平台只要是图灵完备的、逻辑自洽的,并且可以做到从无代码、低代码、全代码三种开发方式无缝衔接的都不能把它称为毒瘤。”Mendix 公司中国研发中心上海团队的技术负责人周勇说道。
从上世纪 80 年代开始的“可视化编程”到 2014 年 Forrester 正式定义低代码开发,低代码平台始终未被大多数程序员接受。2020 年,疫情爆发、巨头和资本的涌入再次带火了低代码,但低代码至今仍未像其他技术一样被顺利接纳。
谈及低代码,就不得不提 Mendix 公司。Mendix 公司成立在低代码还未火起来的 2005 年,其创始人 Roald Kruit 也验证了低代码平台在弥合 IT 与业务人员之间差异上的作用。2018 年 8 月,西门子以 6 亿欧元的价格收购了 Mendix 公司。
像 Mendix 公司里很早就进军低代码行业的这些人,他们是怎样在争议中前进的呢?InfoQ 采访了 Mendix 公司上海、成都和荷兰团队的研发团队,希望能够窥探到低代码发展的冰山一角。
究竟在解决什么?
低代码平台主要有表单驱动、模型驱动等。作为模型驱动的大力倡导者,西门子低代码平台主要在解决什么问题呢?
通常一个项目在最开始时,企业对需求只有部分的理解,这部分的细节再多,开发者也无法精确捕捉到业务人员的具体设想。随着后续开发的进行,业务团队和开发团队需要共同确定具体做哪些改进来优化应用程序。这里面的风险就是,错误的沟通会带来错误的改进,进而最终可能导致失败。对此,Mendix 公司创始人之一的 Roald Kruit 深有体会。
2000 年,Roald 在为客户开发软件时发现,无论文档篇幅多大、开会时间多长,自己总是因为不能准确理解对方业务逻辑而无法满足客户需求。究其根本在于,不同的企业都有自己的业务逻辑,业务逻辑部分需要懂业务的人具体开发,但专业的开发人员难以快速理解业务需求。
因此,Roald 想要努力弥合开发和业务人员之间思维和行为上的种种差异。带着这个目标,Roald 和其他两位合伙人一起在 2005 年创立了 Mendix 公司。
要达到业务与开发之间的平衡,结果必然是将开发难度降低、同时将业务逻辑部分加强。西门子低代码平台给出的解决方式便是用可视化、模型驱动的开发方式,始终与用户需求保持一致。
模型驱动的核心原则是抽象和自动化。抽象化是在比传统编码更高的抽象级别下定义软件应用程序模型。之前,为了解决面向对象与关系数据库存在的互不匹配的问题,业界通常的做法是采用 ORM(Object Relational Mapping)的方法,但仍属于用写代码的方式解决问题,操作复杂。可视化的方式定义对象、属性和基本关系等固然可以规避 ORM 的弊端,但也意味着比 ORM 更高一层的抽象。
对象模型从图像表达到可执行程序的转换过程即为自动化。开发者使用可视化的方式编写 App 后,需要生成 Java、JavaScript 和 HTML 等不同的编程语言代码来最终执行 App。平台需要保证这些代码是可编译的、逻辑自洽的,并且可以自动部署。
完全的高度抽象框架会带来性能问题,自动化则由于使用很多反射功能,需要在对象模型的高效和灵活之间寻求平衡。西门子低代码平台面临的技术挑战也集中在这两点。
低代码平台相当于重新换了一套编程语言,因此保证自身整体的逻辑自洽更为重要。比如,低代码平台如果不使用某个高阶函数功能,那在实现 Web 功能时可能会非常别扭,但要实现该功能则可能要用到不建议使用的全局变量方式等。这在一定程度上会限制低代码平台的迭代速度,因为每次迭代都要确保所有边边角角的问题都考虑到了,同时保证所有功能都可以正常运行。
最初的西门子低代码平台版本可以视为基于 Web 的应用程序,提供一种新的软件交付方式。这个平台就是业务和技术团队紧密协作的“融合剂”,业务人员能够尽早参与开发,开发人员通过持续的反馈循环可以将需求快速更新到应用部署中。
随后,西门子低代码平台先后经历了集成应用商店、支持完整应用程序生命周期管理的技术演进,但其内在的设计逻辑没有改变。
“我最喜欢的是,低代码平台让专业开发之外的人员和技能能够组合参与到构建软件的工作中,让许多来自业务方面的新观点汇集在一起,从而增强了开发的创造性过程。”Mendix 公司全球 R&D 部门高级总监 Dave McLeish 说道。
持续演进
但低代码平台的演进并不是孤立的,而是深度链接了整个 IT 行业的最新成果。
2013 年,西门子低代码平台正式支持一键式云部署,15 年开始支持模型共享,17 年可以通过 Studio 进行低代码和无代码的协作,18 年则开始加强 AI 辅助开发等功能。“就像 14 年时国外企业对云计算的使用量已经很高,最近大家又都开始使用 k8s,一些模块也在使用 Golang 语言进行升级等等,低代码平台要紧跟趋势、紧跟用户。”Mendix 公司成都研发团队项目负责人任磊说道。
西门子低代码平台的很多功能基于底层云服务。很多云平台的 API 偏复杂、抽象程度不高,低代码平台将底层 API 整合进来后,使用者能够方便地调用这些服务。
目前,西门子低代码平台主要包含两部分:云上版本和本地版。其中的云上版本,可以当做无代码的环境,即常见的 Studio,它是一个 SaaS 平台,包含了构建、部署、运行、需求管理等整套开发生命周期活动。本地版则被称为 Studio Pro,它可以在客户自己 IDC 环境,甚至在开发者自己的电脑里实操运行,当然也可以一键点击发布至云端(剩下的开发环节直接在云上操作)。
此外,西门子低代码平台选择用比编程语言更抽象的 Microflow 表达。Microflow,可以看做是图形式的逻辑编排,即图形化编程。Mendix 公司已经通过众多的 Microflow 在对 AI 编程进行数据训练。它们将形成的几百万个模型储存到云上,并对这些模型进行训练,通过分析里面的内在共性逻辑,自动生成一部分代码,因此开发者不再需要手工编写重复的代码。同时,西门子低代码平台也在加入语音识别和语音输入等功能,让低代码平台可以生成带有类似功能的应用、小程序等。
“西门子低代码的独特之处在于将低代码应用于多个技术领域,如数据集成、工作流、智能应用(利用人工智能、语音控制)等的开发。”Dave 表示。
当然,很多人会对低代码平台的代码质量产生质疑。在低代码平台不断演进过程中,西门子低代码平台在代码质量方面是怎么做的?
在周勇看来,低代码平台的代码质量主要体现在可维护性、可测试性和可调试性上。低代码的可维护性跟全代码是一样的,需要定义的功能模块内聚性是否够好、结构是否清晰等。可调试性方面,使用者可以在 Studio Pro 里进行领域模型、nanoflow 和 microflow 等的抽象和调试,断点设置,参数列表与全代码调试的体验几乎一样。唯一的不同在于全代码可以看到很完整的调用堆栈,这是低代码需要改进的地方。
可测试性方面,关键是有没有好的单元测试工具。西门子低代码平台有 unit testing module 这样的测试工具,将其接入到项目中可以做单元级别的测试。“不是低代码平台让程序调试变复杂,测试本质上是要有好的工具链,工具进化足够好后与全代码写的应用的测试性没有区别。”
进入中国
“坦白来说,低代码平台的成功更多是因为降低了开发门槛,从商业角度解决了降本增效的问题。”周勇说道。
一方面,国内大厂们面对业务的不断发展变化,需要一套成熟的行业应用模板,只要简单修改就可以直接用到自己的应用上。另一方面,在数字化转型浪潮下,一些不以软件开发为竞争力的行业,如金融、保险、制造等,缺乏相关技能和人才储备。低代码能够使企业更加有效地对过时的遗留系统进行现代化改造。更重要的是,低代码提供了一种将遗留系统和其他系统集成的方法,将新功能添加到老旧应用的同时,保持了应用的完整性。从这方面看,低代码与大厂和传统企业都有很高的适配度。
可以看出,当初低代码加强产研协作的目的在国内已经变成快速开发的工具。
2020 年,国内低代码行业迎来了第一个增长高峰。艾瑞咨询数据显示,2020 年中国低代码行业市场规模为 15.9 亿,受前两年高增长及疫情影响,增速有所放缓但还是达到了 80.2%。低代码平台正式从小众走向大众。次年 1 月,Mendix 公司正式宣布进入中国。
中国低代码发展周期,来源:T 研究
2019 年下半年,Mendix 公司首先成立了成都研发团队,主要负责西门子低代码平台的开发运维工作,同时针对中国市场做本土化开发,最核心的是将很多欧洲平台上的服务事项从 AWS 迁移到腾讯云。
同年底,Mendix 公司成立了上海研发团队,该团队属于西门子低代码 App Service 组,主要负责付费组件和通用服务的开发,如 3D Viewer 等组件,面向全球开发者和低代码使用者提供服务。国外团队统筹平台各个功能的开发,国内二十三人的团队收集本地市场需求,与上下游的全球团队达成一致,进行“无时差”的协作。
在中国研发团队看来,市面上表单驱动的低代码产品更偏向无代码,具有通用性,更像是统一的模板,而西门子低代码在内的大多数国外公司更多是做生态建设、平台建设,继而推出面向行业的模板。
这种差异来自国内外用户的不同。国外用户更倾向于从零开始做自己的特色应用,如应用系统开发、个人 App 开发和个人建站等场景。而国内用户更贴合实际使用,需要的是简单修改就可以快速应用的模板,如 OA、ERP、CRM 等场景。因此,尽管模型驱动平台为公认的最佳落地模式,但在国内还需长时间的积累。
Mendix 公司目前优先选择有一定客户基础的合作企业,如企业微信、阿里钉钉等,为其提供集成模板服务。实践中,低代码的应用并不复杂。在对高德地图做深度集成时, 中国研发团队一个人用了一周的时间就完成了工作。
“开发自用组件实际上可能两三天就可以了,但给所有人用的组件至少需要一周的时间实现代码,一周的时间做测试。”周勇说道,如何加强自动化运行来减少用户工作量也是未来西门子低代码研发的方向之一。
西门子低代码未来将更深入各个行业,为企业提供解决方案模板。同时企业也可以作为贡献者,将自己的模板投放到西门子低代码的 Marketplace 上供用户付费使用。
直面争议
当前,国外低代码巨头已进入到整合阶段,而国内低代码行业还处于探索期,对是否使用低代码仍有一些争议。
面对这些争议,Mendix 公司成都研发团队技术负责人辛树明指出,评判低代码不适用的基本可以分为两类:有软件开发经验丰富的和完全没有 IT 开发经验的人。
对于开发经验丰富的人,他们的质疑来源于没有遵循低代码开发的最佳实践。低代码满足的是需要 IT 支持的业务场景,并不是完全从底层全部自己建立的需求。从底层构建的场景反而更适合专业开发者使用传统代码直接完成,因此专业开发者们会感受到由于低代码的生疏感带来的限制性,进而产生抵触感。
另一方面,对于业务人员来说,由于误判了低代码的便利性,当以“简单拖拽即可搭建应用程序”这种思维定势构建 APP 时,非专业开发者必将会面临不小的挫折。因此,低代码平台更适合有一定计算机背景的业务人员,或与 IT 团队合力进行开发。
西门子低代码平台在实现相关功能时,优先选择无代码方式实现。无代码主要集中在企业对已有软件做二次开发的场景,比如为满足业务需求要对 SAP 系统里的数据做分析、从中心系统拉取数据做另外的设计等,这也是西门子低代码平台用户用得最多的开发方式。
但当程序复杂到一定程度后,有代码是不可避免的。周勇明确指出,如果企业要建立自己的核心系统,同时对其性能要求特别高,那么低代码平台不是首选。“低代码平台能够应付的复杂程度取决于具体的需求。从原理上讲,低代码平台应该可以创建任意复杂度的程序,但要达到这点,需要平台不断进化。”
有代码阶段,西门子低代码平台会提供相关组件来减少用户工作量。比如,面向制造业的 3D Viewer,可以用两周左右的时间实现 3D 可视化,如果仅仅是调 SDK、调 API 的方式一般要在三个月左右。
企业通常也会先逐渐尝试低代码,得到正反馈后才会放更多业务到平台上。技术负责人需要根据自己团队的经验、成员能力和技术栈等,来选择更合适自己的框架。对于头部、中部和底部不同规模的企业,西门子低代码也有不同的产品形态和模式去服务整个市场。
结束语
未来,软件需求将继续上升,开发者需要更聪明地创造软件。无论如何,除了传统的汇编代码、低级语言及更高级别的面向对象和函数式编程范式,低代码,乃至无代码都将逐渐成为提升开发能力的重要助力。
“大家都在尝试,直接一票否决对整个行业并没有好处。”周勇表示。
参访嘉宾:
上海团队:徐献阳,项目负责人;周勇,技术负责人;郎亚平,资深应用开发工程师;华超,软件工程师
成都团队:任磊 ,项目负责人;辛树明,技术负责人
Global 团队:Dave McLeish,Mendix 公司全球 R&D 部门高级总监
本文选自《中国卓越技术团队访谈录》(2022 年第一季),本期精选了云鼎实验室、优麒麟、火山引擎 ByteHouse、PingCAP、搜狗输入法、西门子 Mendix 等技术团队在技术落地、团队建设方面的实践经验及心得体会。点击下载本期全部内容,查看更多独家专访!
《中国卓越技术团队访谈录》是 InfoQ 打造的重磅内容产品,以各个国内优秀企业的 IT 技术团队为线索策划系列采访,希望向外界传递杰出技术团队的做事方法 / 技术实践,让开发者了解他们的知识积累、技术演进、产品锤炼与团队文化等,并从中获得有价值的见解。
访谈录现开放长期报名通道,如果你身处传统企业经历了数字化转型变革,或者正在互联网公司进行创新技术的研发,并希望 InfoQ 可以关注和采访你所在的技术团队,可以添加微信:caifangfang842852,请注明来意及公司名称。
评论 1 条评论