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

本文涉及的产品
函数计算FC,每月15万CU 3个月
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
简介:

阿里妹导读: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
作者:古风
本文来自阿里云合作伙伴“阿里技术”,了解相关信息可以关注“阿里技术”。

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
2天前
|
消息中间件 负载均衡 测试技术
后端开发中的微服务架构实践与挑战####
本文旨在探讨微服务架构在后端开发中的应用实践,深入分析其带来的优势与面临的挑战。通过剖析真实案例,揭示微服务转型过程中的关键技术决策、服务拆分策略、以及如何有效应对分布式系统的复杂性问题。文章还将提供一套评估企业是否适合采用微服务架构的框架,帮助读者更好地理解这一架构模式,并为企业的技术选型提供参考。 ####
|
1天前
|
运维 监控 安全
深入理解微服务架构:设计原则、挑战与实践
深入理解微服务架构:设计原则、挑战与实践
|
5天前
|
测试技术 持续交付 微服务
深入理解微服务架构:从概念到实践
深入理解微服务架构:从概念到实践
|
5天前
|
负载均衡 Cloud Native 持续交付
云原生时代的微服务架构:优势、挑战与实践
云原生时代的微服务架构:优势、挑战与实践
14 0
|
5天前
|
API 持续交付 云计算
云计算中的微服务架构设计与实践
云计算中的微服务架构设计与实践
|
1月前
|
Android开发 iOS开发 容器
鸿蒙harmonyos next flutter混合开发之开发FFI plugin
鸿蒙harmonyos next flutter混合开发之开发FFI plugin
|
2天前
|
传感器 前端开发 Android开发
在 Flutter 开发中,插件开发与集成至关重要,它能扩展应用功能,满足复杂业务需求
在 Flutter 开发中,插件开发与集成至关重要,它能扩展应用功能,满足复杂业务需求。本文深入探讨了插件开发的基本概念、流程、集成方法、常见类型及开发实例,如相机插件的开发步骤,同时强调了版本兼容性、性能优化等注意事项,并展望了插件开发的未来趋势。
13 2
|
1月前
|
开发者
鸿蒙Flutter实战:07-混合开发
鸿蒙Flutter混合开发支持两种模式:1) 基于har包,便于主项目开发者无需关心Flutter细节,但不支持热重载;2) 基于源码依赖,利于代码维护与热重载,需配置Flutter环境。项目结构包括AppScope、flutter_module等目录,适用于不同开发需求。
77 3
|
19天前
|
传感器 开发框架 物联网
鸿蒙next选择 Flutter 开发跨平台应用的原因
鸿蒙(HarmonyOS)是华为推出的一款旨在实现多设备无缝连接的操作系统。为了实现这一目标,鸿蒙选择了 Flutter 作为主要的跨平台应用开发框架。Flutter 的跨平台能力、高性能、丰富的生态支持和与鸿蒙系统的良好兼容性,使其成为理想的选择。通过 Flutter,开发者可以高效地构建和部署多平台应用,推动鸿蒙生态的快速发展。
141 0
|
21天前
|
Dart 安全 UED
Flutter&鸿蒙next中的表单封装:提升开发效率与用户体验
在移动应用开发中,表单是用户与应用交互的重要界面。本文介绍了如何在Flutter中封装表单,以提升开发效率和用户体验。通过代码复用、集中管理和一致性的优势,封装表单组件可以简化开发流程。文章详细讲解了Flutter表单的基础、封装方法和表单验证技巧,帮助开发者构建健壮且用户友好的应用。
62 0

热门文章

最新文章

相关产品

  • 函数计算
  • 下一篇
    无影云桌面