大厂低代码 . 字节跳动 . 星夜平台

3,876 阅读7分钟

本篇介绍了字节跳动的星夜平台,“星夜”是字节跳动Web Infra为达成“以代码为中心的圆桌范式”,实现“智能化、平台化、低码化”等目的而打造的基础能力平台之一,从设计理念方面是有很好的前瞻性。

同其他互联网企业一样,字节跳动很多事业部都有建设基于特定业务场景的低代码/无代码工具、系统或平台,这里比较有代表性的是星夜(starry)平台。

星夜平台

星夜是作为“Web 开发引擎”的一部分,在字节内部验证、发展出来的,适用于任意应用的搭建,最初被设计为完全基于全功能的专业代码,跟包括 Modern.js 在内的现代 Web 研发体系能够无缝结合。**星夜针对的使用者,包括前端工程师、非前端工程师,以及不懂技术的业务人员(比如运营、销售等角色)。**按照其叙述,星夜做的事情,本质上是在解决软件开发的复杂度问题,对复杂度本身做抽象和解耦,把不可避免的复杂度留给专业开发体系,让低码平台能专注于“业务逻辑的最后一公里”,只负责不需要专业开发者介入的胶水代码。

星夜与MordernJS

星夜同其所依赖的Modern.js(modernjs.dev/)一样,都有着宏大的技术愿景。

字节跳动Web 开发引擎部门(Web Infra的子部门)为实现以代码为中心的“圆桌”范式,为了让所有分工都尽可能直接跟真实代码打交道,在同一套“研发管线”里工作,需要专业研发环节有高度抽象的、标准化的工程和工具体系,打造了一套元框架(Meta frameworks),这就是Modern.js。

星夜基于Modern.js,把问题尽可能都交给专业研发体系去解决、抽象,自己只在上层做低码领域的额外建设。研发体系的提效做的越好,星夜就越不需要在上层去用非专业的方法重复解决问题。星夜做的事情,首先本质上是在解决软件开发的复杂度问题,对复杂度本身做抽象和解耦,把不可避免的复杂度留给专业开发体系,让低码平台能专注于“业务逻辑的最后一公里”,只负责不需要专业开发者介入的胶水代码。

全码通用搭建

星夜的目标是“全码”通用搭建,基于实现了“Universal App 模式”的“MWA”(Modern Web App)方案,认为只需要实现“MWA”的低/零码搭建,就可以实现微前端、桌面应用、小程序等各种应用的搭建能力。MWA 提供开箱即用的、以客户端为中心的应用架构,对“全码”通用搭建来说,也非常重要。如果没有应用架构提供的标准化抽象,要基于真实代码做低/零码搭建,就要跟粒度非常细、非常原子的、琐碎的底层代码打交道,难以实现好的效果。

MWA 的应用架构让一个“应用”可以由“Universal App Shell”、视图组件、业务模型、容器组件组成,可以基于这些最粗粒度的“物料”来实现“全码”通用搭建。解耦出来的视图组件和业务模型,可以有多种适合不同场景的“生产方式”,而“消费方式”是标准化的。容器组件起到 Controller 作用,能用标准化的方式、很薄的胶水代码,来连接视图组件和业务模型。这些都有助于“全码”通用搭建直接使用专业研发体系的代码,不需要做任何建模和设计 DSL,专业代码本身就可以跟“配置化”的 DSL 一样易于“低/无码化”的编辑和使用,而且具备“图灵完备”的通用能力。

星夜不需要像传统“前端可视化搭建”一样,通过 DSL 协议来做领域建模,因为 Modern.js 本身就是对 Web 开发的最大化的抽象和标准化,这套工程体系和其中的Pro Code,本身就已经是一个“协议”。星夜基于“Code In, Code Out”的理念,输入的是MWA,输出的也是WMA。

星夜中的Pro-Code与Low-Code/No-Code

星夜作为“全码”通用搭建,是“专业代码进,专业代码出”的。不像传统前端可视化搭建一样围绕 DSL 设计,而是从一开始就完全围绕真实专业的代码来实现。

在编辑和运行环节,不需要 DSL 运行时、渲染器等,星夜编辑器本质上就是 Web IDE(包括浏览器端沙盒的 Web IDE 和服务器端沙盒的 Web IDE),编辑过程跟 Web IDE 一样加载代码、运行代码、修改代码、生成代码。

“全码”通用搭建带来的最重要的新能力,就是真正能做到“通用”,可以用于实现任意应用。星夜不止是“前端搭建”,既支持“界面驱动”,也支持“模型驱动”(比如 CMS 建模、流程编排、引导搭建等),由于 MWA 是前后端一体化的全栈工程方案,星夜生成的应用代码里同时包含后端和前端业务逻辑,可以独立部署和运维。

在无代码方面,星夜支持基于图形化的编排能力,具体原理体现,通过在组件的编辑描述(createEditor)中定义Action,编排即实现对这些Action的串联或并联,需要传递参数可以通过在组件的运行时中引用useGlobalState进行声明,绑定到在组件的编辑项描述中通过addRefSchema定义的部分。

另一方面,星夜编辑器就像 Web IDE 一样,只是提供了一个“舞台”,只提供“机制”而不提供“策略”,也就是说编辑器本身具备各种能力,但不决定具体的搭建用法,而是由“物料”(比如 UI 组件)来决定用法。编辑器会根据物料的代码、接口描述等信息,自动生成不同的 UI 和交互。

在平台能力方面,星夜一开始就是围绕“面向最终代码的圆桌开发范式”展开的,所以,“全码”通用搭建由于不受领域建模的限制,基于标准化的专业工程体系,工程体系本身就是协议,所以从一开始就能够实现“低代码中台”能力。

在未来规划上,随着星夜团队被整合入字节的aPaaS大团队(这里也能看到字节跳动对于低代码在战略层面的重视),星夜平台在内部孵化一段时间后,可能会演变成赋能字节云服务(火山引擎)周边生态的通用低代码解决方案。

总结以上,“星夜”是字节跳动Web Infra为达成“以代码为中心的圆桌范式”,实现“智能化、平台化、低码化”等目的而打造的基础能力平台之一,从设计理念方面是有很好的前瞻性,对一些关键概念理解比较到位,从目前所公开的资料及展现的能力上,在低代码本身上的探索方面略浅、落地效果等方面还有待观察。不过,相对于其他互联网企业,新兴的字节跳动的历史包袱较少,这一点也有助于大家从全新的视角审视未来,星夜总体还是非常值得期待的。

感谢阅读,欢迎关注我们的专栏,下一篇我们将对低代码的方法论部分做详细介绍。

欢迎访问免费、通用的无代码开发平台Mybricks ,体验图形化编程的乐趣

👉 使用MyBricks引擎,打造您自己的低代码开发平台​ 👈