不再重复造轮子,DevRun开发者沙龙用友·华为云杯,革新传统开发模式

不再重复造轮子,DevRun开发者沙龙用友·华为云杯,革新传统开发模式
2020年08月10日 16:10 InfoQ

随着市场的不断发展,人们的需求越来越复杂,为了满足用户多变的需求,编程语言也是每隔几年变个样,C、C++,还有新兴的Python潮流……等等。作为程序员,不仅要不断学习新兴的编程语言,还要不断重复造轮子的工作。

重复造轮子,即把前人做过的事情再做一遍,而IT行业一直在流行一句话,就是“不要重复造轮子”,因为一个成熟的轮子,都是由多名资深程序员,经过了长时间、多次迭代而形成的,重复造轮子,不仅耗费很多时间精力,而且轮子还不一定有前人造的好,重复造轮子的行为多了,最终会严重拖慢项目进度,影响工作效率。

但是重复造轮子又是程序员工作中不可避免会发生的事情,减少重复造轮子成为各大企业提高工作效率的当务之急,此时低代码/无代码的新型开发模式就应运而生了。而华为云和用友就是在这个领域领先的厂商之一。用友作为华为资深的合作伙伴,有着30年的企业服务经验,且与华为在企业云服务业务上高度互补,为各自生态的伙伴带来更好的使用体验以及更多的机遇,而用友最新的企业低代码开发平台YonBuilder就是基于华为鲲鹏云的底层技术打造而成的,这也是双方在核心战略层面紧密合作、共同打造全新IT开发模式道路上迈出的重要一步。

在7月31日,华为云和用友在用友产业园中区E121会议室联合举办了DevRun开发者沙龙用友·华为云杯企业云服务开发者大赛专场活动,从用友YonBuilder低代码开发平台的介绍和深度解析出发,结合华为云的EI企业智能与华为鲲鹏云服务及解决方案,通过4大主题为与会者带来了干货满满的分享课程。

以下内容经由 InfoQ 编辑整理自 DevRun 开发者沙龙用友·华为云杯专场活动。

华为云ModelArts,零代码玩转AI开发

深度学习在1943年已经出来,为什么沉寂很多年?主要是因为当时的数据资源不够丰富,另外算力达不到。但是现在已经有很多数据资源和算力去支撑深度学习的算法。首先数据资源越来越丰富,通过一些物联网和穿戴式技术的设备,获得更多数据。其次是算法能力不断突破,主要体现两个方面。一个是算法能够做的事情越来越多,第二是算法越来越准,越来越靠近,甚至某些领域已经超过了人类的水平。第三,各大企业也不断的进行开发。这些现象都为深度学习的发展提供了条件。

但是AI开发的时候是会有很多问题,主要是算力昂贵,如果用户自己去买NPU或者GPU芯片,一次性成本太高,而且大部分还是闲置。其次需要高级技能的从业人员,需要精通代开发,熟悉模型原理。最后是需要海量高质量的已标注数据,标注数据的成本比较高,但是华为的ModelArts就可以很好的解决以上问题,首先ModelArts采用云计算,大家可以租赁计算资源,不需要升级和维护设备。在数据处理阶段,有一些智能标注的模块,多场景标注UI加快标注速度,而且推出主动学习和预置模型,加快了标注速度。

当然ModelArts不止这些,作为一站式AI开发平台,从数据开始,包括处理数据、训练模型、模型部署、推理模型、终端部署、发布应用,整个过程都有AI组件进行帮助,它依托的就是它本身的算力。上图这是ModelArts的AI平台架构,底层是它的算力过程,一些它支持的算力,一个是自动学习一个是训练平台一个是推理评理,还有一个是数据处理平台当然还有AI市场等等。下面会一一进行详细分析:

首先介绍一下ModelArts对数据怎么处理的,数据处理在AI推理流程中,占的时间比较长,ModelArts会提供一些在线标注的工具,可以帮助我们标注不同的数据,比如可以标注图像分类、图像检测,标记声音数据集还有声音分类等等,此外还推出了团队标注,支持多人团队标注。ModelArts给标注数据的特征就是可视化,并且支持智能标注,以提高我们的标注效率。在难例标注方面,能协助用户高效处理难例集。

接下来说一下训练过程。先说自动学习,这也是华为推出的比较偏向于零基础零代码开发人员推出的AI开发平台。用户只需要跟着流程走,先上传数据,然后标注数据,标注数据以后点训练模型,继续进行我们的部署验证,最后发布模型,整个过程按照流程走,不需要写任何代码就可以完成这个工作。所有底层算法包括一些参数都是他自动帮助你适配调优。

另外一种训练模型的方式就是可以通过向导配置训练,算法里面有很多预置好的算法,你可以使用这些预置算法,整个过程不需要写代码,按照这个流程去先把你的算法导入进去,然后按照整个流程。如果使用预置算法,整个过程只是比自动学习丰富了一点,可以多配置你的具体算法,可以配置超参来调整结果。整个训练模型过程是可以评估和监控,可以查看资源情况,包括资源日志、评估结果等等。

最后说到交互式Notebook建模,其支持Python建模语言,更开放。这个特别适合已经很了解AI开发的流程的用户,去测试新出的算法或者自己构建一个算法。在写好了分装以后,可以把代码分装,让它自动执行。而ModelArts提供SDK和PyCharm,使得用户可以通过底层撰写SDK,应用这个SDK就模拟在网站上进行。ModelArts的PyCharm就像稳定版的Notebook,允许用户在里面写代码,帮助进行代码的推送、执行、日志上传。

除了上述说的三种方法之外,ModelArts推出的另一个功能,ML Studio,除了支持深度开发还支持传统的机器学习,上图左边是支持的算法,右边是参数配置,最后执行日志是我们的执行结果,用户可以通过在画布上拖拽算法然后构建工作流。

最后王龙步老师简单的介绍了一下华为云AI市场的改版,新推出了ModelArtsflow、ModelArtsHub。可以让用户把AI过程的组件,包括数据集包括算法包括模型,以及最后的Notebook都可以放到AI市场上进行分享或者出售。另外是推出了ModelArtsHub,类似拆封即用的一个产品,可以让算法下载即用。

鲲鹏展翅,力算未来,开创计算新时代——华为鲲鹏云服务及解决方案

现在手机的使用或者移动端的使用越来越多,2018年全球连接设备数已经超过230亿,而且这个数据还在不停的爆发增长。这样对我们整体的算力提出了新的诉求。仅仅传统的通用芯片已经满足不了越来越复杂的运算,我们已经进入计算架构创新的黄金时段。

通用计算这块华为的应对策略就是推出华为鲲鹏芯片,鲲鹏芯片是基于ARM设计的,有别于英特尔采用的复杂指令集,ARM做整型计算能力更强,但是在双精度浮点计算领域会相对弱一些。所以在打造优势解决方案的时候需要考虑场景适配的问题。

当然对于软件开发者来说,其实比较关心的还是工具,华为鲲鹏从操作系统到开发工具、编译工具和管理工具,各个开源组件上面整个生态已经非常完备了,基本可以支持绝大部分常用开源软件,即便不能直接下载到安装包的软件我们通常也能够找到对应的适配帖子。

到具体落地上,华为鲲鹏云所有的云服务以及解决方案可以说是非常全面了,首先在云上,华为有一系列定制化的芯片,包括高性能的CPU,即ARM,还有高性能的AI即昇腾,除此之外针对存储控制器、网络服务器、服务管理都有对应的芯片做处理。这些芯片协同起来提供上层的能力。同时华为推出了软硬件协同的擎天架构,真正实现软硬件协同。在软硬件协同的基础上,华为构建了鲲鹏云服务并打造了比较通用的优势解决方案,比如HPC高性能计算方案、大数据+AI、还有鲲鹏原生等等,可以在安全可靠可信基础上,提供显著的性价比提升,也能比较方便地研发出创新性的移动应用。

除了这些基础服务之外,华为还拥有一站式应用管理平台,包括创新解决方案、一站式微服务应用管理平台、企业级云中间件、高性能Serverless服务,与此同时,华为还针对目前最让人头疼的大数据领域提出了华为云全栈智能数据服务,利用存算分离的架构以及华为在算力和存储方面

的优势,为用户提供更好的数据处理体验。

不过用户面临的问题还有应用的迁移和移植问题,关于应用移植,华为总结了一些方法论。首先是操作系统,因为Windows本身并不支持ARM,所以目前对Windows有强依赖的方案是不支持的,需要先改造为使用Linux,Linux基本都支持;第二,数据库也是类似的方式,欧美闭源不支持,开源或者国产闭源基本都已经支持。针对开发语言来说,解释型语言、编译型的语言支持,但是不支持汇编语言。

移植过程和我们开发的时候是一致的,首先面对一个新平台做它的技术选型分析,分析完毕以后实施编译迁移,第三是功能,验证和性能调优,最后进行规模商用。在这里刘老师以NC Cloud鲲鹏移植实践为例,为大家说明了整个移植的过程。

最后刘龙飞老师针对鲲鹏社区和鲲鹏伙伴计划做了个简单的介绍,目前已经有2000多家企业加入鲲鹏凌云生态,有200多个鲲鹏商品已经发布出来,有1000多个技术方案认证已经通过。同时华为也欢迎更多人能够加入鲲鹏的生态,共同推动计算产业的发展,也共享产业发展的红利。

Hello YonBuilder

低代码是一种创建应用的方法,可以使得开发人员使用最少的编码知识,来快速开发应用程序。

简单来说就是让开发者可以在图形界面中,使用可视化建模的方式,来组装和配置应用程序,开发者可以借此跳过跳过繁琐的基础架构,只关注于使用代码来实现业务逻辑。

YonBuilder作为一个市面上比较成熟的低代码开发平台,它的特点有两个,第一是其将自己的云端,支撑云端ERP的技术平台都进行开放,第二是用友把自己的能力都打包,然后做成产品能够让开发者去使用。通过这两个措施,让使用YonBuilder的开发者能够有80%的时间去思考业务,20%的时间可能我们还需要处理我们的业务。

在实际业务中,用友也对开发者的开发流程进行了改革,以前想做一个应用,要先开一个需求讨论会然后提出一些要求,再形成需求文档,再进行设计,最后再由开发去完成。实际上在YonBuilder上面,甚至可以实现让业务人员自己去设计流程、设计数据流转,设计在各个端上面我们需要具备的能力。只有当业务在出现个性化需求时才需要开发者进入脚本或者代码来完成这个事情。

接下来肖老师讲述了一个实际案例,图右是系统里的采购流程,而完成一个采购需要走这些过程,从采购订单到完成销售,完成一个销售需要四个过程,销售订单、发货、出库到发票,但是到具体的客户还会有一些个性化的需求,比如说这个客户是以经销商为主的销售方式,那么客户要求能不能构建出一个新的应用,让经销商直接在我系统上面去下单?这个需求包含几个能力要求。第一,你的平台是否具备支撑社会化的能力。第二点,我在你平台上搭建的业务活动如何和已有的标品数据和流程去对接?最后在完成业务时,能不能实时、快速的把数据分析和报表拿出来。

为了实现这个需求,用友做了如下事情,首先为应用准备一份数据,和现在系统已经有的档案做结合,之后为这个业务构建对应的应用页面,其次基于这份业务和单据快速的构建流程,做完了流程之后需要配置这个单据和标配已有的销售订单来进行数据对接以及数据回写的工作,全部完成之后,最后会将成果发布到系统上,发布到系统以后会在整体的ERP上生成一个独立的应用,这个应用可以直接在平台上打开,也可以通过集成的方式集成到第三方系统里。

上述案例很好的体现了低代码平台的三个优势。第一,让其他角色参与到开发过程中,如案例中的经销商就,完全可以把业务单据设定好;第二,销售管理的员工完全可以定义我们的数据对接,将要货单和销售订单能够对接在一起;第三,开发者只需要进行个性化的逻辑和规则的开发。

YonBuilde,I know you

随着社会的发展,开发人员都普遍面临这几个问题:针对界面开发,无法很好的实现用户交互,定位困难,链条非常长,针对AI和区块链等新兴领域,学习成本过高等等这些都是开发人员碰到的问题。对产品负责人来说,在新项目上线时,如何搭建一个快速真正可用的产品、面对产品运维成本过高问题,急需降低运维成本、如何把开发的产品更好的推广出去,让更多用户见到它等等,而这些问题都可以通过YonBuilder平台进行解决。

用友的低代码平台是整合上图提供的这些能力,包括云原生、分布式架构等一系列整合的内容,通过它可以让开发人员用简单灵活的方式进行开发。最终实现人人都是开发者。同时用友也会对的开发者进行判断分级,分成公民开发者、初级开发者、高级开发者、技术专家四类,针对不同的开发者提供不同的能力。

针对公民开发者,在数据存储领域,用友提供一个统一的查询框架,可以实现远程的跨领域查询。在前端领域,用友通过统一的模板组件和存储进行设计,其解析的过程中协议是统一的,前后端的交互也是统一的。同时用友提供不同的支持多单的组件渲染功能,它会根据不同端进行渲染。在后台服务领域,用友提供了一种比较简单的开发方式就是规则引擎,即把部分算法按照一定顺序排列组合一下,然后按照这个顺序执行这些算法,最终完成一个服务的开发。这些算法的规则,可以重复复用,同时也提供到了很多系统级规则,以及一些领域级规则,供在开发时直接调用。

针对初级开发者,其主要的需求就是将时间花在的业务开发上,而不是调试环境和微服务,从而加快的创新速度。所以这种情况下,用友低代码开发的核心就是无服务器架构,可以让他不关注底层问题,而把自己的精力放在业务上,实现函数即服务。

为了实现这个目标,用友为公共服务提供统一的脚本服务。后端服务中有一个函数的执行引擎,是用规则的方式嵌入。在前端展现层,即web或者是移动端的界面,它其实就是一个标准的JS脚本,可以在任何一个前端界面嵌入这个脚本。在前端界面根据模板界面进行简单配置,使用用友模板的设计器就可以进行函数配置,比如通过事件的机制来触发,然后做一些业务处理。对于后端来说,函数跟规则引擎整合在一起,用户可以通过设计器灵活的定制规则。这个规则会调用函数执行引擎,然后通过执行引擎执行函数。执行函数过程中,后端函数里面提供大量的模型的操作接口,包括常用的接口服务都可以调用。

针对高级开发者而言,即高级开发人员和专业开发人员。他们更喜欢的就是什么事情都可以自己控制,你的低代码开发平台好用但是得知道怎么用?怎么部署的?自己能不能管理这个部署的结构?这种情况下,其实高级开发者关注研发全生命周期的管理,不只是关注研发这个事情本身。这种情况下他关注从原代码的开发到调试到应用环境的部署,到产品的验证、发布,还有产品怎么上架去对外销售,包括产品运维都需要关注。用友在低代码开发平台中也提供了一整套的工具和机制来支持这方面的能力。

为了达到高级开发者需求,用友做了如下措施:第一通过云服务的环境在我们的产品上进行开发。在可信环境下,即在用友的技术中台上提供给租户或者ISV的开发者用来去部署开发产生的服务环境,提供一系列的便捷工具,我们的应用引擎可以帮助他快速发布和部署应用,并且做了访问隔离,使得不同的开发组织之间的环境不能互相访问,这样保证环境的安全性。第二在外部环境,即企业自建的开发环境,会提供限流、安全检验来保证环境的安全可靠性。第三,在内部环境中,通过创造沙箱环境,在隔离数据库和生产环境的同时,保证用户体系的打通的。

针对真正的开发专家而言,他可以在现在低代码开发平台已经提供的基础上,再开发他自己新的研发资源。他可以对低代码的产出进行扩展,他可以帮助我们完善我们的低代码开发平台,就像一个开源项目一样他可以贡献自己产出。同时用友的低代码开发平台会提供很多扩展机制,同时这种扩展机制,会有一个注册的发布流程,让技术专家或者是专业开发人员,开发完了以后可以发布到统一的注册中心,然后通过这里增加一些配置,供其他人使用。

小结

本次DevRun开发者沙龙用友·华为云杯专场成功举办,为关注低代码/零代码开发的小伙伴们带来了许多实践上的经验。今年华为云还将在各地开办各类技术沙龙活动,持续展开技术布道,感兴趣的开发者可以持续关注。

财经自媒体联盟

新浪首页 语音播报 相关新闻 返回顶部