【人物介绍】
朱展,腾讯前端高级工程师,腾讯云微搭前端负责人,全栈开发者,主导设计开发了微搭低代码、云开发等产品。对前端组件化、海量服务等有多年经验。目前专注于云开发低码产品的构建,致力为开发者提供稳定易用的技术产品。在10月24将举办的腾讯TWeb 前端技术大会上,朱展将介绍他与他的团队是如何基于 Serverless 架构实现低代码服务的。
【访谈内容】
1. 是什么样的机缘巧合,促使你加入目前的团队呢?在目前的团队,开发过哪些技术产品,怎么评价这些技术产品呢?
我个人从事开发已经超过十年,当时促使我加入腾讯云从事 ToB 行业的一个重要原因是觉得这里的技术更有挑战,当时看着像 Node.JS, BFF, 云服务器、COS 这些技术或产品时,觉得这些很有意思,很想自己去尝试。我们现在的团队大概在 2018 年做云开发时慢慢成型的,最开始只有 3 个人,从头开始花了大概两个月时间将产品上线。小程序云开发在国内是个标志性的 Serverless 产品,它从小程序的场景出发将 Serverless 理念带到了开发者面前,让大家在开发产品时摆脱了服务器各种资源硬件的依赖,也让众多偏前端的研发有了能够从事全栈开发的基础,研发的关注点可以从繁杂的基础设施中往产品业务逻辑中更多侧重。
2. 微搭 WeDa 是你主导开发的一款低代码产品,它跟你之前在云开发团队开发的产品是什么样的关系呢?它与目前国内外主流的产品相比,有哪些的优势呢?它能够怎么样帮助到我们的开发者呢?WeDa 下一步会有哪些的规划,是否可以预告一下呢?
微搭产品的应用完全运行在云开发之上,我们希望用微搭构建出来的应用能够享受到 Serverless 体系带来的便利:开发者用微搭发布构建的应用后可以完全不用过多考虑服务器的事,就算业务爆发增长也可以利用云开发的弹性机制来简单的应对,也是我们对比其他同类产品的一个优势。
微搭相比于国内外众多成熟的低代码产品还是一个比较早期的产品,我们进入这个方向的时间还比较短。但我们还是有自己的一些特点:除了上面提到的 Serverless 模式外。我们还提供了开发通用应用的基础机制,针对管理端应用和普通应用都提供了相应的能力来帮助开发者快速完成应用构建。
- 管理端应用一般有很固定的范式,大部分都是对业务数据进行管理操作。我们提供模型组件来进行快速生成这些增删查改的完整功能,数据模型加上流程及角色权限体系就能实现一般的管理的诉求。
- 而针对更加自定义的场景,微搭提供了前端和服务端扩展手段,开发者能够比较简单的完成对前端交互和服务端逻辑的扩展。
- 通过选用相应的应用模板和区块模板,用户可以直接基于完整的模板来快速进行二次定制。
作为追赶者,微搭后面一段时间的主要任务是完善产品体验和补齐 ToB、ToC 应用的基础能力上。比如提供更多的组件和模板来供开发者使用,同时也会完善逻辑流,提供数据容器帮助使用者在页面快速使用数据源等能力,并且我们也会考虑允许开发者开放自己的数据源 API 供外部调用。
3. 在开发 WeDa 这款产品的过程中,有遇到什么样的难题?
开发微搭是我遇到的比较大的一个挑战,实际开发过程中问题很多,对我们来说比较棘手的问题是怎样快速构建技术底座来支持产品的变化和发展,平衡产品的易用性和扩展性。
- 对于低代码开发平台来说,其核心是将普通人能理解的 UI 操作语言转换成计算机逻辑:通过拖拽组件来拼装前端页面结构,操作各种表单来定义数据模型及关联关系,配置流程图来直观的构建工作流程,这个开发过程的产物数据如何转换成真正可运行的代码,定义好这些行为这对技术团队是个不小的挑战。
- 一般的用户在低代码平台进行可视化开发其实是拼装平台提供的能力来封装自己业务逻辑的一个过程。平台会提供各个颗粒度的组件和模板来供开发者使用,这在很多时候是能够帮助开发者完成任务的。但对于另外一些用户和场景来说,平台的默认能力是不能满足所求的,如果不能自定义扩展平台不具备的能力就根本算不上是通用的开发平台,这些扩展逻辑往往包括 UI 层、逻辑层、服务层,怎样支持用户来扩展应用各个部分的逻辑也是对我们的一个考验。
4. 在开发 WeDa 产品的时候,你采用了 Serverless 服务作为产品核心的后台服务架构,Serverless 服务对比传统的后台服务有哪些优势呢?
当前业界的低代码产品的应用产物,乃至一般应用后台的服务架构,一般有两种方式:
- 第一种是 SaaS 中心化服务模式。这种模式实现简单,发布速度快。对应的是业务爆发增长比较依赖平台中心化服务的弹性能力,同时很难解决隔离问题,很可能某个业务、客户的问题导致整个平台的应用受影响。对于低码平台来说这种基本上也不会支持自定义的服务端逻辑,同一个中心化运行环境中,自定义逻辑很难同时做到兼顾安全性和开放性。
- 第二种是打包生成独立产物,可独立部署到标准运行时比如虚拟机、容器等上。这种模式会很灵活,对应用的部署方式有很高的灵活性。它的问题也很明显:生成产物的打包发布过程会很慢,同时开发者还是需要自己来处理服务器运营运维的传统问题,业务流量流量来了要自己处理扩缩容的问题。
云开发 Serverless 模式从形态上来说是介于这两种之间的第三种形态,每个用户或者业务会有会有相对独立的运行环境,他们之间互相隔离,互不影响。运行时实时的按需消耗资源,做到秒级的按量计费。同时在业务增长是,甚至遇到某些突发活动时 Serverless 服务也能做到自动的秒级扩容。
5. 你曾带领技术团队落地过不少优秀的云技术产品,请问可以介绍一下你是如何带领团队,克服重重困难,落地这些产品的嘛?以及在落地这些技术产品的过程中,需要考虑哪些的因素,跟落地一款消费者产品又有什么不同?
这方面我个人的一个直观感受是,云技术产品同消费者产品在基本原则层面是相似的,都需要从使用者的角度出发,对于技术产品来说用户是研发群体,而我们自己就是开发者,从这个角度来说,做云技术产品把业界优秀的技术实践以产品化的方式带给用户,在很多时候也是给自己开发产品的一个过程,团队的开发会有代入感,很多时候对需求的理解程度相比其他产品会有本质的不同,甚至很多时候团队的研发就会自己作为产品经理来定义需求,这种情况在一般的消费者产品的研发团队我觉得是比较少有的情况。
TWeb直播票限时优惠
戳原文马上购票