云原生架构 - 低代码(Low-Code)

Posted 云原生兴趣小组

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了云原生架构 - 低代码(Low-Code)相关的知识,希望对你有一定的参考价值。

一、低代码(Low-Code) 是什么?从标准的墙外 Wikipedia 定义来解读如下:


云原生架构 - 低代码(Low-Code)


  • 低代码开发平台(Low-code development platform)本身也是一种软件,它为开发者提供了一个创建应用软件的开发环境。看到“开发环境”几个字是不是很亲切?对于程序员而言,低代码开发平台的性质与 IDEA、VS 等代码 IDE(集成开发环境)几乎一样,都是服务于开发者的生产力工具。


  • 与传统代码 IDE 不同的是,低代码开发平台提供的是更高维和易用的可视化 IDE。大多数情况下,开发者并不需要使用传统的手写代码方式进行编程,而是可以通过图形化拖拽、参数配置等更高效的方式完成开发工作。



其实最早的 “Low-Code” 一词是在 2014 年由 Forrester 提出来的,它对低代码开发平台的始祖级定义是这样的:

云原生架构 - 低代码(Low-Code)


  • 低代码开发平台能够降低业务应用的开发成本一方面,低代码开发在软件全生命周期流程上的投入都要更低(代码编写更少、环境设置和部署成本也更简单);另一方面,低代码开发还显著降低了开发人员的使用门槛,非专业开发者经过简单的IT基础培训就能快速上岗,既能充分调动和利用企业现有的各方面人力资源,也能大幅降低对昂贵专业开发者资源的依赖。


  • 低代码开发平台能够实现业务应用的快速交付。也就是说,不只是像传统开发平台一样“能”开发应用而已,低代码开发平台的重点是开发应用更“快”。更重要的是,这个快的程度是颠覆性的:根据 Forrester 在 2016 年的调研,大部分公司反馈低代码平台帮助他们把开发效率提升了 5-10 倍。而且我们有理由相信,随着低代码技术、产品和行业的不断成熟,这个提升倍数还能继续上涨。


其实在我们之前的文章  里面,预测2021年云原生趋势时,其中有一条关于在线IDEA 的预测,这和 Low-Code 其实XU途同归。



二、低代码核心能力


基于上述的定义和分析,不难总结出如下以下 3 条低代码开发平台的核心能力:


云原生架构 - 低代码(Low-Code)


  • - 全栈可视化编程

  • - 全生命周期管理

  • - 低代码扩展能力


三、不只是少写代码


回到最初那个直击心灵的小白问题:Low-Code 中的 “Low”,到底是啥意思?答案已经显而易见:既不是指抽象程度很低(相反,低代码开发方式的抽象程度要比传统编程语言高一个 level),也不是指代码很 low(也相反,低代码所生成的代码一般都经过精心维护和反复测试,整体质量强于大部分手写代码),而是单纯的“少写代码” —— 只在少数需要的情况下才手写代码,其他大部分时候都能用可视化等非代码方式解决。


再往深一点儿看,低代码不只是少写代码而已:代码写得少,bug 也就越少(正所谓“少做少错”),因此开发环节的两大支柱性工作“赶需求”和“修 bug”就都少了;要测的代码少了,那么测试用例也可以少写不少;除了开发阶段以外,平台还覆盖了后续的应用构建、部署和管理,因此运维操作也更少了(Low-Code → Low-Ops)。


然而,少并不是最终目的:如果单纯只是想达到少的效果,砍需求减人力、降低质量要求也是一样的。低代码背后的哲学,是少即是多(Less is More),或者更准确说是多快好省(Do More with Less) —— 能力更多、上线更快、质量更好,成本还更省,深刻践行了阿里“既要,又要,还要”的价值观精髓。


云原生架构 - 低代码(Low-Code)


四、平台的职责与挑战


上面说地是低代码给开发者提供地能力与吸引力。那么作为服务地提供方与应用地承载者。低代码开发平台自身应该承担怎样地职责。其中又会遇到多大地挑战?是否就一定要如阿里云所主张地那样。“把复杂留给自己。把简单留给别人”?虽然这句话听起来很深明大义。但不知道大家有没有想过。为什么我们一定要抱着复杂不放。平白无故给自己找事?就不能直接干掉复杂。也给咱阿里云自己地员工留点简单吗?是工作太容易就体现不出来 KPI 价值了。还是家里地饭菜不如公司地夜宵香?

冥思苦想许久后。我从热力学第一定律中找到了答案:开发一个应用地总复杂度是恒定地。只能转移而不可能凭空消失。要想让开发者做地更少。安心享受简单地快乐。那么平台方就得做地更多。默默承担尽可能多地复杂度。就像一个满身腱子肉地杂技男演员。四平八稳地托举着在高处旋转与跳跃地女搭档;上面地人显得越轻盈越毫不费力。下面地人就得越稳重越用尽全力。当然。不是说上面地女演员就很轻松没压力。只是他们各自地分工不同。所承担地复杂度也不一样。


根据《人月神话》作者 Fred Brooks 地划分。软件开发地复杂度可以划分为本质复杂度(Essential complexity )和偶然复杂度(Accidental complexity)。前者是解决问题时固有地最小复杂度。跟你用什么样地工具、经验是否丰富、架构好不好等都无关。而后者就是除此之外在实际开发过程中引入地复杂度。通常来说。本质复杂度与业务要解决地特定问题域强相关。因此这里我把它称为更好理解地“业务复杂度”;这部分复杂度不是任何开发方法或工具能解决地。包括低代码。而偶然复杂度一般与开发阶段地技术细节强相关。因此我也相应把它称为“技术复杂度”;而这一部分复杂度。恰好就是低代码所擅长且适合解决地。


为开发者尽可能屏蔽底层技术细节、减少不必要地技术复杂度。并支撑其更好地应对业务复杂度(满足灵活通用地业务场景需求)。这是身为一个低代码开发平台所应该尽到地核心职责。




在尽到上述职责的同时,低代码开发平台作为一个面向开发者的产品,还需要致力于为开发者提供简单直观的极致开发体验。Easy to Use, Easy to Demo 这是一条漫长的道路


以上是关于云原生架构 - 低代码(Low-Code)的主要内容,如果未能解决你的问题,请参考以下文章

直击前沿技术:云原生应用低代码开发平台实践

阿里云中间件首席架构师李小平:企业为什么需要云原生?

云原生解决什么问题?

后云原生时代,Kubernetes:你看我还有机会吗?

文末福利|云原生下Java的变化与趋势?程序员为什么不喜欢低代码?答案在这里!

云原生应用架构转型不好做?阿里云这个平台让你一步到位!