阿里云 云原生应用研发平台EMAS 彭群(楚衡)前端
1、前言
若是选择用一个关键词来表明即将过去的2020年,我相信全部人都会认同是“新冠”。疫情来得太快就像龙卷风,短短数月就阻断了全世界范围内无数人与人之间的物理链接。但好在,咱们已经全面迈入互联网时代:N95口罩再厚,也阻挡不了信息比特流的顺畅流通(宅男:B站依然香);居家隔离再久,也妨碍不了钉钉消息的准时送达(社畜:工做依然苦)。逍遥子在9月份的云栖大会上说:“新技术表明的新生产力,必定是咱们全速打败疫情、开创将来最好的原动力。” 那么在后疫情时代,究竟须要什么样的新技术,才能真正解放IT生产力,加速社会数字化转型,Make The World Great Again?我认为是低代码(Low-Code)。程序员
基于经典的可视化和模型驱动理念,结合最新的云原生与多端体验技术,低代码可以在合适的业务场景下实现大幅度的提效降本,为专业开发者提供了一种全新的高生产力开发范式(Paradigm Shift)。另外一方面,低代码还能让不懂代码的业务人员成为所谓的平民开发者(Citizen Developer),弥补日益扩大的专业人才缺口,同时促成业务与技术深度协做的终极敏捷形态(BizDevOps)。本文将重点介绍低代码相关背景知识,包括低代码的定义与意义、相关概念、行业发展等,指望能帮助你们更好地认识与理解低代码这个新兴领域。算法
2、什么是低代码
“Low-Code”是什么?若是你是第一次据说,没准也会跟我当年从老板口中听到这个词后的心里戏同样:啥?“Low-Code”?“Code”是指代码我知道,但这个“Low”字是啥意思?不会是老板发现我最近赶工写的代码很丑很“Low”吧... 想多了,老板怎么可能亲自review代码呢。那难道是指,“Low-level programming”里的“Low”?老板终于发现让我等编程奇才成天堆Java业务代码太浪费,要派我去闭关写一个高性能C语言网络库... 显然也不是,老板哪能有这技术情怀呢。那究竟是什么意思?做为一名搜商比情商还高的程序员,能问Google的毫不会问老板。因而我一顿操做后,不假思索地点开了第一条搜索结果。果不其然,这是一条充满自由芳香只有***才能闻到的Wikipedia词条:Low-code development platform。数据库
Wikipedia定义
从Wiki的这段定义中,咱们能够提炼出几个关键信息:
编程
- 低代码开发平台(LCDP)自己也是一种软件,它为开发者提供了一个建立应用软件的开发环境。看到“开发环境”几个字是否是很亲切?对于程序员而言,低代码开发平台的性质与IDEA、VS等代码IDE(集成开发环境)几乎同样,都是服务于开发者的生产力工具。
- 与传统代码IDE不一样的是,低代码开发平台提供的是更高维和易用的可视化IDE。大多数状况下,开发者并不须要使用传统的手写代码方式进行编程,而是能够经过图形化拖拽、参数配置等更高效的方式完成开发工做。
Forrester定义
顺着Wiki的描述还能发现,原来“Low-Code”一词早在2014年就由Forrester提出了,它对低代码开发平台的始祖级定义是这样的:小程序
相比Wiki的版本,这个定义更偏向于阐明低代码所带来的核心价值:后端
- 低代码开发平台可以实现业务应用的快速交付。也就是说,不仅是像传统开发平台同样“能”开发应用而已,低代码开发平台的重点是开发应用更“快”。更重要的是,这个快的程度是颠覆性的:根据Forrester在2016年的调研,大部分公司反馈低代码平台帮助他们把开发效率提高了5-10倍。并且咱们有理由相信,随着低代码技术、产品和行业的不断成熟,这个提高倍数还能继续上涨。
- 低代码开发平台可以下降业务应用的开发成本。一方面,低代码开发在软件全生命周期流程上的投入都要更低(代码编写更少、环境设置和部署成本也更简单);另外一方面,低代码开发还显著下降了开发人员的使用门槛,非专业开发者通过简单的IT基础培训就能快速上岗,既能充分调动和利用企业现有的各方面人力资源,也能大幅下降对昂贵专业开发者资源的依赖。
低代码核心能力
基于上述的定义和分析,不难总结出以下这3条低代码开发平台的核心能力:安全
- 全栈可视化编程:可视化包含两层含义,一个是编辑时支持的点选、拖拽和配置操做,另外一个是编辑完成后所及即所得(WYSIWYG)的预览效果。传统代码IDE也支持部分可视化能力(如早年Visual Studio的MFC/WPF),但低代码更强调的是全栈、端到端的可视化编程,覆盖一个完整应用开发所涉及的各个技术层面(界面/数据/逻辑)。
- 全生命周期管理:做为一站式的应用开发平台,低代码支持应用的完整生命周期管理,即从设计阶段开始(有些平台还支持更前置的项目与需求管理),历经开发、构建、测试和部署,一直到上线后的各类运维(e.g. 监控报警、应用上下线)和运营(e.g. 数据报表、用户反馈)。
- 低代码扩展能力:使用低代码开发时,大部分状况下仍离不开代码,所以平台必须能支持在必要时经过少许的代码对应用各层次进行灵活扩展,好比添加自定义组件、修改主题CSS样式、定制逻辑流动做等。一些可能的需求场景包括:UI样式定制、遗留代码复用、专用的加密算法、非标系统集成。
不仅是少写代码
回到最初那个直击心灵的小白问题:Low-Code中的“Low”,究竟是啥意思?答案已经显而易见:既不是指抽象程度很低(相反,低代码开发方式的抽象程度要比传统编程语言高一个level),也不是指代码很low(也相反,低代码所生成的代码通常都通过精心维护和反复测试,总体质量强于大部分手写代码),而是单纯的“少写代码” —— 只在少数须要的状况下才手写代码,其余大部分时候都能用可视化等非代码方式解决。网络
再往深一点儿看,低代码不仅是少写代码而已:代码写得少,bug也就越少(正所谓“少作少错”),所以开发环节的两大支柱性工做“赶需求”和“修bug”就都少了;要测的代码少了,那么测试用例也能够少写很多;除了开发阶段之外,平台还覆盖了后续的应用构建、部署和管理,所以运维操做也更少了(Low-Code → Low-Ops)。架构
然而,少并非最终目的:若是单纯只是想达到少的效果,砍需求减人力、下降质量要求也是同样的。低代码背后的哲学,是少便是多(Less is More),或者更准确说是多快好省(Do More with Less) —— 能力更多、上线更快、质量更好,成本还更省,深入践行了阿里“既要,又要,还要”的价值观精髓。
平台的职责与挑战
上面说的是低代码给开发者提供的能力与吸引力,那么做为服务的提供方与应用的承载者,低代码开发平台自身应该承担怎样的职责,其中又会遇到多大的挑战?是否就必定要如阿里云所主张的那样,“把复杂留给本身,把简单留给别人”?虽然这句话听起来很深明大义,但不知道你们有没有想过,为何咱们必定要抱着复杂不放,无缘无故给本身找事?就不能直接干掉复杂,也给咱阿里云本身的员工留点简单吗?是工做太容易就体现不出来KPI价值了,仍是家里的饭菜不如公司的夜宵香?
左思右想许久后,我从热力学第必定律中找到了答案:开发一个应用的总复杂度是恒定的,只能转移而不可能凭空消失。要想让开发者作的更少,安心享受简单的快乐,那么平台方就得作的更多,默默承担尽量多的复杂度。就像一个满身腱子肉的杂技男演员,四平八稳地托举着在高处旋转与跳跃的女搭档;上面的人显得越轻盈越绝不费力,下面的人就得越稳重越用尽全力。固然,不是说上面的女演员就很轻松没压力,只是他们各自的分工不一样,所承担的复杂度也不同。
根据《人月神话》做者Fred Brooks的划分,软件开发的复杂度能够划分为本质复杂度(Essential complexity )和偶然复杂度(Accidental complexity)。前者是解决问题时固有的最小复杂度,跟你用什么样的工具、经验是否丰富、架构好很差等都无关,然后者就是除此以外在实际开发过程当中引入的复杂度。一般来讲,本质复杂度与业务要解决的特定问题域强相关,所以这里我把它称为更好理解的“业务复杂度”;这部分复杂度不是任何开发方法或工具能解决的,包括低代码。而偶然复杂度通常与开发阶段的技术细节强相关,所以我也相应把它称为“技术复杂度”;而这一部分复杂度,刚好就是低代码所擅长且适合解决的。
为开发者尽量屏蔽底层技术细节、减小没必要要的技术复杂度,并支撑其更好地应对业务复杂度(知足灵活通用的业务场景需求),这是身为一个低代码开发平台所应该尽到的核心职责。
在尽到上述职责的同时,低代码开发平台做为一个面向开发者的产品,还须要致力于为开发者提供简单直观的极致开发体验。这背后除了巨大的工做量,还得能在“强大”和“易用”这两个很难一箭双鵰的矛盾点之间,努力找到一个符合本身产品定位与目标客户需求的平衡点 —— 这也许是设计一个通用低代码开发平台所面临的最大挑战。
3、低代码相关概念对比
纯代码(Pro-Code / Custom-Code)
“纯代码”可能算是我杜撰的一个词,更常见的说法是专业代码(Pro-Code)或定制代码(Custom-Code);但意思都同样,就是指传统的以代码为中心(Code-Centric)的开发模式。之因此我选择用“纯代码”,是由于若是用“专业代码”会显得彷佛低代码就不专业了同样,而用“定制代码”又容易让人误解成低代码没法支持定制的自定义代码。
固然,更准确的称谓我认为是“高代码”(与低代码刚好对应,只是名字太难听,被我嫌弃了...),由于即使是使用传统的代码IDE,有些开发工做也支持(甚至更适合)以非代码方式完成,好比:iOS端开发时使用的SwiftUI界面设计器、服务端开发数据库应用时使用的PowerDesigner建模工具。不过这部分可视化工做在传统开发模式下只是起辅助做用,最后一般也是生成开发者可直接修改的代码;开发者仍然是以代码为中心来开展主要工做。
低代码与纯代码之间的关系,其实跟视频和文章之间很像:
- 低代码就像是现代的“视频”,大部份内容都由直观易理解、表达能力强的图片组成,所以更容易被大众所接受。但与此同时,视频也不是死板得只能有图片,彻底能够添加少许文字(如字幕、标注)来弥补图片表达不够精确的问题。BTW,关于“图”和“文字”之间的辩证关系,能够进一步参考《架构制图:工具与方法论》[1]这篇文章中的相关描述。
- 纯代码则更像是传统的“文章”,虽然好久以来都一直是信息传播的惟一媒介,但自从视频技术诞生以及相应软硬件基础设施的普及以来,便逐渐开始被抢走了风头。现在,视频已成为大部分人获取信息的主要渠道(从电视电影到B站抖音),而常常读书读文章的人却愈来愈少。但不能否认的是,文章依然有它存在的意义和受众(否则我也不会费这劲敲这么多字了),即便“市场份额”一直在被挤压,但永远会有它立足的空间。
若是按上面这种类比关系推导,低代码将来也会遵循与视频相似的发展轨迹,超越纯代码成为主流开发模式。Gartner的预测也表达了相同的观点:到2024年,全部应用程序开发活动当中的65%将经过低代码的方式完成,同时75%的大型企业将使用至少四种低代码开发工具进行应用开发。
但一样地,就像是视频永远没法取代文章同样,低代码也永远没法完全取代纯代码开发方式。将来低代码和纯代码方式将以互补的形态长期共存,各自在其所适合的业务场景中发光发热。在后面的“低代码业务场景”章节,会详细列出哪些场景在现阶段更适合用低代码模式开发。
零代码(Zero-Code / No-Code)
从分类的完备性角度来看,有“纯代码”天然也应该有彻底相反的“零代码”(也称为“无代码”)。零代码就是彻底不须要写代码的应用开发平台,但这并不表明零代码就比低代码更高级和先进,它只是作了一个更极端的选择而已:完全拥抱简单的图形可视化,彻底消灭复杂的文本代码。选择背后的缘由是,零代码开发平台指望能尽量下降应用开发门槛,让人人都能成为开发者(注意:开发 ≠ 写代码),包括彻底不懂代码的业务分析师、用户运营,甚至是产品经理(不懂装懂可不算懂)。
即使是专业开发者,在技术分工愈来愈精细的趋势下(前端/后端/算法/SRE/数据分析..),也很难招到一个能独立开发和维护整套复杂应用的全栈工程师。但零代码能够改变这一切:不管是Java和JavaScript傻傻分不清楚的技术小白,仍是精通深度学习但没时间学习Web开发的算法大牛,均可以经过零代码实现本身的技术梦或全栈梦。“改变世界的idea已有,就差一个程序员了”,这句玩笑话或许真的能够成真;哦不,甚至都用不着程序员,有idea的人本身就能上。
固然,全部选择都要付出代价,零代码也不例外。彻底抛弃代码的代价,就是平台能力与灵活性受限:
- 一方面,可视化编辑器的表达能力远不及图灵完备的通用编程语言,不引入代码根本无法实现灵活的定制与扩展(固然,理论上也能够作成Scrach/Blockly那样的图形编程语言,但那样不过是换一种形式在手写代码而已)。
- 另外一方面,因为目标受众是非专业开发人员,平台能支持的操做会更趋于“傻瓜化”(e.g. 页面只支持大块业务组件的简单堆叠,不支持细粒度原子组件和灵活的CSS布局定义),同时也只会透出相对“亲民化”的模型和概念(e.g. 使用“表格”表示数据,而不是用“数据库”),没法支撑强大专业的底层开发原语和编程理念。
虽然零代码与狭义上的低代码有着上述明显差别,但从广义上来讲,零代码能够看成低代码的一个子集。Gartner在其相关调研报告中,就是将“No Code”划在了范围更广的低代码应用平台“LCAP”(Low-Code Application Platform)中。而当前市面上不少通用的低代码开发平台,也都兼具必定程度的零代码能力;好比低代码领域领头羊Mendix,既提供了简单易用的零代码Web IDE - Mendix Studio,也包括一个功能更强大的低代码桌面IDE - Mendix Studio Pro。
HpaPaaS(高生产力应用PaaS)
上文提到,“Low-Code”一词是拜Forrester所赐。做为一样是国际知名调研机构(a.k.a 造词小能手)的Gartner,显然不会轻易在这场可能决定低代码领域江湖地位的新概念做词大赛中认输,因而也于2017年发明了“HpaPaaS”(High-productivity application Platform as a Service)这个听上去更高大上的缩写词。
按照Gartner的定义,HpaPaaS是一种支持声明式、模型驱动设计和一键部署的平台,提供了云上的快速应用开发(RAD)、部署和运行特性;这显然与低代码的定义一模一样。但事实证实,名字起得太专业并不见得是好事,“HpaPaas”最终仍是败给了起源更早、更接地气也更顺口的“Low-Code”:从2019年开始,Gartner在其相关调研报告中也开始全面采用“Low-Code”一词(如LCAP),亲手为“HpaPaaS”打上了 @deprecated 印记。
图源:https://blog.kintone.com/business-with-heart/difference-saas-iaas-paas-apaas-hpapaas
值得补充的是,“HpaPaaS“这个词也并不是横空出世,而是传承自更早以前Gartner提出的“aPaaS”,它俩之间的关系是:HpaPaaS只是aPaaS的一个子类;除了HpaPaaS这种经过低代码实现的高生产力应用开发平台之外,aPaaS还包括面向纯代码的传统应用开发平台(High-control aPaaS,便可控度更高的纯代码开发方式)。
不值得但就想八卦一下的是,“aPaaS”这个词也非凭空捏造,而是与云计算的兴起渊源颇深。相信各位云道中人都已猜到,aPaaS与IaaS/PaaS/SaaS这些云计算远古概念是一脉相承的:aPaaS介于PaaS和SaaS之间,相比PaaS提供的服务更偏应用,但又不像SaaS同样提供现成的软件服务(更详细的说明可参考配图来源文章)。
4、为何须要低代码
低代码是什么可能并没那么重要,毕竟在这个信息爆炸的世界,永远不缺乏新奇而又短命的事物。大部分所谓的新技术都只是昙花一现:出现了,被看到了;大部分人“哦”了一声,已阅但表示不感兴趣;小部分人惊叹于它的奇思妙想,激动地点了个赞后,回过头来该用什么仍是什么。真正决定新技术是否能转化为新生产力的,永远不是技术自己有多么优秀和华丽,而是它是否真的被须要,即:为何须要低代码?若是用不一样的主语填充上面这个问句(冷知识:这叫作“延迟主语初始化”),能够更全面地看待这个问题:
为何「市场」须要低代码?
在这个大爷大妈都满嘴“互联网+”和“数字化转型”的时代,企业愈来愈须要经过应用(App)来改善企业内部的信息流转、强化与客户之间的触点链接。然而,诞生还不过久的IT信息时代,也正面临着与我国社会主义初级阶段相似的供需关系矛盾:落后的软件开发生产力跟不上人民日益增加的业务需求。
Gartner预测,到2021年应用开发需求的市场增加将至少超过企业IT交付能力的5倍。面对如此巨大的IT缺口,若是没有一种革命性的“新生产力”体系,很难想象仅凭现有传统技术体系的发展延续就能完全解决问题。而低代码技术正是带着这样的使命而降临,指望经过如下几个方面完全革新应用开发生产力,拯救差一点就要迈入水深火热的IT世界:
提效降本 & 质量保障
虽然软件行业一直在高速发展,新的语言、框架和工具层出不穷,但做为从业者咱们不得不认可:软件开发仍处于手工做坊阶段,效率低、人力成本高、质量不可控。项目延期交付已成为行业常态,而瓶颈几乎老是开发人员(对机器能解决的问题都不是问题);优秀的开发人才永远是稀缺资源,还贼贵;软件质量缺陷始终没法收敛,线上故障频发资损不断。
相比而言,传统制造业通过几百年工业革命的发展,大部分早已摆脱了对“人”的强依赖:从原料输入到制品输出,中间是各类精密仪器和自动化流水线的稳定支撑,真正实现生产的标准化和规模化。虽然信息化号称是人类的第三次工业革命,但以软件行业目前的情况,远远还没到达成熟的“工业化”阶段。
因此,亲爱的程序员朋友,当你与前端联调了一上午接口,又与产品撕逼了一下午需求,再与本身的bug抗争了一整晚,好不容易遁入梦乡又被一连串报警短信吵醒时,是否有抬头对着星空憧憬过:“I have a dream... that one day,软件开发也能像工业制品同样,批量流水化生产,稳定高效没烦恼。” 事到现在,无论你有没有意识到,这个憧憬正在慢慢变成现实。
是的,低代码正在将应用软件开发过程工业化:每一个低代码开发平台都是一个技术密集型的应用工厂,全部项目相关人员都在同一条产线内紧密协做。开发主力再也不是熟知for循环一百种写法的技术Geek,而是一群心怀想法业务sense十足的应用Maker。借助应用工厂中各类成熟的基础设施、现成的标准零件、自动化的装配流水线,开发者只须要专一于最核心的业务价值便可。即使是碰到非标需求,也能够随时本身动手,用最灵活的手工定制(代码)方式来解决各类边角问题。
扩大应用开发劳动力
经过让大部分开发工做能够仅经过简单的拖拽与配置完成,低代码(包括零代码)显著下降了使用者门槛,让企业可以充分利用前面所提到的平民开发者资源。部分纯零代码需求场景下,低代码还能让业务人员实现自助式(self-service)应用交付,既解决了传统IT交付模式下的任务堆积(backlog)问题,避免稀缺的专业开发资源被大量简单、重复性的应用开发需求所侵占,也能让业务人员真正按本身的想法去实现应用,摆脱交由他人开发时不可避免的桎梏。
至此,应用开发能力再也不是少数专业开发者的专利和特权,且从此所须要的技能门槛与拥有成本也会愈来愈低,真正实现所谓的“技术民主化”(democratization of technology)。
增强开发过程的沟通协做
多方调查结果显示,软件项目失败的最主要缘由之一就是缺少沟通(poor communication)。传统开发模式下,业务、产品、设计、开发、测试与运维人员各司其职,且各有一套领域内的工具和语言,长久以来很容易造成一个个“竖井”(silos),让跨职能的沟通变得困难而低效。这也是为何当前热门的敏捷开发和DevOps都在强调沟通(前者是协同Biz与Dev,然后者是协同Dev和Ops),而经典的DDD领域驱动设计也主张经过“统一语言”来减小业务与技术人员之间的沟通不一致。
有了低代码后,这一情况将获得根本改善:上述各角色均可以在同一个低代码开发平台上紧密协做(甚至能够是同一我的),这种全新的协做模式不只打破了职能竖井,还能经过统一的可视化语言和单一的应用表示(页面/数据/逻辑),轻松对齐项目各方对应用形态和项目进度的理解,实现更终极的敏捷开发模式,以及在传统DevOps基础之上更进一步的BizDevOps[2]。
统一开发平台下的聚合效应
低代码尝试将全部与应用开发相关活动都收敛到同一个平台(one platform)上后,将会产生更多方面的聚合效应与规模收益:
- 人员聚合:除了上一点所提到的各职能角色紧密协做之外,人员聚合到统一的低代码开发平台进行做业后,还能促进整个项目流程的标准化、规范化和统一化。
- 应用聚合:一方面,新应用的架构设计、资产复用、相互调用变得更容易;另外一方面,各应用的数据都自然互通,同时平台外数据也能经过集成能力进行打通,完全消除企业的数据孤岛问题。
- 生态聚合:当低代码开发平台聚合了足够多的开发者和应用后,将造成一个巨大的、链接一切、有无限想象力的生态体系,完全放飞低代码的价值。
为何「这个时代」才须要低代码?
若是你了解过市面上各类低代码产品,不难发现其实这个领域的许多玩家在低代码概念诞生以前就已经存在了,好比:低代码领域的另外一个巨头OutSystems,早在2001年就已经创立;而去年也被Forrester评为低代码行业leader之一的FileMaker,更是诞生于遥远的1985年(正好35岁,彷佛在疯狂暗示什么)。那么,若是低代码像前面说的那么好,为何之前没有火起来呢?从技术和业务两个角度看,能够概括为如下缘由:
技术成熟度不足
低代码底层的各项核心技术(可视化、模型驱动、RAD、BPMS...)都已经有漫长的发展历史,看上去彷佛只是新瓶装旧酒。然而理智的人都知道,任何技术都会遵循所谓的“技术成熟度曲线”(The Hype Cycle),不可能刚一诞生就跳过发育直接秀翻全场,被大规模采纳和投入生产。以模型驱动技术为例,虽然十几年前就已经有体系化的理论研究(e.g. MDA)和配套工具(e.g. EMF),但在当时的技术背景下,因为能力不完备、过于理想化、技术门槛高等缘由,一直没能在工业界走向主流。
而现在这个时代,支撑低代码的那些“老”技术都已通过长时间的发展酝酿与市场检验,而另外一些完美互补的“新”技术(e.g. 云原生、响应式Web)也在飞速发展和走向成熟,是时候经过“低代码”这个新酒瓶从新包装上市,为亟需新生产力的传统IT市场带来一场真香之旅了。
业务收益不明显
即便十几年前的低代码技术已经足够成熟,也必定不会在当年的应用开发市场上产生如今这样的影响力。为何?由于技术都是为业务服务的,而当时的应用开发业务需求可比如今简单多了:没有现在的多渠道(Multi-channel)、多样化体验(Multi-experience)和各类集成与定制需求,也不会奢求现在已成为企业级应用标配的弹性、分布式和高可用,更是缺少快速变化的IT业务场景来推进持续集成与快速交付。
虽然低代码能够完美解决上述全部问题(e.g. 多端应用生成、云原生架构、API集成能力),但放在当年的市场和业务背景下,加上前面所说的技术不成熟度,总体的投入产出比会很低,不足以让企业大面积采纳低代码解决方案。
而现在这个时代,企业都快被新技术带来的能力和收益“惯坏了”,动不动就是:我想作一个送菜应用。用户端?安卓、iOS、H五、小程序都来一套。运营端?通常都在电脑上看,但记得手机上也得适配啊。服务端?上云,必须的。哦,我听技术合伙人说如今流行多云架构,也给我整一套哈。运维还要钱?啥是运维?应用有了不就能用了嘛,运维还要花我钱?你当投资者给个人钱是大风刮来的啊!
若是用传统的开发模式,这么全套下来的工时与报价,可能早就吓跑了这群跟产品经理同样天真可爱的人;但现代化的低代码技术,能够圆了上面这位创业者的卖菜梦,用白菜通常的价格,实现白粉同样的价值。当年的程维若是能用上如今的低代码,初版的滴滴App也就不至于被外包作得乌烟瘴气直接报废了(至少能多扛一阵子...)。
为何「专业开发者」也须要低代码?
虽然零代码确实是设计给非专业开发者用的,但其所能支撑的业务场景确实有限,没法真正革新传统开发模式,替代那些仍需专业开发者参与的复杂业务场景。而狭义上的低代码却有潜力作到这一点,由于它天生就是为专业开发者而量身定制的。Gartner最近的一项调研报告显示,“66%的低代码开发平台用户都是企业IT部门的专业开发者”。这充分说明了,专业开发者比平民开发者更须要低代码。
屏幕前一批穿格子衬衫的同窗要发问了:“低代码都不怎么写代码了,怎么能算是为咱们程序员服务呢?”。虽然程序员讨厌重复本身,但重要的事情仍是得多说一遍:开发 ≠ 写代码。1万年前蹲在洞穴里的原始人,在用小石子画远古图腾;100年前坐在书桌前的徐志摩,在用钢笔给林徽因写情书;而今天趴在屏幕前的不少人,相信都已经开始用上手写板或iPad涂涂写写了。千百年来,人类使用的工具一直在演进,但所从事活动的本质并无多大改变。不管是用小石子仍是小鼠标,写做绘画的本质都是创造与表达,最终做品的好坏并不取决于当时你手中拿着什么;一样地,应用开发的本质是想法和逻辑,最终价值的高低也不取决你实现时是用的纯代码仍是低代码。
而相比纯代码而言,低代码极有可能成为更好的下一代生产力工具:
减小没必要要的工做量
可视化拖拽与参数配置的极简开发模式,结合模型驱动的代码自动生成机制,能够消灭绝大部分繁琐和重复的boilerplate代码;一站式的部署和运维管理平台,无需本身搭建CI/CD流水线、申请环境资源、配置监控报警;一次搭建同时生成、构建和发布多端应用,免去人工同步维护多个功能重复的端应用;开箱即用的组件库、模板库、主题库、链接器等,让最大化软件复用成为可能。总而言之,低代码可以让专业开发者更专一于创新性、有价值、有区分度的工做,而不是把宝贵开发时间都耗费在上面那些没必要要的非业务核心工做上。
强大的平台能力支撑
虽然上面列的技术支撑性工做并不直接产生业务价值,但却会直接影响业务的性能、成本、稳定性、安全性、可持续发展能力等。有远见的企业,毫不容许牺牲这些重要指标,来换取短暂的业务加速。低代码开发平台深知这一点,所以在简化和屏蔽底层技术细节的同时,也会尽量把本身所cover的部分作到最好(至少能和纯代码开发方式同样好),包括但不限于:
- 现代化的技术架构和实现:现代化的低代码开发平台,在支撑用户应用时所选择的技术架构与实现方案,也会是现代化且符合业界最佳实践的,例如,前端基于主流的HTML5/CSS3标准和React框架,后端基于成熟的Java语言、SpringBoot框架和MySQL数据库,部署环境基于云原生的Docker镜像、CI/CD流水线、K8s集群和Service Mesh技术(相关知识可参考《正确入门Service Mesh:起源、发展和现状》)。
- 零成本的技术升级和维护:低代码的高维抽象开发方式,让应用的核心业务逻辑与底层技术细节完全解耦。开发者在大部分状况下都不须要关心底层技术选型,同时也无需亲自跟进这些技术的版本升级与漏洞修复,免费享受与时俱进的技术红利和应用安全性提高。即使遇到某些底层技术或工具须要进行完全更换(好比再也不维护的开源项目),开发者也彻底没必要感知;技术迁移再费劲再难搞,平台本身努力就行,对开发者来讲只要服务一直在线,岁月就依然静好;过后可能还会惊喜地发现,应用访问忽然就变得更快了,仿佛冥冥中自有天助,感激上苍和低代码。
一体化生态能力复用
复用(Reuse)是提高软件开发效率和工程质量的最有效途径。传统的代码开发模式下,开发者能够经过提取公共类/函数、引用共享库、调用外部API服务、沉淀代码片断和模板等方式实现复用。在低代码的世界里,平台也能够提供对应的多层次多粒度复用手段,好比页面组件库、逻辑函数库、应用模板库等。
但更重要的是,低代码平台还能够充分发挥其一体化的生态优点,提供强大易用的可复用能力(资产)的发现、集成与共享体系:以页面组件为例,你能够直接用系统组件,也能够在平台自带的组件市场上搜索和引用更合适的组件,还能够本身用代码开发一个自定义组件并发布到市场中。平台的生态体系越大,积累的可复用能力就越多,应用的开发成本也会越低。
相比而言,虽然传统代码世界总体生态更庞大和深厚,但因为各种技术不互通、缺少统一平台与市场、代码集成成本高等缘由,一直以来都没有造成有相似规模潜力的生态能力复用体系,致使重复造轮子和低水平重复建设的现象司空见惯,还美名为“新基建”。
说到这里,另外一批裹着冲锋衣头顶锃亮的同窗也忍不住了:“万一低代码真的发展起来了,是否是就不须要那么多程序员了啊?上有老下有小的,同是码农身,相煎何太急!”。低代码虽然是一场应用开发生产力革命,但并不会革掉程序员的饭碗。它去掉的只是难懂的编程语法、繁琐的技术细节和一切可自动化的重复性工做,并无也没法去掉应用开发最核心的东西:严谨的业务逻辑、巧妙的算法设计、良好的工程风格等。对于真正的程序员,即便剥去他一层又一层的编程语言和工具熟练度技能外壳,最终剩下的仍然是一个有价值的硬核开发者。
固然,若是你坚持要用纯粹的写代码方式来改变世界,也不至于失业。要么,你能够选择那些低代码暂时不太适用的领域,好比底层系统驱动、3D游戏引擎、火箭发射程序;或者,你也能够选择去写低代码中那一部分不可或缺的自定义代码扩展,为平民开发者提供高质量的积木。最后,你也彻底能够选择为低代码平台自己的底层代码添砖加瓦,好比加入阿里云云原生应用研发平台EMAS团队 (〃'▽'〃) ,与做者一块儿共建下一代云原生低代码开发平台“Mobi”,内推直达邮箱:pengqun.pq@alibaba-inc.com。
为何「我不」须要低代码
即便全部人都认同上述“为何要用低代码”的理由,但仍不时会有试水者跳出来,给你们细数“为何我不须要低代码”。实践出真知没错,并且大部分质疑背后也都有必定道理;但在我看来,更多的多是主观或无心识的偏见。这里我列了一些对低代码的常见质疑和我我的的见解,指望能帮助你们看到一个更全面和客观的低代码。
质疑1:低代码平台很差使
“试用过一些所谓的低代码开发平台,要么能力很弱,要么体验太差,只能开发点玩具应用。”
做为调研过国内外多款低代码产品的深度体验用户,个人观点是:不能以偏概全。低代码市场在国内正处于爆发初期,因此许多与低代码只沾一点边的产品也都在蹭热点;但它们并不能表明低代码目前的业界水平和发展方向。市面上真正成熟的企业级低代码开发平台,彻底有能力以高效的开发方式知足大部分复杂场景的功能需求,以及企业级应用所须要的安全、性能、可伸缩等非功能需求,这一点在国外市场已获得充分验证(否则也不会这么被寄予厚望)。
固然,国内市场尚处于鱼龙混杂的混战阶段,遇到真龙的几率很低,但碰上金鱼鲤鱼甚至木头假鱼都在所不免。相信随着时间推移,真正有实力和口碑的产品都能脱颖而出,为你们展示低代码该有的样子。
质疑2:低代低开发不可控
“平台上的各类可视化组件、逻辑动做和部署环境都是黑盒,若是内部出问题没法排查和解决。”
做为一样不搞清楚底层原理不舒服斯基的程序员,我更愿意相信:问题只是暂时的。虽然这确实是目前使用低代码平台时绕不开的一个痛点,但并不属于低代码技术自己的固有缺陷。计算机领域有一句至理名言:任何问题均可以经过增长一个间接的中间层来解决。低代码的思路亦是如此:与当年的操做系统和如今的云平台同样,都是想经过创建一个黑盒化的中间层抽象来下降开发者的工做量与心智负担。
固然,全部额外增长的中间层都不是彻底免费的,低代码也不例外。做为一个还没有成熟稳定的新的中间层,低代码必然会出现各类让使用者束手无措的问题,就跟当年的操做系统内核bug、现在的云主机I/O hang同样。但历史规律也告诉咱们,全部伟大的技术最终都会走向成熟;只要低代码领域一直健康发展,问题总会愈来愈少,最终降到一个绝大部分人感知不到的范围内。过去萦绕在Windows用户心中挥之不去的“蓝屏”问题,对现在的新用户来讲早已不知为什么物;今天低代码开发者所遇到的种种“蓝瘦”问题,将来也终将成为被遗忘的历史(谁还没段黑历史呢)。
质疑3:低代码应用难维护
“应用一旦复杂起来,各类复杂逻辑流穿插着自定义代码,看不懂也改不动,还不如全用代码呢。”
做为对软件可维护性深有感触的无脑级布道者(见《救火必备!问题排查与系统优化手册》),我不得不说:用低代码开发,也要讲基本法。通常来讲,不管是使用低代码开发仍是纯代码开发,形成应用可维护性低的根本缘由每每不在于开发工具,而是开发者自身没有去遵循一些软件开发的普适原则,好比工程规范性、命名可读性、DRY/KISS/SOLID原则等。
好的低代码平台毫不会阻碍开发者去改善应用的可维护性;偏偏相反,还会尽量提供引导和帮助。以Mendix为例,除了支持基本的模型分析与重构(e.g. 无用模型、对象重命名、子逻辑流提取)之外,甚至还提供了基于ISO/IEC 25010标准的应用质量监控(AQM)能力。另外一方面,让应用变得难以维护的一个客观缘由也是应用自己过于复杂,而低代码做为高度抽象和自动化的开发模式,在下降应用复杂度方面是专业的。
综合来看,低代码虽然不是能解决一切问题的银弹,但更不是会带来更多问题的炸弹:在提升应用可维护性方面的上限,必定比传统开发模式更高;但决定应用可维护性下限的,依然仍是开发者本身。
5、低代码行业发展
回应质疑的最好方式,就是作好你本身,用实际的表现说话。对于一个行业而言,判断它当前的表现是否够好,或者将来是否有潜力作到更好,能够从如下这三个方面进行衡量:市场规模(蛋糕够不够大)、适用场景(是否可落地)、竞品情况(有没有被验证过)。
市场规模
"Talk is cheap,show me the code money."
—— Linus Starcraft
文章能够忽悠,但市场不会说谎:
- Forrester在2015年曾预测过,低代码的市场将从2015年的17亿美圆增加至2020年的150亿美圆。
- Marketsandmarkets在今年四月份的分析报告中预测,低代码的市场将从2020年的130亿美圆(估算值,能够看出来与Forrester当年的预测是接近的)增加到2025年的450亿美圆(年复合增加率:28.1%)。
- PS Inteligence在2018年的分析报告中预测,全球的低代码开发平台市场中,亚太地区将在从此五年(2019-2024年)中保持最高的增加速度。
总结一下就是两点:
- 低代码的市场规模足够大,且一直都在高速增加。
- 做为亚太地区的经济大国与IT强国,中国的低代码市场将会引来一个爆发期,将来几年内的增速都会超过全球平均水平。
适用场景
理论上来讲,低代码是彻底对标传统纯代码的通用开发模式,应该有能力支撑全部可能的业务场景。但理论也只是理论,低代码一统江湖的梦想还没有照进现实,也不可能彻底取代现实。前文中提到过,低代码与纯代码方式是互补关系,将来也将长期共存,各自在其所适合的业务场景中发光发热。同时还须要指出的是,当前阶段的低代码技术、产品和市场都还没有彻底成熟,所以部分原本可能很适合用低代码来开发的场景,目前也只能先用纯代码来替代。
Gartner在2019年的低代码调研报告中,曾经绘制过一张用来阐述低代码适用场景的“应用金字塔”:
- 应用级别划分:从下往上,分别为工做组级(Workgroup Class)、部门级(Departmental Class)、企业级(Enterprise Class)、可扩展需求极强的企业级(Extreme-Scale Enterprise Class)。容易看出来,它主要的划分维度就是应用所面向的用户基数(基数越大,可扩展需求也越高)。
- 任务关键性:从下往上,各级别应用的任务关键性(Mission Criticality)逐级递增。例如一个只在工做组内使用的后台管理应用,通常都不会涉及到影响整个企业的关键任务。脱离企业这个视角来看,整个软件产业中也有不少通用的任务关键型应用,好比:实时操做系统、航空调度系统、银行对帐系统。
- 实现复杂度:从下往上,各级别应用的复杂度(Complexity)也逐级递增。例如最上层的企业级应用,除了功能覆盖面大致使业务复杂之外,每每还须要知足更多苛刻的非功能需求,包括但不限于:用户体验、性能、可靠性、安全性、可伸缩性、可维护性、兼容性。其余一些复杂软件的案例包括:3D游戏界面(交互复杂)极其底层的游戏引擎(逻辑复杂)、超大型CRM系统(一方面是实现很复杂,另外一方面,这种成熟软件的标准化程度较高,大部分状况下能够直接用现成的SaaS软件)。
- 应用需求量:从上往下,各级别应用的需求体量(Volume)逐级递增,呈现一个金字塔形状。这个特征能够用万能的2/8原则来理解:20%的“全民”应用,因为需求的通用性和普适性,能够覆盖至少80%的用户群体(例如企业大部分人都要用的考勤系统);而剩下那80%的“小众”应用,因为需求的定制化和特殊性(例如蚂蚁的期权系统...),就只能覆盖各自小圈子里那20%的用户了。
- 与低代码的契合关系:从上往下,各级别应用与低代码愈来愈契合(Relevant)。也就是说:越简单的应用,越契合低代码;越不太关键的任务,也越契合低代码。同时,因为契合低代码的应用更偏金字塔底层,而这些应用的需求量都更大,因此能够得出以下判断:低代码可以适用于大部分业务场景(并且这个比例会一直上升,逐步往金字塔的更上层应用逼近),例如:B2E类应用(表单、审批流、ERP系统)、B2B类应用(企业商城、工业控制台)、B2C类应用(企业展现、营销页、店铺装修)。
竞品概况
低代码虽然是一个新兴概念,但这个行业自己并不算很新(前文也有提到),这些年以来早就积累了很多资深的荣耀王者。同时,低代码做为一个朝阳产业和资本热点,近几年也不断有更多的新玩家在加入这个刺激战场。
上图分别是Gartner给出的低代码平台魔力象限和Forrester给出的低代码平台技术波谱。从图中能够看到:
- OutSystems和Mendix身先士卒,是公认的低代码领域头牌。这两家都是很纯粹的通用低代码开发平台,且都通过了长时间的发展和积累:OutSystems成立于2001年,员工人数1000+,年营收超过1亿美圆;2018年6月得到了KKR和高盛的3.6亿美圆融资,目前估值超过10亿美圆;Mendix成立于2005年,员工人数500+,年营收超过2300万美圆(18年数据),2018年8月被西门子以7.3亿美圆收购。
- Salesforce和Microsoft紧随其后,都处于行业领先者地位。但这两家的公司性质和发展路径都很不同:Salesforce是以SaaS起家,公司规模就不用多说了,反正就是SaaS届的巨无霸。这类SaaS厂商作低代码的动力,是为了解决客户对成品SaaS软件的定制诉求。M$更不用多介绍,只说下他们作低代码的自然优点:一方面,做为办公软件航空母舰,低代码能够帮助他们的客户实现从Excel表单到定制App的能力与体验升级;另外一方面,做为云计算三巨头之一,低代码能够帮助他们链接内部的云计算生态体系,为开发者提供一个统一和易用的上云界面。
- 国外市场已经获得充分验证,但国内市场还刚刚兴起,尚未一家可以赢得上述调研机构的芳心,挤进上面这两张方图。国内目前的一些竞品和融资状况包括:2018年5月,搭搭云完成A轮的千万级融资;2018年9月,宜创科技获得清源创投的战略融资;2018年12月,轻流完成千万级Pre-A融资;2019年8月,数式科技获得盈动资本的数千万人民币天使轮融资;2019年8月,ClickPaas得到晨兴资本数百万美圆的A轮融资;2019年,奥哲分别得到阿里5千万的A+轮融和高榕资本上亿元的B轮融资。(注:竞品数据来源于咱们组PD的辛勤整理;为此我决定这篇文章剩下内容不再黑PD了;下篇再说。)
6、结语
本文总结了低代码领域的基本概念、核心价值与行业现状。虽然这些内容都比较基础和偏理论,但我始终认为,深入理解一个系统的前提,正是这些务虚的东西 —— 技术架构只会告诉你这个系统是怎么实现的(How),没法准确表述它到底能用来作什么(What),以及为何要作这样一个东西(Why);然后面这两个问题的答案,才是后续系统全部设计与演进的根因和驱动力。
虽然程序员真的不喜欢重复本身,但冗余也是一种必要的容错手段,好东西真的不容错过:欢迎各位技术同路人加入阿里云云原生应用研发平台EMAS团队,,咱们专一于普遍的云原生技术(Backend as a Service、Serverless、DevOps、低代码平台等),致力于为企业、开发者提供一站式的应用研发管理服务,内推直达邮箱:pengqun.pq@alibaba-inc.com。