腾讯云微搭低代码是高效、高性能的企业级低代码平台。帮忙开发者疾速搭建反对多种业务场景的小程序、H5、PC WEB 利用,通过简略的利落拽操作,而不必编写简单的代码,实现少写代码或者不写代码,就能疾速高效实现业务指标。
本文将带大家深刻聊聊微搭的技术架构,来理解下微搭是如何平安、稳固、牢靠地撑持商业级利用从搭建到公布上线的。
01 低代码平台演进
1. 低代码概念
低代码是无需编码(0 代码)或通过大量代码就能够疾速生成应用程序的开发平台。
通过可视化进行利用程序开发的办法,具备不同教训程度的开发人员能够通过 图形化的用户界面 ,应用 拖拽组件和模型驱动的逻辑 来创立网页和挪动应用程序。
2. 低代码衍生历程
- 20 世纪 80 年代,第四代编程语言呈现。
- 2000 年 VPL 可视化编程语言的诞生,是低代码产品的前驱,都能够通过一些可视化的界面来进行操作。
- 2014 年 业界咨询机构 Forrester 低代码 / 零代码概念。
- 2016 年 国内低代码平台相继公布。
- 2018 年 业界咨询机构 Gartner 提出 aPaaS 和 iPaas 的概念。
- 2021 年 中国市场低代码生态体系逐渐建设。
3. 为什么要用低代码?
1)降本增效,便捷开发
低代码开发可能为企业降低成本,晋升效率。在过来,低代码平台呈现之前,传统的原生代码开发平台须要进行代码开发,开发实现之后须要进行测试以及 bug 修复的一系列繁琐工作。
此外,传统的原生代码开发平台波及到一些上下游合作方是紧耦合的串行开发模型,依赖方不提供接口,上游服务也没有方法进行该接口的开发工作。这减少了开发过程中大量的沟通老本和工夫老本。
低代码开发平台呈现后,研发人员能够通过前端图形化的利落拽实现需求,实现了研发效率的进步,应用低代码平台升高了研发人员的工作量和对编码人员开发技能的要求。低代码平台套用封装代码,根本打消测试修复 bug 的环节。同时,低代码开发平台是松耦合的并发开发模型,大大降低开发中对合作方的依赖性,从而升高沟通和工夫老本。
2)突破业务竖井,加强跨职能沟通
传统开发模式下:业务、产品、设计、开发、测试与运维人员各司其职,且各有一套畛域内的工具和语言,长久以来很容易造成一个个“竖井”,让跨职能的沟通变得艰难而低效。
有了低代码后,咱们可能基于低代码疾速的进行开发,这一情况将失去改善。因为低代码上手容易,无需通过太多业余的训练,业务人员也能够疾速上手,通过“利落拽”,基于模板或者可视化界面疾速生成利用,从而突破业务壁垒。
3)进步产品的灵活性
企业能够利用低代码平台发能够轻松地更改利用和业务流程,而无需破费大量工夫编写代码。利用和零碎的灵活性、可操作性和可更改性大大提高。
4)放慢数字化转型
在经济新常态下,为了进步经营效率和经营体现,数字化转型是大多数传统企业的指标,而低代码技术能够帮忙企业更快更好地实现数字化转型。
相比于纯代码开发,应用低代码开发企业应用能将我的项目的交付周期大幅缩短,从而更敏捷地实现我的项目交付,大幅晋升企业数字化的速度。麻利交付的背地是更多次数的迭代,以及软件系统与企业贴合度的大幅晋升,而这点是企业数字化转型成败的要害。
4. 全代码 & 低代码 & 无代码比照
此处用一个象限图来阐明业界低代码的演进方向,首先从看到图中的箭头,左下到右上,咱们从传统的编程模式是逐步向无码化来演进的。
左下的代码编程,就是咱们传统的编程阶段。前提是须要有一些比拟强的编程能力。从晚期的低级语言、到高级语言、进而到类库的提供、以及组件的应用。
右上的无码操作,指的是无代码、通用 SaaS 类的产品是能够让咱们进行简略快捷的进行操作生成利用,但他们的灵活性是不够的,如果要反对灵活性和扩展性往往须要咱们扭转他们。
有没有一种更好的形式,可能反对这种状况?我认为最现实的状况是,在开发者不懂前端语言(JavaScript 等)或者不懂后端语言(Php、Java 等)的状况下,仍然能开发一个足够灵便、足够通用的利用。我认为,低代码平台 就是最靠近这一个畛域的伎俩,因其能够同时兼顾灵活性和业务逻辑,从而达到最适宜开发小白的需要的现实状态。
5. 低代码市场剖析
低代码行业最近几年始终被出名咨询机构 Gartner 所关注。目前,国内外都有很多企业在退出低代码平台搭建,足以阐明这个行业的市场认可水平。
从咨询机构 Gartner 的市场剖析来看,2023 年寰球超过 50% 的大中型企业将把低代码利用平台作为次要的霸占利用平台之一。预计到 2024 年,低代码利用程序开发将占总利用开发的 65%以上。
6. 低码平台外围能力
低代码的平台具备的外围能力因素,我认为有四点:
- 可视化开发
- 数据模型驱动
- 扩展性
- 工程化
上面针对以上四点逐个剖析:
(1) 可视化开发
业务人员基于可视化的页面或工具可能进行简略利落拽、能够造成一个页面信息。
他们也可能基于可视化界面来配置定义数据源和数据模型、简略定义一个流程,能够执行工作流。
总而言之,就是前端利落拽能够造成前端的交互语言,进而生成后端能够执行的计算机语言。
(2) 数据模型驱动
低代码平台,可能能够通过页面上的操作进行定义一个模型定义,能够灵便的定义模型中的字段、也能够进行相干数据表的关联操作,以及设置数据模型的规定和索引。
a. 模型定义
进行数据库模型的设计、增加字段,设置字段的类型以及索引
b. 模型关联
建设数据库表与表之间的关系,具体表现为 1 对 n,n 对 n,n 对 1、1 对 1 等关联关系
c. 数据操作
基于数据库表对外提供一个 CRUD 的操作,让利用可能操作该数据模型
(3) 扩展性
是指低代码平台是否能够提供一些机制来进行扩大。
具体的扩大形式有以下三点:
a. 扩大语言
低代码平台是否可能我相熟的语言来扩大,如果我是前端开发者,是否提供前端相熟的语言来扩大,如果我是后端开发者,是否基于写一些后端代码(Java、Go 等)来扩大。
b. 逻辑扩大
低代码平台是否通过定义一些流程图也进行业务逻辑的扩大,来执行业务 if、else 的流程来做业务上的一些调用。
c. API 集成
低代码平台是否能够通过低码平台搭建的利用与第三方公司已有的零碎或者服务做集成,是否在低码中通过 API 做集成过去,供我的利用来调用集成。
(4) 工程化
低代码平台是否能够进行本地开发调试、版本控制、主动构建公布上线、免运费以及监控的一些能力。简略来说是否在该平台上一站式配套的能力。
a. 扩大语言
低代码平台要可能进行本地的开发调试。
b. 版本治理
低代码平台能够进行版本回退操作,以及有能力能够预留体验,回退体验的时候不会影响到公布态的产物。
c. 自动化
低代码平台能够主动构建公布上线、免运费以及配套监控的一站式能力
02微搭低代码架构和开发简介
1. 微搭低代码介绍
微搭低代码平台 是高效、高性能的拖拽式低代码开发平台,向上连贯前端的行业业务,向下连贯云计算的海量能力,助力企业垂直上云。微搭以云开发作为底层撑持,云原生能力将利用搭建的全链路买通,提供高度凋谢的开发环境。
微搭低代码是低代码应用程序平台(LCAPS)+ 多维体验开发平台(MXDP)的结合体。
咱们有以下能力:
1)多端反对
一套代码,能够同时反对多端、小程序、web、pc 都可用。
2)生态集成
咱们外部集成了腾讯文档,腾讯会议、微信领取、企微等能力,能够一站式用用户提供能力。
3)高阶组件
外部提供了模型组件、企业工作台等高阶组件。
-
开箱即用
提供了开箱即用的能力,能够通过咱们的利用市场、模板核心能够疾速的进行业务开发和公布。
-
云端一体
底层是 serverless 云原生技术 , 业务开发实现之后,业务上的是免运维免部署。
-
对立治理
提供了框架开发的标准,便于对立的治理。
-
高扩展性
反对高扩展性,高扩展性可能自定义组件、第三方数据源实现自定义逻辑的扩大。
-
混合开发
业务模式上反对 可视化开发、低代码开发的能力。
2. 微搭低代码产品架构
微搭低代码提供了利用开发的一站式低代码开发服务,从底层能力迭代至行业级计划,云原生全链路撑持为您的利用保驾护航,让您可能齐全专一于业务场景,小白也能够极速搭建出成熟、业余的利用。
3. 微搭低代码后端实际
咱们看下微搭低代码的后端实际,那么咱们思考下后端低代码须要解决什么问题?我认为应该有四点,以及具体在微搭低代码平台是如何实际的:
1、业务数据如何存?如何实现自定义数据存储?
微搭低代码形象出了 数据模型。
2、如何实现业务流程流转?
微搭低代码基于 工作流 来进行业务流程流转。
3、业务数据和流程流转,那些人能够拜访和管制?
微搭低代码建设了 用户权限平台,来进行人员角色的管制。
4、如何进行服务端逻辑的自定义扩大?
微搭低代码通过 云函数来实现后端服务的自定义扩大能力。
所以咱们微搭低代码后端开发实际分为以下四种:
数据模型、工作流、角色权限、服务端扩大。
咱们逐个看下具体每个是如何设计的:
1、数据模型
数据模型基于业界规范的能力 JSONSchema 来进行扩大,数据模型分为外部数据源和内部数据源两种。
数据模型 – 外部数据源:
为咱们提供数据模型定义,索引、以及各种数据模型的关系。
咱们能够灵便的来自定义数据字段,以及字段的索引性能。
也能过提供规范通用的能力,比方新增、删除、查问、更新等。
数据模型 – 内部数据源
连接器:
连接器能够买通内部利用数据或调用内部利用凋谢的服务,开发者只须要对连接器实现受权或大量填写一些配置信息,即可应用对应产品的服务接口。
咱们外部集成一些企业级的利用,比方腾讯会议、腾讯文档、腾讯地图、微信领取等利用,不便疾速提供一些企业级的能力给到开发者。
自定义连接器
自定义连接器反对调用第三方服务接口或应用代码来实现业务逻辑。开发者能够在利用、工作流、自定义数据模型中应用。
分为 http 和云函数模式:
http:开放式 API,用户来链接内部的服务,与内部 API 来做集成。
云函数模式:齐全自定义 , 当用户以上所有的场景均不能满足的时候,能够通过云函数的来手动写一些代码来自定义一些逻辑,实现业务上的逻辑扩大。
2、工作流
工作流基于业界规范 bpmn 协定来扩大,数据展现和存储基于规范 JSON 来解决可读性更高。
微搭工作流的触发工夫:
- 可配置触发机会:
即时机会、也反对定时触发。能够通过配置一些节点,来执行业务逻辑的操作。
- 操作节点:
咱们反对审批节点、自动化节点、数据源变更告诉、加签、转签等操作。告诉节点与音讯模板集成,能够发送零碎站内信、与企微买通,能够发送企微零碎音讯。咱们也反对本地调试,反对版本回溯能力。
3、角色权限
角色权限整体遵循 RBAC 模型来进行设计的,业务上可灵便的反对扩大。具体用户可能拜访哪些页面、数据源、以及流程权限等,咱们也反对设置一些权限集,以便于灵便地进行业务上权限的扩大。
从下边的图能够看到,咱们能够管制一般利用的拜访权限,页面权限以及页面下的按钮权限,也能够管制模型利用的权限;
能够控制数据源的行记录,数据源办法权限,数据源列权限,也可能对流程的拜访权限做管制,还能够管制企业工作的拜访和登录权限等操作。
4、服务端扩大
服务端的扩大基于云函数的能力,通过页面可视化编写代码来进行服务端逻辑的扩大。能够做一些数据表的聚合,以及 CRUD 等操作方法。
云函数(Serverless Cloud Function,SCF)是腾讯云为企业和开发者们提供的无服务器执行环境,帮忙您在无需购买和治理服务器的状况下运行代码。您只需应用平台反对的语言编写外围代码并设置代码运行的条件,即可在腾讯云基础设施上弹性、平安地运行代码。
4. 微搭利用开发流程
此处将介绍基于微搭利落拽来疾速构建一个利用的生命周期,整个低码利用开发和运行的生命周期,以及低码在设计态和运行态做了什么。
在微搭的利用开发流程中,微搭利用的生命周期分为设计态和开发态。
1)设计态
咱们通过前端可视化的界面和组件,进行表单定义模型及定义模型关联关系。咱们还能够针对表单配置用户和权限、也能够通过页面来操作配置一些工作流。咱们能够利落拽配置一些页面,生成页面的 DSL。配置数据模型,生成数据的 JSONSchema DSL。配置流程生成流程的 BPMN 扩大,基于角色绑定用户权限,生成 RBAC 模型的 DSL。
在公布的时候,咱们前端 H5 会生成 Reat 代码、小程序会生成小程序代码。公布之后,前端代码会公布在动态托管中,服务端自定义扩大服务逻辑是部署在云函数中。
2)运行态
客户会从 web 或者小程序发动调用,会通过拜访通过咱们的动态托管以及云函数和云数据库,进而将申请分为到微搭侧后端中心化服务,和企业第三方服务。
5. 微搭高可用服务能力
一个高可用的服务须要从部署、变更、预案、监控、平安等多方面思考。达到 99.99% 服务高可用的指标,须要各角色的工程师共同努力。本文简略介绍下微搭在打消单点和弹性伸缩这块的实际。
打消单点
单点有两种场景:一种是 某个模块仅部署了一个实例 ;第二种是某个模块尽管部署了多个实例,但任 意实例故障都会导致服务整体或者大面积不可用。如何识别系统单点?通过排查模块的实例数量和进行破坏性测试来发现零碎中是否存在单点。对于已知的单点,则应该尽量做好预案,缩小故障时长。
针对这种状况,微搭一是在每个集群部署了多个 POD 来打消集群内单点,另外一块针对集群 1 整体挂掉的状况下,也可疾速切换集群来打消单点,保障服务的稳定性。
弹性伸缩
弹性伸缩是依据业务需要和策略,针对无状态的服务,通过定时、阈值设定等形式,主动调整集群规模,举例来说,对于 大促,机房故障等劫难场景,可能很好的晋升可用性。伸缩顾名思义,有伸也有缩,缩的个性,可能让集群维持在一个正当的规模上,从而防止造成不必要的老本节约。因而,弹性伸缩也是常态下零碎放弃可用性的重要伎俩。
微搭是基于 serverless 主动弹性伸缩云原生的能力,来保障咱们后端服务整体的高可用。当流量高的时候主动来扩容机器,当流量低的来实时缩容服务器。
03 微低代码的将来趋势
从 2020 年开始,低代码成为了业界热点,无论是资本市场还是企业用户都纷纷追捧。那么在将来,低代码平台会如何倒退呢?在我集体了解中,低代码平台开发将会沿两个纬度演进:
1、通用性,也就是语言属性维度;随着低代码开发平台的一直成熟和倒退,低代码开发平台逐步具备通用场景的开发能力,例如能够开发网站、游戏、3D 场景、电商、企业应用、集体利用;反对的零碎也会更加全面,例如反对 WebApp、iOS/Android、Windows/Mac/Linux、小程序等各种利用。
2、便捷性,也就是指代码量一直升高的过程,最终将实现 0 代码编程。
然而通用性和便捷性要想同时实现,是十分艰难的,这也是低代码开发平台急需解决的问题和下一个挑战。最终使“去掉程序语法,保留程序逻辑”成为可能。
最初也答复下大家比较关心的一个问题:低代码会取代程序员吗?
我认为低代码解决的是可形象的,通用的且可复用的产品能力,程序员作为高端技术人才,市场缺口微小,低代码工具是将程序员从现有的反复的干燥的接口开发中解放出来。程序员应该更关注业务发明方面的技术钻研和开发。低代码是工具,低代码与程序员之间的关系就像翻译软件与译者,数据统计零碎与数据分析师,工具的目标是缩小反复的劳作而将人力投入更有意义、有价值的钻研之中。
本文作者:
谢艳祥
腾讯云微搭高级工程师,专一于后端研发效力晋升,工程化体系建设。
在性能优化、研发效力、架构高可用设计等方向有肯定的落地实践经验