您当前的位置:首页 > 电脑百科 > 程序开发 > 架构

面向数字化提质提效的低代码架构设计

时间:2023-05-09 13:26:55  来源:InfoQ  作者:

作者 | 网易数帆低代码架构团队、编程语言实验室

自 2020 年来,网易数帆探索可视化低代码编程已两年有余,打造了 CodeWave 智能开发平台(原轻舟低代码平台)用于企业应用开发。然而,不少编程技术人员对这一领域还比较陌生。我们开设《低代码技术内幕》专栏,旨在讨论低代码编程领域中的困难、问题,以及高效的解决方案。本文为第三篇,与读者共同探讨数字化转型背景下的低代码平台架构设计

专栏内容回顾:

基于 Vue 和 Canvas,轻舟低代码 Web 端可视化编辑器设计解析 | 低代码技术内幕

低代码编程及其市场机遇剖析 | 低代码技术内幕

在低代码市场篇中我们概述了低代码的定义和低代码产品的主要定位,描绘了低代码在近年的高速发展和其在未来 5~10 年国内外的巨大市场,其中聚焦到了国内数字化转型的背景和机遇,及其对低代码发展的推动作用。当前国内企业面对数字化转型仍然有很多挑战,因此低代码得到越来越多的企业的青睐。那么 为了帮助企业应对这些挑战,低代码平台需要具备哪些不可或缺及辅助增强的能力?为了支持这些能力,低代码平台架构又需要怎样合格及完善的设计?本文会一一揭秘。

企业面对数字化转型有哪些挑战?

近年来,我国数字化转型政策持续向好,各部委陆续发布多个政策,强调加速企业数字化转型,促进企业高质量发展,大力推动我国数字经济建设。2021 年国家发布《中华人民共和国国民经济和社会发展第十四个五年规划和 2035 年远景目标纲要》,其中第五篇“加快数字化发展,建设数字中国”明确了“数字化”在十四五国家发展战略中的重要地位。

然而,随着企业规模的扩张和系统更新速度的加快,企业在数字化发展中亟需解决 有限的开发运维能力与日益增长的数字化转型需求之间的矛盾,它主要体现在以下几个方面:

  • 开发人力成本高:专业开发人员门槛高、招聘难、稳定性差;
  • 项目建设效率低:项目研发周期长,创新思路无法及时验证;
  • 缺乏软件生产最佳实践:缺少标准的软件生产实践,流程与规范无法落地;
  • 软件资产利用率低:软件资产复用性差,重复造轮子。

经过对国内软件发展趋势和技术发展趋势的分析,我们认为 传统的开发模式无法很好地解决以上问题。例如,如果应用开发工程师要实现一套普通的 IT 系统,他不仅要掌握业务,往往还需要同时掌握以前繁多的技术概念和知识:

  • 运维:云计算、k8s、中间件、微服务、DevOps
  • 语言:JAVA、Java、csshtml、SQL
  • 框架:Spring、Vue/React
  • 其他:用户认证鉴权、业务流程管理、CSR/SSR、小程序多端开发等
  • ...

对于大部分开发工程师来说,掌握各种技术栈等等大量业务无关的专业知识是件令人沮丧的事情。要知道不少中型的互联网公司在养了不少专业方向的技术人才的情况下,尚且不能打通任督二脉,为上层业务开发者提供友好业务开发环境,何况急需数字化转型的大量传统企业?同时,伴随着国内 IT 领域人才的高流动率,一个企业内部往往各种不同技术栈和架构并存,最终不堪重负。

低代码平台需要具备哪些能力?

可视化开发与协作:应用开发往往会涉及多个专业的子领域,比如数据定义子领域、数据查询子领域、页面子领域、流程子领域等。经过大量的研究分析,在多数领域可视化相比于文本会包含更丰富的信息,阅读性起来更直观更友好,对普通人来说更易于学习。另一方面,复杂软件往往需要多人协作来完成,这是因为其通常需要涉及多个领域的专业知识和技能,一个人难以胜任。协作功能使得每个开发者专注于不同模块,紧密合作以高效完成各自的任务,并确保项目的整体一致性和准确性。因此开发平台、工具还需要提供诸如分支版本控制、冲突解决等协作的能力,以有效地帮助团队的每一位开发在整个软件开发周期中追踪和管理代码变化。

统一的前后端语言:复杂的应用程序通常需要多个组件之间协同工作,这些组件涉及到前端(用户界面)和后端(服务器端)两个部分。使用统一的前端、后端语言可以有效提高开发效率和减少沟通成本,例如开发人员可以更轻松地共享代码、知识和工具,减少技术转换成本和学习成本。统一的前端、后端语言还可以提高应用程序的可维护性和可扩展性,例如一段函数既可以在客户端运行也可以在服务端运行,而无需额外的实现和转换成本。

资产中心:随着用户群体增长,应用平台往往会形成大量优质资产,因此需要提供一个分享、管理这些优质资产的平台。另一方面,针对企业在发展过程中已经沉淀下来的高质量资产,平台需要提供适当的方式来接入;此外,企业的专业开发人员应有办法为低代码应用定制高级功能。

集成:指集成更多应用程序和数据源:企业内部往往具有多个系统以及已有的技术栈体系,各系统之间有着丰富的交互逻辑和数据互访需求。通过集成能力可以提升低代码平台的灵活性和扩展性,从数据源、协议、应用等各个层面实现企业各系统之间的数据和服务交互,从而提升低代码应用的价值和可用性。

可用、安全:可用性是软件的一个重要方面。企业软件通常是企业中关键的业务应用程序,例如企业资源规划(ERP)、客户关系管理(CRM)和财务管理系统等。这些应用程序与企业中的日常业务紧密相关,在发生故障或停机时,可能会导致企业的财务损失、服务中断和信誉问题。因此,企业软件需要是高度可用的,以确保企业的继续运营和稳定发展。另一方面,企业软件往往涉及到用户的敏感数据和信息,如个人身份信息、财务信息、医疗记录等。如果这些信息被泄露或被黑客攻击,将会对用户造成极大的损失和伤害,甚至会让公司面临法律问题。

轻舟低代码平台的架构

针对上述数字化转型背景和低代码平台的能力要求,我们决定提供一门图灵完备的可视化编程语言以及一套功能完备的集成开发环境,来达到语言统一,开发高效,程序安全,扩展性强,门槛低上限高的目标;借助于云原生的优势,打造一个故障隔离,灵活安全,可观测性完善的一站式平台,并通过资产中心完成数字资产的沉淀和复用。

我们的平台架构整体上可以划分成平台服务,集成开发环境,NASL 语言及其配套设施,资产中心,云原生基座五大模块,设计如下:

轻舟低代码平台产品架构设计

平台服务

低代码平台服务的设计目标是“提供一站式应用开发平台,维护应用从开发到运维监控的全生命周期管理,并满足不同企业软件工程实践规范”。为此,平台分为以下几个部分,各司其职:

  • 应用管理:包含应用创建、列表与详情、运维、删除等应用管理能力,其中运维包括应用的部署规格,服务启停,WebSQL 等操作 。
  • 多租户管理:租户是低代码资源的顶层隔离单位,不同租户之间的资源互不相通,从而保证平台资源安全,包含应用资源、资产资源、底层运行资源等。
  • 多环境管理:平台可以一键创建 / 销毁一整套应用开发环境,在 CI / CD 的设计上可以快速对接云原生 DevOps,从而满足不同企业不同的软件工程实践规范。
  • 应用集成信息管理:低代码平台提供了 API、数据源、文件存储、认证源等应用三方集成能力,需要对集成相关的配置信息做注册,权限等管理,如数据库地址,API 地址等。
  • IAM:即 Identity and Access Management,包括身份验证,各类授权,账户管理,用户行为与活动的审计与监控,是平台安全实践的重要体现之一。
  • 应用监控:通过应用可观测性监控,低代码开发者可以及时获知制品应用的内部运行状态,从而在制品应用页面响应缓慢、访问报错等异常情况发生时,能够及时定位异常发生的原因,并及时查看修复。应用监控目前包含日志和维度监控,其中日志既支持 NASL(平台所定义的语言,下述)日志,也支持源代码日志,未来还会对应用程序在运行时的执行路径和行为做追踪记录。

集成开发环境

低代码集成开发环境的设计目标是“ 以提高开发效率为中心,同时注重应用集成、多人协作、版本控制等方面的需求”。为此,平台提供了可视化设计器、应用调试与预览、一站式部署发布、三方集成能力、依赖管理等功能。

平台的集成开发环境(IDE)部署在云端,是一款与 CodeSpace 有些类似的 WebIDE,它能够支撑日常软件研发所需和软件工程所需,同时提供应用三方集成的有效手段,以提高开发者应用构建效率和可能性。它包括以下组件:

  • 可视化设计器:可视化设计器提供了 NASL 语言的可视化投影,使得低代码开发者可以通过可视化拖拉拽的形式来编写 NASL 语言。包含页面设计器、数据设计器、逻辑设计器、流程设计器等。同时可视化设计器提供了撤销重做、复制粘贴等便捷操作能力。
  • 应用调试与预览:应用调试的技术实现主要依赖 Debugger 提供的一整套高性能 API,包含 breakpoint、step into、step over、resume、evaluation 等能力。此外,集成开发环境支持应用的快速预览,我们通过状态机设计,预热和热加载等一系列技术优化,大大加快了预览速度。应用调试和预览,都是在 NASL 语言阶段性编写完成后,及时验证程序正确性的手段。
  • 多人协作和版本控制:基于 NASL 仓库实现的版本控制功能和多人协作功能。技术选型上,我们选取了基于基线研发的工程规范,是低代码开发过程中小范围协作的最佳实践。
  • 应用集成:提供 API、数据库、文件存储、认证源等三方集成能力,使得低代码应用可以便捷快速地与其他应用,PaaS 中间件,开放平台等三方能力对接,从而方便构建更加复杂的业务解决方案。
  • 应用部署与导出:支持集成平台一站式部署发布,同时也支持应用的导出,其中导出包括源代码导出和 Docker 镜像导出,此外集成开发环境还支持将应用一键部署到公有云运行(如阿里云),这也是我们相对于引擎式低代码平台的最大区别。
  • 依赖管理:设计与实现了一套依赖管理协议,支持模板和库的导入、导出、版本检测等,并托管到资产中心。

NASL 语言及其配套设施

低代码语言及其配套设施的设计目标是”高效表达应用编程意图,快速构建软件应用,同时注重代码与程序的安全性”。为此,我们设计了.NETEase Application Specific Language(简称 NASL),即网易轻舟低代码用于描述 Web 应用的领域特定语言,它主要包含基础语言和 Web 应用特定领域的子语言(如数据定义、数据查询、页面、流程、权限等)两部分。NASL 语言作为整个低代码平台的内核,是对应用编程语义模型的核心抽象,用于承接用户应用编程意图的高效表达。借助于 NASL 和配套的语言设施,低代码开发者可以快速构建软件应用。它包括以下组件:

  • Language Server:NASL 语义的最佳实践,包含类型检查、推断、跳转定义、自动补全等能力,在低代码应用编辑期提供辅助手段,减少编程出错概率,提高编程效率,一定程度保证了程序安全性。架构设计上,我们采取 LSP (Language Server Protocol) 标准化的协议,研发出针对 NASL 语言的编辑器和 IDE 的语言服务。
  • Debugger:针对与 NASL 语言研发的调试器,设计并定义了 breakpoint、step into、step over、resume、evaluation 等调试 API,是集成开发环境可以实现 NASL 断点调试的基础。
  • Generator:NASL 语义编译器。低代码平台借助于 Generator,将 NASL 语言编译为 java、js 等通用语言,再借助底层通用语言的运行时设施如 jvm,将 NASL 语言运行在计算机上。
  • NASL 仓库:用于实时保存用户构建应用所产生的 NASL 代码,并满足高性能、高可用、高可靠等特性,技术选型上,我们选取了 mongodb 作为存储。同时设计并实现了一套提供了代码合并、拉取、冲突检测、合并、暂存、标签等基础 API,是集成开发环境实现多人协作和版本控制的基础。

资产中心

低代码资产中心的设计目标是“方便用户进行软件资产的管理、复用和查询,以提高开发效率和质量”。资产中心提供了多种多样的应用和局部模板,并支持根据自身需求场景一键生成应用,有利于快速构建符合平台标准的库以及提高代码重用性。

  • 模板管理:对集成开发平台自身导出的模板的管理。模板中心提供了各种应用和局部模板,根据不同的需求场景,开发者可以选择相应的模板,一键生成应用,并在此基础上进行个性化修改,以适应自身业务需求。
  • 库管理:对 NASL 库和扩展库的管理。库是一组可被低代码应用依赖使用的编程能力,按照产生方式的不同被分为 NASL 库和扩展库。NASL 库是一组在低代码平台上开发好的通用功能,供所有应用程序共享使用。扩展库是由专业程序员使用 Java 或 Java 开发的,可以被低代码应用依赖使用的编程能力,它们通过平台脚手架导入到资产中心来使用。

此外,资产中心还遵循着信息管理中“标签化”、“分类化”、“规范化”的原则,使得软件资产可以更好地进行管理、维护和查询。资产中心是平台构建软件资产和复用软件资产的(最)直接体现。

云原生基座

低代码作为一个 APaaS 平台,我们选取了云原生技术作为支撑整个平台和应用运行的基座,其设计目标是“提供支持高度可扩展、高度可观测、快速部署、故障隔离、运行安全”的上层应用程序。主要技术如下:

  • K8s 与容器云技术。目前支持开源 K8s 以及网易 kubecube 容器云平台,其中开源 K8s 作为我们首推的轻量部署最佳实践。未来根据前方市场需求还可以支持各类容器云平台,如华为 CCE,阿里 ACS。
  • CI / CD。目前平台的 CI / CD 云原生可扩展性强,跨平台兼容性优秀的 Jenkins 实现。
  • 可观测性技术。可观测性技术主要包含 logging、metrics 和 tracing 三个部分,目前技术选型上选取了业界公认的 Prometheus 作为平台的监控核心组件,日志服务通过 Loggie 和 ElasticSearch 搭建了一套云原生日志平台。
  • 对象存储。低代码平台存在大量运行时需要依赖的静态资源,我们选取了云原生对象存储中的佼佼者, 兼容 S3 的 MinIO,其轻量部署和高性能低延迟的特性完美契合了低代码平台的核心要素。

结 语

我们在这篇文章中讨论了低代码架构设计的背景、挑战和需求,并展示了 CodeWave 智能开发平台前身轻舟低代码平台的架构设计:我们首先分析了企业在数字化转型过程中面临的挑战,如开发人力成本高、项目建设效率低、缺乏软件生产最佳实践等。我们提议使用低代码平台来解决这些问题,而该平台需要具备缩减概念、可视化的开发环境、资产中心、统一的前后端语言、可用性、安全性以及协作等能力。针对这些需求,我们展示了轻舟低代码平台的架构设计并详细介绍了平台的五大模块:平台服务、集成开发环境、NASL 语言及其配套设施、资产中心和云原生基座。这种设计的宗旨乃是帮助企业提高数字化转型的效率和质量。

作者:网易数帆低代码架构团队 & 编程语言实验室。



Tags:架构   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
美团外卖宣布新一轮组织架构调整:提拔多位年轻管理者,年轻化、扁平化成主基调
新浪科技讯 4月11日上午消息,继2月下旬、3月下旬两轮人员调整后,美团到店到家的组织架构调整仍在继续。近日,美团外卖以内部邮件的方式宣布了新一轮的组织调整:外卖事业部下成立...【详细内容】
2024-04-11  Search: 架构  点击:(2)  评论:(0)  加入收藏
对于微服务架构监控应该遵守的原则
随着软件交付方式的变革,微服务架构的兴起使得软件开发变得更加快速和灵活。在这种情况下,监控系统成为了微服务控制系统的核心组成部分。随着软件的复杂性不断增加,了解系统的...【详细内容】
2024-04-03  Search: 架构  点击:(5)  评论:(0)  加入收藏
大模型应用的 10 种架构模式
作者 | 曹洪伟在塑造新领域的过程中,我们往往依赖于一些经过实践验证的策略、方法和模式。这种观念对于软件工程领域的专业人士来说,已经司空见惯,设计模式已成为程序员们的重...【详细内容】
2024-03-27  Search: 架构  点击:(13)  评论:(0)  加入收藏
哈啰云原生架构落地实践
一、弹性伸缩技术实践1.全网容器化后一线研发的使用问题全网容器化后一线研发会面临一系列使用问题,包括时机、容量、效率和成本问题,弹性伸缩是云原生容器化后的必然技术选择...【详细内容】
2024-03-27  Search: 架构  点击:(10)  评论:(0)  加入收藏
京东小程序数据中心架构设计与最佳实践
一、京东小程序是什么京东小程序平台能够提供开放、安全的产品,成为品牌开发者链接京东内部核心产品的桥梁,致力于服务每一个信任我们的外部开发者,为不同开发能力的品牌商家提...【详细内容】
2024-03-27  Search: 架构  点击:(10)  评论:(0)  加入收藏
从 MySQL 到 ByteHouse,抖音精准推荐存储架构重构解读
ByteHouse是一款OLAP引擎,具备查询效率高的特点,在硬件需求上相对较低,且具有良好的水平扩展性,如果数据量进一步增长,可以通过增加服务器数量来提升处理能力。本文将从兴趣圈层...【详细内容】
2024-03-22  Search: 架构  点击:(24)  评论:(0)  加入收藏
全程回顾黄仁勋GTC演讲:Blackwell架构B200芯片登场
北京时间3月19日4时-6时,英伟达创始人黄仁勋在美国加州圣何塞SAP中心登台,发表GTC 2024的主题演讲《见证AI的变革时刻》。鉴于过去一年多时间里AI带来的生产力变革,以及英伟达...【详细内容】
2024-03-19  Search: 架构  点击:(17)  评论:(0)  加入收藏
高并发架构设计(三大利器:缓存、限流和降级)
软件系统有三个追求:高性能、高并发、高可用,俗称三高。本篇讨论高并发,从高并发是什么到高并发应对的策略、缓存、限流、降级等。引言1.高并发背景互联网行业迅速发展,用户量剧...【详细内容】
2024-03-13  Search: 架构  点击:(6)  评论:(0)  加入收藏
有了LLM,所有程序员都将转变为架构师?
编译 | 言征 出品 | 51CTO技术栈(微信号:blog51cto)生成式人工智能是否会取代人类程序员?可能不会。但使用生成式人工智能的人类可能会,可惜的是,现在还不是时候。目前,我们正在见...【详细内容】
2024-03-07  Search: 架构  点击:(19)  评论:(0)  加入收藏
如何判断架构设计的优劣?
架构设计的基本准则是非常重要的,它们指导着我们如何构建可靠、可维护、可测试的系统。下面是这些准则的转换表达方式:简单即美(KISS):KISS原则的核心思想是保持简单。在设计系统...【详细内容】
2024-02-20  Search: 架构  点击:(36)  评论:(0)  加入收藏
▌简易百科推荐
对于微服务架构监控应该遵守的原则
随着软件交付方式的变革,微服务架构的兴起使得软件开发变得更加快速和灵活。在这种情况下,监控系统成为了微服务控制系统的核心组成部分。随着软件的复杂性不断增加,了解系统的...【详细内容】
2024-04-03  步步运维步步坑    Tags:架构   点击:(5)  评论:(0)  加入收藏
大模型应用的 10 种架构模式
作者 | 曹洪伟在塑造新领域的过程中,我们往往依赖于一些经过实践验证的策略、方法和模式。这种观念对于软件工程领域的专业人士来说,已经司空见惯,设计模式已成为程序员们的重...【详细内容】
2024-03-27    InfoQ  Tags:架构模式   点击:(13)  评论:(0)  加入收藏
哈啰云原生架构落地实践
一、弹性伸缩技术实践1.全网容器化后一线研发的使用问题全网容器化后一线研发会面临一系列使用问题,包括时机、容量、效率和成本问题,弹性伸缩是云原生容器化后的必然技术选择...【详细内容】
2024-03-27  哈啰技术  微信公众号  Tags:架构   点击:(10)  评论:(0)  加入收藏
DDD 与 CQRS 才是黄金组合
在日常工作中,你是否也遇到过下面几种情况: 使用一个已有接口进行业务开发,上线后出现严重的性能问题,被老板当众质疑:“你为什么不使用缓存接口,这个接口全部走数据库,这怎么能扛...【详细内容】
2024-03-27  dbaplus社群    Tags:DDD   点击:(12)  评论:(0)  加入收藏
高并发架构设计(三大利器:缓存、限流和降级)
软件系统有三个追求:高性能、高并发、高可用,俗称三高。本篇讨论高并发,从高并发是什么到高并发应对的策略、缓存、限流、降级等。引言1.高并发背景互联网行业迅速发展,用户量剧...【详细内容】
2024-03-13    阿里云开发者  Tags:高并发   点击:(6)  评论:(0)  加入收藏
如何判断架构设计的优劣?
架构设计的基本准则是非常重要的,它们指导着我们如何构建可靠、可维护、可测试的系统。下面是这些准则的转换表达方式:简单即美(KISS):KISS原则的核心思想是保持简单。在设计系统...【详细内容】
2024-02-20  二进制跳动  微信公众号  Tags:架构设计   点击:(36)  评论:(0)  加入收藏
详解基于SpringBoot的WebSocket应用开发
在现代Web应用中,实时交互和数据推送的需求日益增长。WebSocket协议作为一种全双工通信协议,允许服务端与客户端之间建立持久性的连接,实现实时、双向的数据传输,极大地提升了用...【详细内容】
2024-01-30  ijunfu  今日头条  Tags:SpringBoot   点击:(16)  评论:(0)  加入收藏
PHP+Go 开发仿简书,实战高并发高可用微服务架构
来百度APP畅享高清图片//下栽のke:chaoxingit.com/2105/PHP和Go语言结合,可以开发出高效且稳定的仿简书应用。在实现高并发和高可用微服务架构时,我们可以采用一些关键技术。首...【详细内容】
2024-01-14  547蓝色星球    Tags:架构   点击:(115)  评论:(0)  加入收藏
GraalVM与Spring Boot 3.0:加速应用性能的完美融合
在2023年,SpringBoot3.0的发布标志着Spring框架对GraalVM的全面支持,这一支持是对Spring技术栈的重要补充。GraalVM是一个高性能的多语言虚拟机,它提供了Ahead-of-Time(AOT)编...【详细内容】
2024-01-11    王建立  Tags:Spring Boot   点击:(124)  评论:(0)  加入收藏
Spring Boot虚拟线程的性能还不如Webflux?
早上看到一篇关于Spring Boot虚拟线程和Webflux性能对比的文章,觉得还不错。内容较长,抓重点给大家介绍一下这篇文章的核心内容,方便大家快速阅读。测试场景作者采用了一个尽可...【详细内容】
2024-01-10  互联网架构小马哥    Tags:Spring Boot   点击:(115)  评论:(0)  加入收藏
站内最新
站内热门
站内头条