基于 Serverless 的大前端轻研发平台

本文涉及的产品
函数计算FC,每月15万CU 3个月
简介: 基于 Serverless 的大前端轻研发平台
🙋🏻‍♀️ 编者按:本文是蚂蚁集团前端工程师奇谈在支付宝体验科技沙龙暨数金荟上的演讲内容,欢迎享用~


大家好,欢迎来到支付宝体验科技沙龙,我是来自蚂蚁集团数字金融 余额宝体验技术组 的奇谈,今天我带来的分享是《基于 Serverless 的大前端轻研发平台 - 业务前端研发模式探索》随着智能化、Serverless 等技术的发展,未来业务前端的发展趋势会是怎样呢?在蚂蚁大流量金融业务背景下,前端如何实现安全生产呢?本次分享会先介绍蚂蚁集团的前端研发体系现状,以及在大流量金融业务安全生产的背景下,前端研发工程师所要面临的研发效能和风险防控挑战等等一系列问题。最后会介绍我们基于Serverless 的轻研发模式在尝试和探索解决这些问题中的实践。希望大家能够从蚂蚁轻研发平台演进的设计思考中,获得一些启迪与新思路。

蚂蚁集团业务前端研发体系

先来看一下蚂蚁集团的业务前端研发体系,按照业务类型分,可以分为 PC web,H5,小程序,native 和 大屏,我们余额宝以 H5,BFF 和小程序居多。

在业务上首选前端低码平台,其次是前端应用框架。图下面可以看到有一块是服务端部署,在蚂蚁或者阿里内部,BFF 是前端的一个特点。那么什么是 BFF 呢?

BFF 是 Backend For Fronted,它可以做请求聚合、数据裁剪等工作,因为前端是我们开发的,我们可以组织数据让它更适合于前端的交互。上面大致介绍了蚂蚁业务前端的研发体系,下面我们看一看在实际的前端开发流程中,前端需要做哪些事情,以及哪些可以提效的点。


目前的前端开发流程

上面的流程大家应该都比较好理解,这里重点提一下“系分” "测分",系分是系统分析设计,测分是关于测试的分析设计。那系分主要做什么呢?做需求的调研,功能的设计实现,以及需要注意的点,比如扩展性、可维护性、关键代码如何实现等等,总的来说就是你站在系统的角度要如何设计这个功能,同时又能最好的实现需求。

系分一般产出的有流程图,时序图,接口设计说明等等文档。既然有文档,那就有一个地方保存它们。大家在需求前期阶段应该遇到过需求变更的情况,需求变更带来的问题是我们的系分可能要更改,频繁的变更带来的问题是我们的系分文档不保鲜,不保鲜的意思是系分文档已经和最终的需求不一致了,可能是小的需求变更我们懒得去更改,脑子记住就好了,也可能是文档比较多,散落在各个地方,懒得去一个一个找了。

再来看编码过程,企业级的应用打包部署慢,企业级应用通常意味着代码复杂度较高,这是业务的复杂度带来的,另一方面是复杂度带来的依赖多。

最后看一下上线阶段。我们的用户基数大,对安全生产的要求高,带来的问题就是兜底代码多。这个兜底代码是什么呢?比如,如果某一天有个接口或者依赖挂了,我要有监控能主动感知到前端报错了,我们的页面不能直接崩溃,我们会有缓存、重试、降级等等方案来最大限度保证体验。在小公司我一个需求可能3天就搞完上线了,但是在蚂蚁,同样一个需求,我要花5天甚至6天,这多出来的时间就是在搞降级、监控等。总结起来就是,BFF 的引入+安全生产要求高(金融类业务)带来 前端研发复杂度增加。那我们如何解决这个问题呢?

轻研发平台能力

针对上面的 3 类可以提效的点,我们分别用 “文档即代码”,“函数级研发部署”,“一体化研发环境 插件能力” 核心思想来提效。先看第一个核心思想:“函数级研发部署”

我们将多应用级(前端+BFF)利用 Faas 技术变为函数级的研发部署。关于Faas的具体技术细节,可以参考齐穹的《手把手搞定渐进式Node Faas》,下附演讲视频。


针对 BFF 接口,函数级研发部署具有开箱即用,无环境依赖,独立部署等特点。你不需要在本地安装一大堆依赖,搞各种环境问题。也不用为了抢占环境部署代码,每个接口都可以独立部署。



函数级研发不只是能开发 BFF 接口,它还能开发前端一体化卡片。可以看下面这张图:

卡片是在页面上相对独立的一块区域。比如我上面这张,它的 UI 和数据高度内聚,是一个整体,我们可以把 UI 和数据一起下发。说到这里,我要重点介绍一下前端开发的历史转变。刚开始我们叫传统模式,典型的是 PHP、JSP 等,我们把静态页面开发好,交给后端,后端用脚本语言替换动态数据,最终把整个页面一起返回给浏览器。这种模式前后端非常耦合,不利用维护和并行开发,我们有了前后端分离模式。典型的是 Ajax 技术的兴起,前端专注开发页面,后端专注开发服务,前后端的交互通过 Ajax 请求传输数据,这样前后端就可以并行开发了。前后端开发让我们专注各自的领域,但经常我们前端为了让数据更适合于前端交互,会做一些请求聚合、数据裁剪等工作,后来有了 BFF,BFF 让我们可以使用统一的技术栈编写数据服务等一部分后端工作。但它仍然还是分成了前端和 BFF,既然技术栈都统一了,为什么还要分前后端呢?所以我们又回到了传统模式,前端 UI+ 数据一起下发,它可以解决前后端依赖问题。比如你不用担心忘记发布 BFF 接口导致的前端报错了,也不用担心历史的接口如何向前兼容的问题了,因为我们的数据和 UI 是一起下发的,没有接口这一层了。

上面的图演示了一体化卡片开发。下面来看核心思想 2 :文档即代码。

我们将需求、视觉、系分、测分、代码等等集中管理起来,在一个上下文中,以此来解决文档代码不保鲜。我们还可以利用智能化等技术,自动从文档中生成关键代码、流程图、时序图等,让我们的文档和代码保持同步。



上面这张图演示了文档即代码,可以看到,在我们的研发体系化环境中,需求、视觉、网关配置、接口设计等等各种相关的文档集中在一起,你不需要在各个独立的文档中来回切换。一个小的需求变更,我们顺手就改掉了各个相关的地方。

文档即代码不是简单的把各种类型的文档聚合起来就好了,我们可以通过自动化、智能化等技术,将非结构化、结构化的文档生成我们想要的代码,提高我们的研发效率和质量。比如我们可以使用 D2C 能力,自动将视觉稿生成代码,通过文档中的配置信息,自动生成监控,应急预案等等。下面这个视频演示了 D2C 在一体化研发平台上,如何从一个视觉稿到代码,到调试的流程。👇🏾
那这些能力只能我们轻研发平台自己去做吗?显然不是,我们轻研发平台提供各个阶段的插件能力,你可以通过插件去定制适合你的工作流,也可以通过插件将现有的优秀的第三方能力复用进来。比如上面提到的 D2C 能力,就是基于保险团队的。

最后总结一下上面提到的,轻研发平台三大核心思想:1.文档即代码:将结构化、非结构化的文档集中管理起来,并通过智能化、自动化等技术生成代码2.函数级研发部署:BFF 接口和一体化卡片,独立部署、开箱即用、无环境依赖3.一体化环境插件能力:复用优秀三方能力,定制你的工作流

未来我们业务前端做什么?


最后的最后,未来我们业务前端做什么?下图是我们基于数字金融业务背景下的思考。

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
23天前
|
Web App开发 前端开发 安全
前端研发链路之测试
本文由前端徐徐撰写,介绍了前端测试的重要性及其主要类型,包括单元测试、E2E测试、覆盖率测试、安全扫描和自动化测试。文章详细讲解了每种测试的工具和应用场景,并提供了选择合适测试策略的建议,帮助开发者提高代码质量和用户体验。
26 3
前端研发链路之测试
|
24天前
|
资源调度 前端开发 JavaScript
前端研发链路之脚手架
本文首发于微信公众号“前端徐徐”。文章介绍了前端开发中脚手架工具的重要性及其工作原理。脚手架工具能够大幅提升开发效率,确保代码质量和项目一致性。文章详细探讨了脚手架的历史、工作原理、常见工具及其优势与潜在问题,并展望了其未来发展方向,帮助开发者更好地理解和应用脚手架工具。
22 4
前端研发链路之脚手架
|
23天前
|
负载均衡 前端开发 JavaScript
前端研发链路之开发
本文首发于微信公众号“前端徐徐”,作者徐徐。文章介绍了前端研发链路中的开发部分,重点探讨了开发服务器(dev-server)、热更新(hot-reload)、数据模拟(mock)和代理(proxy)等关键技术,帮助开发者理解其基本原理和应用场景,提升开发效率和代码质量。
32 2
前端研发链路之开发
|
23天前
|
敏捷开发 前端开发 Devops
前端研发链路之 CI/CD
本文首发于微信公众号“前端徐徐”,作者徐徐介绍了前端研发链路中的CI/CD。文章从CI/CD的背景、意义、运作方式及常用工具等方面进行了详细探讨,帮助读者理解如何在前端开发中有效应用CI/CD,提升开发效率和产品质量。
27 1
前端研发链路之 CI/CD
|
23天前
|
前端开发 JavaScript 编译器
前端研发链路之构建
本文首发于微信公众号“前端徐徐”,作者徐徐探讨了前端研发链路中的构建过程。文章介绍了构建器、JavaScript编译器和CSS编译器的作用及常见工具,详细解析了它们如何协同工作,提高开发效率和项目可维护性。适合前端开发者阅读,帮助理解现代前端构建体系。
14 1
前端研发链路之构建
|
23天前
|
前端开发 JavaScript 测试技术
前端研发链路之代码规范
大家好,我是徐徐。本文将探讨前端研发链路中的代码规范,包括业界流行规范、CSS命名规范和相关工具。通过保持代码整洁和一致性,不仅能提高团队协作效率,还能减少错误,提升开发质量。文中详细对比了几种常见的代码规范和工具,如 Airbnb Style Guide、BEM、Eslint 和 Prettier,并展望了未来代码规范的发展趋势。希望对大家有所帮助。
60 1
前端研发链路之代码规范
|
3天前
|
运维 Serverless 数据处理
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
18 1
|
10天前
|
缓存 前端开发 JavaScript
前端serverless探索之组件单独部署时,利用rxjs实现业务状态与vue-react-angular等框架的响应式状态映射
本文深入探讨了如何将RxJS与Vue、React、Angular三大前端框架进行集成,通过抽象出辅助方法`useRx`和`pushPipe`,实现跨框架的状态管理。具体介绍了各框架的响应式机制,展示了如何将RxJS的Observable对象转化为框架的响应式数据,并通过示例代码演示了使用方法。此外,还讨论了全局状态源与WebComponent的部署优化,以及一些实践中的改进点。这些方法不仅简化了异步编程,还提升了代码的可读性和可维护性。
|
10天前
|
JavaScript 前端开发 Serverless
前端全栈之路Deno篇:Deno2.0与Bun对比,谁更胜一筹?可能Deno目前更适合serverless业务
在前端全栈开发中,Deno 2.0 和 Bun 作为新兴的 JavaScript 运行时,各自展现了不同的优势。Deno 2.0 重视安全性和多平台兼容性,尤其是对 Windows 的良好支持和原生 TypeScript 支持;而 Bun 则以卓越的性能和简便的开发体验著称,适合快速迭代的小型项目。两者在不同场景下各具特色,Deno 更适合企业级应用和serverless,Bun 则适用于追求速度的项目。
|
18天前
|
运维 Serverless 数据处理
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
45 3