2023年8月19日,掘金掘力计划系列活动第22场——《聊聊前端工程化实践和未来》在杭州举行,在本场前端工程化专题的分享活动中,来自字节跳动的资深前端张兆鑫做了题为《架构中后台提效之路》的分享。
1. 为什么需要架构中后台?
有一定规模的公司,往往会进行开发大量的中后台,而每一次开发一个中后台都有一些通用能力的重复建设,需要处理以下问题:
1.申请所有机房的基础设施
2.处理 BFF
3.处理 SSO
4.权限管理
5.增删改查
还有一些特殊场景下的重复成本,比如在字节跳动非常重视数据合规,经常会需要处理关于多机房相关的问题,这些中后台的重复建设带来了以下几个问题:
1.大量的中后台能力,每一块小业务可能都需要一个对应的中后台。
2.重复的通用能力,比如权限、SSO、BFF还有我上面提到的机房问题。
3.极高的沟通成本,当中后台越来越多,沟通成本随之上涨。
4.接口合理性,这会涉及到一些接口规范以及和后端开发同学的对接问题。
在此背景下,就有尽可能的将这些中后台系统的复杂度进行收敛,毕竟复杂度不会凭空消失,在这个基础上开始尝试架构中后台提效之路。
2. 架构中后台发展之路
整个架构中后台的发展其实可以分为三个阶段。
在初期,其目标是:提升效率 && 跑通链路,为了尽快打通整个链路,先做的是一个简单的命令行工具,通过命令行工具可以将项目直接发布,通过泛域名解析到四级域名来访问,发布上去后,用户就可以结合身份、权限等信息来访问。Vercel 早期也有类似的模式。
从上图的可以看到前期的整个系统是分为两块:服务和框架。
在资源有限的情况下,我们需要去谋求一个平衡。完成满足基本诉求的框架,我们一直在灵活和开箱即用中寻找平衡。
我们首先挑选了一些领域,首先插件化是最重要的,在不修改核心的情况下修改运行时和编译时。我们定制化了 Tapable ,作为插件的底层实现,所有的业务定制功能都可以通过插件来完成。
接下来就是一套通用的开箱即用的中后台组件,希望尽可能开箱即用,通过大组件降低使用和理解成本。但是不同的业务场景下对于组件细节的要求不一样,所以这里借用了Docusaurus 的 Swizzling component 这个概念对所有组件进行模块拆分,将中后台拆分成 10 几个嵌套区域,所有模块都可以通过插件系统动态引入,可以利用这个插件系统对组件的细节进行定制。内部状态可以通过 Hook 拿到,这样就做到了渐进式自定义。
同时,我们也遇到了一些团队的项目有 100 个以上的页面,但并不是所有页面的修改频率、维护者都一样,所以引入了路由按需编译功能,来对开发进行提效。
架构中后台的第二个阶段就是:降低框架接入门槛,做最佳实践:
从上图的可以看到,在阶段二通过降低环境配置复杂度、一系列配置可视化,降低框架的接入门槛。
通过一键环境监测安装脚本可以快速的将整个开发过程中需要的环境一键配齐,有些公司是通过 Docker 来做这件事,解决的问题是一致的。
屏蔽脚手架细节,通过配置、插件的可视化操作,降低框架的使用门槛。
接下来通过引入可视化菜单编辑器、可视化页面与常用模版,能够很快的帮助开发框架搭建以及基础页面的生成。
在这个阶段遇到了两个问题:一个是服务稳定性问题,另一个是大量的 Oncall。
服务稳定性的挑战,这是一个需要不断完善以及优化的部分,目前已经做了以下措施:
1.静态资源容灾。
2.数据多级缓存容灾。
3.机房容灾。
架构中后台的第三个阶段就是:Procode 与低代码相结合
在代码生成页面,架构中后台也选择了 Procode 和 低代码,因为在不同业务复杂度下,两种方式的复杂度也有不同:
从上图可以看到,低代码的复杂度是越来越高的,而 Procode 的复杂度是随着业务变高的,对于低代码来说,其实更适合做一些垂直领域的应用,在垂直领域低代码的作用是最大的。
调研了一些业界产品:Landing Page 的解决方案、宜搭跟钉钉结合就能很好的解决工作流、供应商管理等问题。Builder.io 可以把渲染器引入到本地,把区块做成低代码,是一个非常优秀的开发结合方案。Retool 在内部系统领域做的很好,在内部实现了搭建与本地代码结合的方案,参考下图。
3. 架构中台未来思考
架构中台的未来发展方向目前主要是 GPT探索、深耕场景搭建和新工具整合:
GPT探索
通过与GPT(通用预训练语言模型)的问答交互,可以高效地理解文档中的内容和总结常见问题。
这种交互方式将问题形式化,GPT则根据自身广泛的语言知识生成对应答案,实现对文档关键信息的提取,相较于人工理解和总结文档,这种人机协同的方式大大提高了工作效率。
同时,预先设定好的问答模板,可以使问答更加标准化,快速锁定问题关键点,避免不必要的重复劳动。结合预置的文本生成模板,GPT生成的答案可直接用于各种文档、报告等的撰写,无需从零开始创作,大幅减少重复性工作,使文档写作快速高效。
深耕场景搭建
针对常见的CRUD、表单、详情页等场景,设置对应快捷方式,如增删改查指令,可以快速生成代码框架。同时,针对表单,可预设组件的快捷插入方式,仅需简单配置即可生成。详情页场景可以预置通用的布局和样式代码,开发者只需填充数据。另外,针对分布式表单,可以抽象出公共逻辑代码,然后根据不同需求组合生成。还需要提供多种数据链接能力,直接链接各类数据库、调用开放API等,丰富数据源,减少数据处理工作,提升开发效率。
新工具整合
随着Rust语言生态越来越成熟,其工具链也在不断发展,比如RSpack等。未来 架构中台 会考虑与Rust的工具链实现深度集成,从底层级别进行打通。Rust的性能优势有望通过这种集成得到充分利用。比如实现Rust编写的底层组件在 架构中台中直接使用,无缝对接。这可以提升 架构中台的运行效率与稳定性。同时,以Arco Studio作为 架构中台的资源管理中心,实现组件、模板、数据等资源的统一管理,使开发者可以快速搜索、组合资源,大幅提升效率。
关于掘力计划
掘力计划由稀土掘金技术社区发起,致力于打造一个高品质的技术分享和交流的系列品牌。聚集国内外顶尖的技术专家、开发者和实践者,通过线下沙龙、闭门会、公开课等多种形式分享最前沿的技术动态。(作者:赵焕)
奥维云网(AVC)推总数据显示,2024年1-9月明火炊具线上零售额94.2亿元,同比增加3.1%,其中抖音渠道表现优异,同比有14%的涨幅,传统电商略有下滑,同比降低2.3%。
“以前都要去窗口办,一套流程下来都要半个月了,现在方便多了!”打开“重庆公积金”微信小程序,按照提示流程提交相关材料,仅几秒钟,重庆市民曾某的账户就打进了21600元。
华硕ProArt创艺27 Pro PA279CRV显示器,凭借其优秀的性能配置和精准的色彩呈现能力,为您的创作工作带来实质性的帮助,双十一期间低至2799元,性价比很高,简直是创作者们的首选。