闲鱼架构如何一招提效30%?Flutter+Serverless 研发实践公开

简介:

阿里妹导读:Serverless(无服务架构)被誉为下一代云计算,自概念推出以来,因为能带来研发交付速度提升与成本的降低在业内异常火爆。闲鱼客户端基于Flutter进行架构演进与创新,通过Flutter统一Android和iOS双端提升研发效能之后,希望通过Flutter+Serverless 解决各角色间存在大量的协同,导致整体研发效率低,移动端离业务越来越远,服务端没有时间做底层领域沉淀的问题,从而进一步提升整体研发效率。

研发架构的演进

接下来我们带着这里两个问题回顾前后端研发架构演进的历史。

PC互联网早期没有还没有前后端的概念,此阶段单个业务需求通常一个开发人员可以完成研发,前端网页与后端逻辑都写在一个工程中。随着业务越来越复杂,原本开发者负责前后端研发已经变得效率低下,此阶段随着移动互联网的爆发,服务端需要服务与PC、Android、iOS等多种前端。

服务端总是有一个疑问:服务端设计接口时,是应该面向 UI,还是应该面向通用服务?一个方案是抽取一部分服务端做 BFF(Backend For Frontend服务于前端的后端),作为前后端之间的适配层,核心是解决数据的聚合与编排,重新探索更合理的分层协作模式。

服务端写BFF带来新的问题,总是包接口无法提升个人能力。如果BFF由端侧同学开发可以解决这个问题,具体技术方案也是接下来我们要思考的问题。

云端一体化技术方案

Serverless 由 BaaS(Backend as a Sevice)与 FaaS(Function as a Service)两部分组成。BaaS 主要包括数据库存储、消息队列等能力,针对复杂的需求建议由服务端在 BaaS 层封装领域服务供 FaaS 层使用。作为端侧开发,核心关注客户端与FaaS层的代码开发。

目前公司 FaaS 环境已经支持 Java、Kotlin、Swift、Dart、Node.js 等多种语言与框架,闲鱼通过 Android(Flutter)、iOS(Flutter)、FaaS(Dart Runtime)都使用Dart 达到语言一体,并且实现协议一体与工程一体。

语言一体:Android、iOS、FaaS层使用 Dart 语言开发,实现三端语言统一,有效屏蔽FaaS层语言学习成本。

协议一体:通过一体化框架屏蔽通信细节,前后端同一份State,减少协议转换,前端同学调用FaaS服务时,如同调用本地函数一样简洁。

工程一体:前后端可以在同一个工程中进行开发,利用Dart特性可以通过Hot Reload机制进行快速开发联调。

下单页一体化实践

下面以闲鱼下单页一体化为例,通过页面渲染与交互两部分展开一体化实践过程。

下单渲染一体化

从上图左侧可以看出,客户端渲染此页面需要在端侧请求5个接口,处理渲染接口之间的逻辑,把接口返回的Data转为为ViewModel。经过一体化改造之后,原有在端侧的逻辑都移到FaaS层,包括聚合5个领域服务,处理业务逻辑,进行字段映射与页面编排,端侧无任何渲染与业务逻辑,直接获取返回的ViewModel刷新页面。以下是云端一体之后的流程图。

下单页交互操作一体化 

从上图右侧可以看出,有4种操作都会改变实付款,原本这些操作处理逻辑都在端侧处理,一体化改造之后,端侧不存在任何计算逻辑,客户端每次操作都会请求服务端,有FaaS进行红包是否过期等数据校验,再返回页面数据进行刷新。

一体化研发框架

Nexus Framework:基于Flutter的一体化移动端UI框架。
Logic Engine:基于Flutter的一体化通信与调度框架。
Nexus Server:基于Dart Runtime的一体化服务端框架。

代码示例

下图为客户端下单页初始化的代码示例:

下图为FaaS层对客户端发起的初始化请求的处理:

以上是Flutter+FaaS双端协议一体的开发示例,双端都是通过BinderAction进行交互,Action中的State是同一个类型,从而有效屏蔽通信细节,提高研发效率。

收益与效果

下单页已经上线,回顾整个研发过程,云端一体研发架构不仅仅只是新的技术方案,价值在于扩展端侧工作边界,带来生产关系的重塑。

协同效率提升:相比Flutter带来的双端一体来说,该三端一体的架构进一步提升了30%整体研发效率。

业务闭环:端侧还可以更快速地反馈与响应业务,不断尝试,从而搭建起更完善的产品模型,为业务创造更多的价值。

人员成长:端侧从只关注用户体验的开发资源,转变为整个业务研发的技术负责人,从只关注端侧的局部视角到更专注业务闭环的全局视角。Faas层调用底层领域服务来完成自己的业务,原来服务端可以更加地去专注领域服务的沉淀。

总结与展望

Flutter+Serverless 三端一体研发架构,能够解决本篇提出的原有研发架构的两个问题,通过改变端侧职能边界有效减少协同,客户端可以负责整个业务,服务端有更多的时间进行领域沉淀,但是闲鱼实践Flutter+Serverless三端一体研发架构时也遇到以下挑战:

  • FaaS层研发体验需要继续提升、调试只能通过GAIA日志查看,目前规划是把平台日志抓取到本地,并且提供FaaS代码远程调试功能。
  • 运维成本增加 问题定位、请求链路、压测、安全生产的工作转移,如何抹平与服务的差异。

以上是实践过程中发现的新的挑战,现在都已经列入到下一阶段的工作中,我们通过优化技术方案完成这些挑战。

原文发布时间:2019-12-27
作者:古风
本文来自阿里云合作伙伴“阿里技术”,了解相关信息可以关注“阿里技术”。

相关实践学习
【玩转ComfyUI】基于函数计算一键部署AI生图平台ComfyUI
本次实验将带大家通过使用阿里云产品函数计算FC,快速使用ComfyUI实现更高质量的图像生成。
从 0 入门函数计算
在函数计算的架构中,开发者只需要编写业务代码,并监控业务运行情况就可以了。这将开发者从繁重的运维工作中解放出来,将精力投入到更有意义的开发任务上。
目录
相关文章
|
存储 人工智能 前端开发
从需求到研发全自动:如何基于Multi-Agent架构打造AI前端工程师
本文深入阐述了蚂蚁消金前端团队打造的Multi-Agent智能体平台——“天工万象”的技术实践与核心思考。
2125 21
从需求到研发全自动:如何基于Multi-Agent架构打造AI前端工程师
|
人工智能 监控 前端开发
支付宝 AI 出行助手高效研发指南:4 人团队的架构迁移与提效实战
支付宝「AI 出行助手」是一款集成公交、地铁、火车票、机票、打车等多项功能的智能出行产品。
1860 21
支付宝 AI 出行助手高效研发指南:4 人团队的架构迁移与提效实战
|
SQL 前端开发 关系型数据库
如何开发一套研发项目管理系统?(附架构图+流程图+代码参考)
研发项目管理系统助力企业实现需求、缺陷与变更的全流程管理,支持看板可视化、数据化决策与成本优化。系统以MVP模式快速上线,核心功能包括需求看板、缺陷闭环、自动日报及关键指标分析,助力中小企业提升交付效率与协作质量。
1041 29
|
数据采集 运维 Serverless
云函数采集架构:Serverless模式下的动态IP与冷启动优化
本文探讨了在Serverless架构中使用云函数进行网页数据采集的挑战与解决方案。针对动态IP、冷启动及目标网站反爬策略等问题,提出了动态代理IP、请求头优化、云函数预热及容错设计等方法。通过网易云音乐歌曲信息采集案例,展示了如何结合Python代码实现高效的数据抓取,包括搜索、歌词与评论的获取。此方案不仅解决了传统采集方式在Serverless环境下的局限,还提升了系统的稳定性和性能。
681 0
|
存储 运维 Serverless
千万级数据秒级响应!碧桂园基于 EMR Serverless StarRocks 升级存算分离架构实践
碧桂园服务通过引入 EMR Serverless StarRocks 存算分离架构,解决了海量数据处理中的资源利用率低、并发能力不足等问题,显著降低了硬件和运维成本。实时查询性能提升8倍,查询出错率减少30倍,集群数据 SLA 达99.99%。此次技术升级不仅优化了用户体验,还结合AI打造了“一看”和“—问”智能场景助力精准决策与风险预测。
1621 69
|
前端开发 NoSQL 关系型数据库
如何开发研发项目管理中的需求管理板块?(附架构图+流程图+代码参考)
本文探讨了中小企业在研发或产品工作中常见的需求管理问题,如需求记录混乱、交付靠口头约定、变更无追踪等。通过系统化的需求管理,可实现“谁在做什么、为什么做、何时完成、谁验收”的可视化与责任归属,减少沟通成本,提升效率。文章详细介绍了需求管理的核心功能模块(如需求看板、处理流程、研发日报)、系统架构设计、前后端实现参考、开发技巧与落地建议,以及上线后的运营指标与实施路线图。最终目标是将松散的流程规范化、可追踪、可复用,助力企业构建高效的研发项目管理体系。
|
监控 前端开发 BI
如何开发研发项目管理中的缺陷管理板块?(附架构图+流程图+代码参考)
本文介绍了如何构建一个系统化的缺陷管理模块,以解决中小企业在缺陷管理上的混乱现状。通过建立“发现—修复—验证—关闭”的闭环流程,实现缺陷的可视化、可追溯和可统计管理,从而降低退货率、客户投诉与运维成本。内容涵盖缺陷管理功能详解、业务流程、数据模型设计、后端与前端参考代码、开发技巧与落地建议、上线后的指标与运营建议,以及从 MVP 到生产的实施路线。目标是让每个缺陷都有归属、状态清晰,并能通过看板快速识别阻塞点与风险,提升团队协作效率与产品质量。
|
Cloud Native Serverless 流计算
云原生时代的应用架构演进:从微服务到 Serverless 的阿里云实践
云原生技术正重塑企业数字化转型路径。阿里云作为亚太领先云服务商,提供完整云原生产品矩阵:容器服务ACK优化启动速度与镜像分发效率;MSE微服务引擎保障高可用性;ASM服务网格降低资源消耗;函数计算FC突破冷启动瓶颈;SAE重新定义PaaS边界;PolarDB数据库实现存储计算分离;DataWorks简化数据湖构建;Flink实时计算助力风控系统。这些技术已在多行业落地,推动效率提升与商业模式创新,助力企业在数字化浪潮中占据先机。
960 12
|
Kubernetes 监控 Serverless
基于阿里云Serverless Kubernetes(ASK)的无服务器架构设计与实践
无服务器架构(Serverless Architecture)在云原生技术中备受关注,开发者只需专注于业务逻辑,无需管理服务器。阿里云Serverless Kubernetes(ASK)是基于Kubernetes的托管服务,提供极致弹性和按需付费能力。本文深入探讨如何使用ASK设计和实现无服务器架构,涵盖事件驱动、自动扩展、无状态设计、监控与日志及成本优化等方面,并通过图片处理服务案例展示具体实践,帮助构建高效可靠的无服务器应用。
|
弹性计算 运维 Serverless
卓越效能,极简运维,体验Serverless高可用架构,完成任务可领取转轮日历!
卓越效能,极简运维,体验Serverless高可用架构,完成任务可领取转轮日历!

热门文章

最新文章

相关产品

  • 函数计算