0 引言当前,物联网技术正在推动人类社会从“信息化”向“智能化”转变,促进信息科技与产业发生巨大变化。但目前的实际情况来看,物联网的终端设备类型多、数量大,安装运维成本高、工作量大,新业务、新功能扩展靠硬件盒子“堆砌”,不经济,难管理,缺乏灵活扩展性,边缘的应用靠人肉现场开发和运维,为物联网的数字化发展形成桎梏。
物联网服务通过各种各样托管于物理设备,尤其是智能传感器上的业务应用程序APP,将物联世界和数字世界紧密结合,实现物理世界的运行状态感知。传统的边端物联应用开发大都是基于文本语言编程,而边端设备上的物联应用开发和服务器应用开发的环境是完全不同的,边端设备种类复杂,计算能力差,数量多,应用部署和运维也是非常困难,需要开发人员有较高的技术水平和经验,对硬件和软件都要有比较深厚的理解。随着低代码开发技术日趋成熟,低代码开发平台无需编码或少量编码就可以快速生成应用程序,具有可视化编程,简单直观,开发周期短,技术门槛低,易于部署和运维等特点。非常适合海量物联终端的APP开发与管理。因此,华为基于自家的APPCube低代码开发平台运营经验,通过对业界前沿的低代码开发技术的研究,结合物联网自身固有的一些特点,开发出一种云边协同的云编排式APP开发平台,在云端以可视化的流程编排开发APP,编排好的APP由云端下发至边端侧的智能物联设备进行部署和运维。实现物联APP“一次开发,处处可用”,跨专业数据共享和业务流程贯通。推动物联网数字化飞速发展。
1 相关背景技术1.1 低代码开发平台发展趋势低代码开发平台(LCDP)是通过少量代码就可以快速生成应用程序的开发平台。它提供终端用户使用易于理解的可视化工具开发自己的应用程序,而不是传统的编写代码方式。用户可以构建业务流程、逻辑和数据模型等所需的功能,必要时还可以添加自己的代码。完成业务逻辑、功能构建后,即可一键交付应用并进行更新,自动跟踪所有更改并处理数据库脚本和部署流程。低代码开发平台可以为不同硬件和操作系统开发并维护相对应的运行引擎,在平台上生成的应用程序可以运行在相应硬件的运行引擎之上,实现在主机、移动终端、物联终端等多个平台上的部署。
低代码开发平台(LCDP)最早可追溯到20世纪90年代至21世纪初的编程语言和工具,与先前的开发环境类似,早期低代码开发平台基于模型驱动,后期逐渐演进为数据驱动,并创建了自动代码生成和可视化编程的原理。
低代码开发平台一个显著的特点是,使具有不同经验⽔平的开发⼈员可以通过图形化的用户界面,使用拖拽组件和模型驱动的逻辑来创建网页和物联终端应用程序。业务人员和IT部门的开发人员可以共同创建、迭代、发布,相比传统开发模式可以节省不少时间。对于大型企业来讲,低代码开发平台还可以降低IT团队培训、技术部署的初始成本。国外比较有名的低代码开发平台有:Kony、Mendix、Outsystems。国内比较成熟的低代码开发平台有iVX、AppCube等。
国内低代码平台尚处于早期,但市场需求将出现暴增。随着国内政务和大企业纷纷选择云化转型,基于云化的低代码开发平台将成为热点。低代码开发平台和数据以及业务系统的集成能力变得越来越重要,客户化开发会帮助行业软件实现个性化需求的定制,软件厂商与低代码开发平台合作可以快速完成个性化需求的交付。低代码开发降低了软件开发的专业门槛,使得业务人员可以根据自己的业务需求快速开发应用,人员数字化水平将大大提升。低代码与物联网的扩展连接成为趋势。快速连接硬件设备可以帮助实现工业互联网落地。
1.2 低代码开发平台的研究1.2.1 MendixMendix是专攻企业应用场景的低代码开发平台,一般是面向有开发团队的中大型企业,提供模型驱动IDE和微流,使用拖放式组件和模型驱动逻辑来创建 Web 和移动应用,使业务人员可以通过可视化组件参与到开发过程中,与程序员在Mendix platform上合作开发本企业的应用。
Mendix提供的Mendix Studio 是基于 Web 的低代码开发环境,专为业务用户打造。使用直观的“所见即所得”页面编辑器搭配 Atlas UI,设计并构建强大的应用。业务和 IT 部门的开发人员可以在平台中协同,创建、迭代和发布应用,而所需时间只是传统方法的一小部分。这种低代码应用开发方法可针对不同用例开发各种类型的应用,包括将原有应用升级为支持 IoT 的智能应用。它也提供一些企业解决方案、模板,开发平台上也支持自定义UI和组件。拥有Atlas UI Framework开发框架,根据应用和业务类型,会推荐相关的模板和组件,达到快速开发的目的。内置DevOps功能,可以持续交付,也可以使用Mendix platform API集成其他DevOps工具。
184d952cd5a1430e87902b09edf5795a~tplv-k3u1fbpfcp-zoom-1.jpg
图1:Mendix开发界面
1.2.2 OutsystemsOutSystems是一个低代码平台,提供面向企业开发、部署和管理全渠道企业应用程序的工具套件。基于该平台开发的应用程序在云、本地或混合环境中运行。用户以国外大企业居多,外企接受度高。可拓展性强,支持智能硬件。多用来开发流程类应用,可以实现全栈快速开发,支持从UX到后端集成的所有内容。大型应用程序端到端DevOps和生命周期管理。
OutSystems成立时间早,教学文档丰富。但是因为技术是早期技术,IDE界面古老,操作不友好。想使用可视化组件降低代码量,但是并没有太好的做到可视化和coding的平衡,而是把coding的复杂程度转移到了使用、调试组件的难度上,需要使用者进行大量额外的学习和练习。
平台对代码要求高,工具控件不够丰富,很多非常基础的功能需要复杂的操作才能完成,开发时前端部分的调试非常复杂,非常耗时。后台服务也需要大量调用接口,对外的功能拓展依赖于Integration Studio等,但是兼容性不高,有时兼容Mysql都会出问题。
Outsystems可能也发现了自己的一些短板,为了解决前端的问题,建设有UI库,正在不断完善中。但是因为技术架构的局限性,还是无法解决很多常用但是基础的问题,在试用中发现,例如,很简单的弹窗提示、下拉菜单等,都需要通过写js来实现。
95f346494d8e4d6981222b814ac51063~tplv-k3u1fbpfcp-zoom-1.jpg
图2:Outsystems的用户界面
1.2.3 iVXiVX 是国内的可视化编程工具代表,是目前国内比较流行的 “0”代码开发平台,通过 iVX平台的组件拖拽和事件配置即可快速完成各种应用开发,生成前后台中间代码,并可自动通过 VX 编译系统,将中间代码编译成前端各系统目标应用(代码)和后台 Go 微服务代码。iVX 大量使用到以下应用开发场景: WebApp开发,例如:公司内部OA/CRM/ERP/SAP等公司内部管理系统; WebSite开发,现有超过10万+网站通过iVX平台开发,包括前端展示和后台数据功能; 小程序开发, 例如微信小程序自定义开发,非模板方式,更灵活自由;以及各种软件相关系统和解决方案开发。
iVX 开发无需安装开发包, 无需导入 SDK,即可完全应对小程序、Web 应用、建站等复杂应用的开发,并可一站式完成后台云端部署,实现弹性虚机、数据库、计算、网络带宽的弹性伸缩。
iVX 将常见应用场景划分为小程序、PC 应用与网站、展示类营销、互动类营销等四大场景,针对每个场景提供更具针对性的开发模组。用户可以根据自己的需求,随心选取合适的开发场景。系统将调取最合适的 开发环境,自动优化系统组件,为用户提供更为便捷、舒适的使用体验。为更好地适应多终端化的 Web 应用开发模式,iVX 采用了目前业内最 为通行的 “前后端分离” (Browser/Server)开发架构。该架构采用完全独立的前后端架构,二者能够各司其职,后端主要负责提供服务和数据,前端则更专注于通过终端与用户进行交互,从而降低服务器的压力,将异常处理变得更为友好,在开发难易度、数据安全性、产品效能等方面都有极大提升,更容易适应 大型应用、复杂应用的开发需求。iVX 在编译器中提供了“前台”、“后台”两个系统组件,将后端数据逻辑和前端交互系统完全分开,支持前端架构的独立搭建和后台数据逻辑的独立编写,用户无需编制前后端数据交互架构,只需借助于系统组件即可实现前后端分离架构的部署。另外,后台采用“服务调用”模式,不会直接暴露数据库接口,更好保证后台数据访问安全性。VX采用了数据驱动的编辑逻辑。允许用户通过建立数据模型,将后端数据或其他数据赋予变量或数组,通过数据变量绑定的方式将 DOM 元素的属性与数据结构做关联,通过事件触发数据变化,从而引发前端 DOM 元素的属性变化。数据驱动的编辑逻辑允许用户仅通过控制数据模型就可以动态控制前端显示效果,无需逐一修改前端组件,从而大幅提升效能,具有良好的可重用性,同时也大大减少“事件”编辑数量,提升开发效率。iVX 在前端开发环境中采用响应式布局的开发理念,用户无论使用何种尺寸的设备浏览页面,都能获得良好的视觉效果。
0d49d17674c34839809b28500f8a400e~tplv-k3u1fbpfcp-zoom-1.jpg
图3:iVX开发平台用户界面
1.2.4 AppCube**AppCube是我们华为云发布的一款云端的低代码开发平台,中文名字叫应用魔方 ,**顾名思义就如同魔方一样,可以通过任意组合,排列各种模块化元素,创建功能各异的应用。AppCube提供云上无码化/低码化/支持多码化的应用开发模式,能够屏蔽编程技术复杂性,提升企业开发的效率。同时提供应用资产的开发标准和微服务框架,将企业IT化建设过程中开发的可复用组件沉淀成可复制的模板套件,加速应用的定制,并能通过开放的生态,实现套件资产的商业变现。
AppCube从能力上来说具备一个应用端到端的开发能力。前端开发基于Vue技术栈,平台预置丰富基础组件,也可以支持扩展,多用于表格表单等后端管理页面的快速开发。开发界面上提供图形化、无码化在线页面开发功能,能够快速构建各种复杂表单表格页面、以及其他一些灵活布局页面。开发人员可以在开发界面中将组件面板上的页面组件拖拽至页面工作区域,并对组件的属性、事件进行设置,再配合事件编排完成复杂的业务功能。支持开发人员以积木组装的方式快速构建应用页面,提升开发效率和质量,及时响应业务需求和价值实现; 后端开发可以提供数据对象模型开发,对象可以理解为现实世界到数字世界的一个映射,开发者在平台创建对象和对象的各种属性字段之后,就可以通过服务编排实现多个对象的可视化流程编排,以API的形式对外提供服务。简单来说可以将Script脚本、Action等封装成对外提供的服务接口。服务编排编辑器提供了流程引擎的前台页面配置工具,通过模板化、图形化实现对业务流程的编排和执行。帮助业务人员针对自己的独特业务需求创建所需的解决方案,甚至不需要有任何编程经验;开发者还可以利用平台提供的集成开发能力,通过消息、API等各种服务接口将不同的应用集成到一起,或者与外部的其他业务系统集成,形成一个完整的解决方案,而完成此项任务全都是基于图形化界面来操作,不需要编写代码来。
AppCube的常见应用场景有轻应用构建场景,轻应用一般为轻量级应用,不涉及复杂化的代码,用户零代码(如拖曳组件,简单配置)或者低代码就能轻松完成应用的搭建。为了降低企业用户的应用开发成本,AppCube提供了丰富的轻应用模板,涵盖了办公管理、人事管理、项目管理,以及通用应用等领域多款精品模板,用户可基于模板快速定制和扩展应用,满足自身业务的个性化诉求;另一种是面向园区、城市、能源、教育、交通等行业的应用场景,可基于全场景的可视化开发能力、项目级协助共享能力和端到端的工程部署能力,快速搭建行业应用和大型企业级应用,行业内的技术积累可以通过平台沉淀下来,形成行业资产,行业内不同的用户和厂商可通过一个资产市场来进行AppCube应用资产的共享,助力行业伙伴加速全场景行业数字化。
22154671ee454f82b4cd56d01cc8386e~tplv-k3u1fbpfcp-zoom-1.jpg
图4:AppCube的用户操作界面
2 云编排式APP开发平台通过前面的低代码开发平台的研究,我们发现目前业界商用的低代码开发平台大多数还是面向移动端、web网页应用开发,快速构建场景化应用,以及面向企业内部的业务流程管理的BPM平台开发,用图形化、可视化拖拽的模式描述业务需求,形成可视化业务逻辑设计。目前国内还缺乏面向物联网应用APP开发的低代码开发平台,而物联网的应用APP大多数逻辑比较简单,可重复使用代码片段多,复杂的是边端APP的部署与管理,因此我们基于自家的AppCube开发出了一种面向物联网应用的云编排式APP开发平台,可在云端进行可视化的APP编排式开发,并能从云端部署APP到边端设备的运行引擎上,实现物联APP一次开发,处处运行。
2.1 传统Native Code物联APP开发方式面临的问题传统边侧软件开发部署目前面临诸多问题,云编排式APP开发平台的目标是简化端边侧应用的开发、部署的难度。目前边侧端侧软件开发部署具体常见问题如下:
1) 代码开发门槛高,合适的开发人员少:由于边侧、端侧设备为了完成特定业务场景,需要涉及周边硬件的对接及处理是软硬件结合的一个行业,不但要懂得软件方面的编程,还要了解硬件包括电路、单片机、arm等相关知识。
2) 涉及平台多,各种交叉编译纷繁复杂:涉及的CPU 架构平台,X86、X86-64、ARM 各种型号;涉及的指令集包括CISC、RISC、RISC-Five;涉及的操作系统更是繁多,例如windows 族、Linux 族等等。平台、指令集、操作系统的多样性不可避免的导致了复杂且易出错的交叉编译过程。
3) 需要现场逐台设备部署应用:边侧、端侧设备往往数量较多,开发完成的应用需要逐一现场手动安装部署,耗时耗力。
4) 开发沟通成本高:一个完整的涉及端、边的系统,既有端、边侧的逻辑,也有与云端逻辑,缺少统一的开发工具。
5) 采用硬编码方式,开发效率低:目前大多数的边、端侧的应用采用C、C++硬编码的方式开发,在部分资源较充裕的边侧设备或采用其它高级语言。
6) 功能模块没有快速复用机制:边侧设备上应用的开发往往是代码级的复用,没有功能模块封装规范、没有模块组合编排的工具,导致无法方便快捷的复用既有代码资产,造成了开发人力的浪费和长的开发周期。
7) 应用部署后即固化,无法便捷的修改:传统边侧、端侧设备应用部署完毕后,任何功能上的修改都需要走完整的版本开发流程,没有方便的边云协同的开发、部署机制。
2.2 云编排式APP开发平台概念云编排式APP开发平台是专门针对物联场景应用APP开发的低代码开发平台,提供边侧软件可编程部署方案,以及边、端、云一体化协同编排方案,云端编排的模型、流程、业务规则、页面下发至边侧运行,边侧通过一个APP运行引擎来解释执行云端开发的APP流程,完成一个APP的业务功能。
云编排式APP开发平台系统提供了开放的流式编排开发框架,实现了业务的可视化编排式开发,通过新增编排节点的方式持续扩展可编排使用的能力,节点定义了标准规范并可由第三方开发,系统提供了基于服务化接口元数据的自动化节点生成工具、在线的半自动化开发工具。系统也提供了可编排节点、领域模型模板的管理组件,提供管理发布流程、节点以及领域模型模板的仓库,便于租户内、租户间的共享。
云端编排的模型、流程、业务规则、页面均以元数据的方式表述,由边侧、端侧的引擎执行,执行引擎可运行于云端高性能服务器、边侧资源受限服务器、端侧单片机、嵌入式系统等。
d52747fbfab44653b5cbf68b642f57ee~tplv-k3u1fbpfcp-zoom-1.jpg
云/边侧部署系统分两部分组成,两者之间可以通过公网连接。
第一部分是位于云端的开发平台,开发者可以在之上进行模型、流程、规则的编排,一切都是可视化的托拉拽方式开发,一些通用的逻辑功能可以沉淀成平台的可复用组件,比如处理网络通信的MQTT协议、485协议等等。边、端侧设备的提供商可在该环境上传所提供设备的交叉编译工具链,供平台交叉编译出对应设备的运行引擎下载使用。
第二部分是位于边端的运行引擎,运行引擎可以运行在云端的服务器、边侧设备、端侧单片机中,负责解释执行云端平台下发的编排完成的流程元数据,流程执行过程可与外部系统或其它引擎中的流程交互,完成一个具体APP的业务功能。一个运行引擎可以同时运行多个流程,也就是多个APP应用。云端平台可以对引擎和其中的APP进行安装、卸载、升级、配置更新等运维管理。
敲黑板,画重点,这个运行引擎是这个该系统设计中的精华。我们为不同的硬件平台适配运行引擎。而我们编排好的APP是运行在引擎中,相当于微信小程序一样,不管是什么手机,只要装了微信,就能下载安装微信小程序。对于我们的系统来说,不管是什么硬件,只要装了云编排引擎,就能安装云编排的APP。从而实现了软硬件解耦。物联网的程序猿再也不用为了不同的硬件交叉编译流血流泪了。
2.3 云编排式APP开发方式云编排APP开发方案提供边、云一体化协同编排方案,云端编排的模型、流程、业务规则、页面下发至边侧、端侧运行。
f22e0ae631fc46109b573c2ea48f7a2f~tplv-k3u1fbpfcp-zoom-1.jpg
云编排APP云端开发工具,通过连接线将各种功能模块作为黑盒连接在一起,框架只起到消息数据的调度、转换作用。这些“黑盒”是构建App的积木块,它们之间传递的统一结构化的报文就是积木块的插接口,通过最大化的直接复用或扩展复用“黑盒”节点构建应用,而非为不同的APP重新构建新的“黑盒”节点。基于定制具有标准化的插接口的黑盒节点可以无限扩展软件系统功能。
这些“黑盒”节点通过标准规范描述,由第三方开发并满足规范的节点可在云端开发工具中编排,并可在引擎中运行。同时云编排系统提供基于服务化接口元数据的自动化节点生成工具、在线的半自动化开发工具。系统也提供可编排节点、领域模型模板的管理组件,提供管理发布流程、节点以及领域模型模板的仓库,便于租户内、租户间的共享。
云端编排的模型、流程、业务规则、页面均以元数据的方式表述,由端侧、边侧的引擎执行,执行引擎可运行于云端高性能服务器、边侧资源受限服务器、等。
077f8054544e4dcb9939470a274ad6a3~tplv-k3u1fbpfcp-zoom-1.jpg
云端aPaaS环境提供拖拽式开发、测试、APP发布审批功能。验证审批后的APP可注入到各种设备部署的引擎中,并可对其进行运行状态监控。高性能异步驱动运行引擎可对注入的APP元数据进行解析执行,完成目标业务逻辑。
在云端可以查看、暂停、重启、更新业务APP。APP具有防篡改能力,保证APP的启动安全、运行安全、升级安全。引擎和云端系统通过双向TLS证书认证,保证设计态环境和运行态引擎间的通讯安全。APP运行时按照租户进行隔离,保障同一引擎不同租户APP相互影响、干扰。
2.4 传统物联APP开发模式与云编排差异性对比1) 不同点
f9a18aec31714699a446fb616a5896d7~tplv-k3u1fbpfcp-zoom-1.jpg

  • 传统开发模式需要熟悉硬件接口及其编程、配置方式,而边云协同方式下的开发只需要可视化选择相应的硬件封装节点及节点的外部通讯接口。

  • 传统开发模式需要了解在某个OS下外部接口协议的驱动及驱动使用方式。而边云协同方式下的开发只需要拖拽相应节点并完成配置即可。

  • 传统开发模式需要开发者自行搭建开发环境,完成开发环境的配置,一般比较繁琐。而边云协同方式下的开发,只需要登录系统,点击创建工程,系统后台即可自动完成开发、测试环境的构建。

  • 传统开发模式通过hard coding 的方式手工完成代码的编写,自动、或手动完成完整覆盖的代码测试用例验证。而边云协同方式下的开发方式,基于大颗粒的功能模块的复用,只需要拖拽节点完成逻辑的编排,大幅度提升了开发效率,可复用模块(节点)在发布时已经通过了严格的验证测试,测试过程仅需关注编排流程本身。

  • 传统开发模式需要针对不同的硬件、操作系统做交叉编译,以实现一份代码运行在不同的软、硬件平台上。而边云协同方式下的开发的是元数据和脚本,通过执行元数据和脚本的引擎屏蔽了软、硬件平台的差异性,避免了APP的交叉编译。

  • 传统开发模式开发完成的APP需要打包,导入到硬件环境中,执行参数配置完成安装。而边云协同方式下的开发仅需要选中目标引擎,点击下发APP即可完成安装。

2) 相同点
49bfb05581b94cf682088b187aa702f8~tplv-k3u1fbpfcp-zoom-1.jpg

  • 两种方式开发出来的APP功能都是一样的,都能实现物联网应用业务的逻辑处理,性能上也都相近,满足物联网业务的性能要求。

  • 云编排APP开发平台的运行引擎只是作为普通APP部署,不改变原有边侧APP部署形态,对原有硬件系统没有特殊要求。

3 结语云编排式APP开发作为面向未来物联网短平快业务场景的低代码开发趋势的代表性技术,为物联网应用APP的敏捷开发提供了一条便捷的途经。本文通过研究云编排式APP开发平台的基本理论和技术实现,展示了云编排式APP开发在物联APP应用开发的广阔前景。
通过对云编排式APP开发的实践分析,我们能够看到它能为我们带来多种效益的提升。从管理效益上来说,它提升了物联APP管理便捷性,增强管理体验,甲方不用再依赖各个设备厂商和软件厂商来帮他开发物联,业务人员自己都可以上手,因为这太太太方便了。使能业务部门聚焦应用,技术开发归口管理,应用开发安全可靠。采用统一平台管控,简化APP应用管理复杂性。APP应用开发过程统一可控,组件高复用提升可靠,降低多头私有开发、代码质量参差不齐带来的安全风险。
从经济效益上来说,云编排式APP开发降低了物联APP应用开发门槛,从专业级代码开发向普通业务人员可视化业务编排,从以月/周为单位的开发周期缩短至以天为单位,提升业务响应速度,及时保障业务发展。软硬件解耦,组件一次开发,多次使用,APP跨硬件平台部署,提升开发资源利用率,优化建设成本。提升APP运维效率和成功率,降低运维专业化技术门槛。
从社会效益上来说,云编排式APP开发提升了物联APP应用生态伙伴整体技术水平,优化生态伙伴的分工协作关系,实现设备、业务组件、APP应用等生态资源更专业更精细分工,为生态合作发展奠定基础。


作者:华为云开发者社区
链接:https://juejin.cn/post/6891914432352370696
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。