作者 | 王恒飞(承荫)
起源 | 阿里巴巴云原生公众号
本文整顿自飞猪旅行前端技术专家--王恒飞(承荫)在【阿里云 Serverless Developer Meetup 上海站】上的分享。点击查看直播回放:https://developer.aliyun.com/live/246653。
过来两年,飞猪前端始终在踊跃地进行 Serverless 建设和实际,2019 年 - 2020 年咱们和团体 Node 架构组、研发平台一起实现了根底能力的建设和业务试点,成为团体率先落地 Serverless 实际的 BU,2020 年 - 2021 年咱们开始大规模地在飞猪推广应用 Serverless 的能力,从导购全链路到外围中后盾,都可能看到 Serverless 的身影,这一年咱们实现了 Serverless 从业务试点到生产力工具的转变,本文将次要分享飞猪基于 Serverless 的实际成绩以及将来想要做的事件。
Serverless 的应用规模
2020 年 - 2021 年飞猪 Serverless 的规模和重要度都有很大的变动,次要体现在三方面:
- 一是函数组规模增长一倍以上,Qps 峰值增长 650%。
- 二是应用 FaaS 开发的人员规模增长 560%,其中前端人员 80% 以上参加到 FaaS 的开发中。
- 三是影响力的体现,目前不仅飞猪前端都对 Serverless 很相熟,客户端也有很多人参加到 FaaS 的开发,更重要的是后端和产品同学也晓得咱们有 Serverless 进行服务开发的能力。
具体的数据如下:
为什么要引入 Serverless
飞猪为什么这么迫切地要引入 Serverless?这次要是出于前后端研发模式降级以及前端职能扩大的思考,上面回顾一下飞猪前端架构的倒退和研发模式的演进。
1. 飞猪前端架构的倒退
飞猪前端架构总结下来就是从最后纯正的前端开发,到解决多端一致性的跨端开发,再到接管视图服务端逻辑的前台开发,Serverless 就是前端降级转变的外围一环。
2. 研发模式的演进历程
前端人员为什么肯定要参加服务侧开发?从前后端研发模式的演进来看,次要经验了以下三个大的阶段:
第一阶段是资源解耦,这个阶段前端把动态资源分离出来部署到 cdn,解决了和后端服务同机部署的耦合。
第二阶段是模板解耦,咱们之前提到的前后端解耦大部分指的就是模板的解耦,一种不彻底的解法就是渲染解耦,服务端放一个空模板内容局部全靠 CSR,彻底的解法就是前端接管模板,能够独立部署模板也能够应用 node.js 代替。
第三个阶段就是试图解耦,一方面是因为客户端体系和前端的离线体系的限度,端侧对于视图的动态性要求极高,没有服务侧能力的前端只能将视图的动态性放在服务端做,另一方面因为端侧架构对于数据接口协议的特殊要求,须要服务端来进行协定的转换,也就是服务端常说的 Do 到 Vo 的解决,这就造成了前后端视图的耦合,为了去除这部分耦合,前端通过 Node.js 做 BFF 层来接管视图层的逻辑,Serverless 则是给了前端做 BFF 开发的最佳抉择。
3. 为什么肯定是 Serverless
其实在 Serverless 呈现之前,前端也尝试了用 node 利用来做 BFF 层的开发,飞猪也是在 2017 年通过 Midway + React SSR 的架构将飞猪 PC 主链路首页、搜寻、商品详情、订单详情 Node 化,然而利用级别的开发在前端存在以下几个问题:
- 开发成本高:Node 利用级别的开发对于老手前端还是具备肯定的开发成本,之前做过粗略的预计,上手老本至多须要 3 人/日,还不包含后续的性能优化、内存透露排查等一系列能力。
- 运维老本高:Docker、镜像、机器日志查看、域名申请、机器替换等一系列运维能力对于前端来说具备十分高的复杂度,也是注定无奈推广的一个重要起因。
- 机器老本高:前端在应用利用开发时适度偏差于前端架构设计带来的利用离散和机器利用率低的问题,根本原因是前端在用页面开发的思维去做利用开发,导致新建一堆利用占用大量闲置机器。
2017 - 2019 年也是团体 Node 开发停滞的两年,这个阶段因为上述问题的闲置,Node 开发无奈在挪动端铺开,前端应用 Node 次要在中后盾的开发,这时矛盾次要体现在前端迫切渴望研发模式转变和涉足服务端开发的昂扬老本,直到 Serverless 浪潮的呈现让咱们看到了曙光,上面来看下 Serverless 能给前端带来什么样的变动:
Node FaaS 通过将中间件集成到 Runtime 的上下文中,开发通过 Api 的形式调用来实现极低上手和开发成本,只有会写 js 就能在 0.5 人/日内上手 FaaS 开发,同时 Serverless 容器底层通过机器对立治理、镜像对立、灵便调度、按需付费等形式向开发者屏蔽容器的运维,两者联合完满地帮咱们解决了之前 Node 利用开发遇到的三大问题,至此前后端研发模式降级的最初一块拼图集齐,前端开始云+端的改革。
飞猪云+端的外围落地场景
1. 落地场景总览
从飞猪首页到搜寻、频道,再到大促会场,Serverless FaaS 实现了在飞猪导购全链路的笼罩,成为飞猪前端的罕用生产力工具之一。另外中后盾开发已全面应用 FaaS 开发,并且赋能客户端同学,下图右侧的包体积平台就是飞猪客户端同学应用 Node FaaS 开发实现。
2. 云+端场景 - 数据协定解决
数据协定解决是 BFF 层最为常见的场景,包含接口合并、Do 到 Vo 的转换等,飞猪 80% 以上的 C 端 FaaS 场景都是用作数据协定的解决,通过 FaaS 来做协定转换可能解放服务端,同时加强前端对视图层的管制,堪称两全其美。
一个最新的例子(如下图所示),这是一个飞猪的内容详情页,页面波及内容中台、评估中台、互动、算法等 5 个以上接口,这些接口都是现成的扩散在各个系统,对于前端来说必定是不想在端上调 5 次接口,不论是从性能还是架构设计上思考,都是不合理的,这时就须要一个服务端接口的合并,FaaS 就非常适合做这样的事件,通过原子能力的拼装,无需服务端染指,极大缩短了需要的交付周期。
3. 云+端场景 - SSR 同构渲染
SSR 同构渲染并不是一个新的概念,最早在 React 反对 SSR 的时候,前端就具备一套代码在 Server 和 Client 端执行的能力,飞猪这边早在 2017 年就在 pc 端上线了 Midway + React SSR 的页面。
挪动端因为流量比 PC 大很多,且在 Server 侧执行 Js 是一个极耗机器资源的操作,通过 Node 利用的形式做 SSR 机器和运维老本跟随着页面流量指数级回升,ROI 并不高,然而 Serverless FaaS 的主动托管,能帮前端解决机器利用率和运维老本的问题。
再配合客户端的文档预加载,咱们能够做到客户端预加载直出率(500ms下)100%,端外渲染 2s 达标率 90+%,性能晋升 80% 以上。
4. 云+端场景 - 一体化利用
一体化研发是一种更加合乎前端人员习惯的开发模式,常见的分为中后盾一体化和 Rax+FaaS 一体化,将 FaaS 代码和 Assets 代码在一个仓库下开发,调试和部署可能极大地提高开发效率,目前飞猪用得最多的就是中后盾一体化开发。
Serverless 研发配套建设
在根底建设方面定义为两局部:研发态效率的晋升和运行时稳定性的保障。
1. 研发态效率
开发阶段次要波及的操作是新建我的项目、调试和公布,飞猪通过已有的 Clam 工程体系集成 FaaS 的脚手架模板,对接 def api 买通创立我的项目、迭代和公布的能力,让前端同学开发 FaaS 能有和开发页面一样的体验,升高上手和开发成本,同时封装 Mtop 调用和容灾 SDK,封装罕用 FaaS Utils 汇合的形式进步代码的复用度。
2. 运行时稳定性
通过函数监控 Alinode、网关监控 Sunfire 以及全链路日志的排查能力,做到问题的疾速发现和定位。
通过 tair 容灾和 cdn 容灾,保障大部分场景在函数或者网关挂掉的状况下,仍可能失常展现页面。
将来
2020 年 - 2021 年咱们实现了 Serverless 向生产力工具的转变,2021 年 - 2022 年总体来看是彻底实现飞猪研发模式转变的指标,让 FaaS 成为前后端都司空见惯的一环,布局还没做具体,有以下几个要害的事件要做:
- 中后盾和长尾函数 0 - 1 的弹起尝试:这块思考到一些中后盾函数和长尾函数每天可能只有几十个 Uv 够不到 Qps 级别,目前预留 1 核机器的形式仍是有些节约,思考在不影响首次申请的状况下尝试 0 到 1 的弹起,做到机器的极致利用率。
- 飞猪物理网关的替换:目前尽管飞猪 Java 的网关出于保护状态投入较低,然而一旦流量发生变化,网关的稳定性会成为瓶颈,心愿可能有 Fc 专门的团队接管流量网关,之前飞猪也是实现了一个线上试点,2021 年 - 2022 年持续推动。
- 研发态和运行时问题的可观测加强:从 FC 底层容器到函数代码外部再到函数依赖、流量网关,不论是部署呈现的问题还是线上的问题,都比拟难定位,通常须要拉着 FC、研发平台、Runtime 的同学一块排查,后续心愿能推动可观测性的加强,让业务开发可能疾速发现问题。
写在最初
基于 Serverless 的云+端联合曾经根本成型,这将是前端近些年来最大的改革之一,将来 FaaS 将是前端开发不可或缺的一环,咱们须要用它来做研发模式降级,也须要用它帮忙前端扩充职能,通过 FaaS 的能力让前端开发深刻到服务层,更好地贴近业务、了解业务、帮忙业务。
作者简介
王恒飞(承荫),飞猪旅行前端技术专家,飞猪 Serverless 引进和实践者,摸索和推动云+端的研发模式。
2021 阿里云开发者大会重磅开启!
数字时代,如何更好地利用云的能力?什么是新型、便捷的开发模式?如何让开发者更高效地构建利用?科技赋能社会,技术推动改革,拓展开发者的能量边界,所有,因云而不同。点击立刻报名流动,2021 阿里云开发者大会将给你答案。