5G时代|闲鱼在Flutter&FaaS云端一体化架构的探索实践之路

本文涉及的产品
函数计算FC,每月15万CU 3个月
简介: 随着无线,IoT 的发展, 5G 的到来,移动研发越发向多端化发展。传统的基于 Native+Web+ 服务端的开发方式研发效率低下,显然已经无法适应发展需要。本文将会介绍闲鱼近一年来在 Flutter&FaaS 一体化项目上的探索和实践。

image.png

作者|王树彬(国有)
出品|阿里巴巴新零售淘系技术部

导读:

随着无线,IoT 的发展, 5G 的到来,移动研发越发向多端化发展。传统的基于 Native+Web+ 服务端的开发方式研发效率低下,显然已经无法适应发展需要。本文将会介绍闲鱼近一年来在 Flutter&FaaS 一体化项目上的探索和实践。

传统 Native+Web+ 服务端混合开发的挑战

我们希望探索闲鱼这样规模的独立 APP 的高效研发架构。主要思路是围绕 Flutter 解决多端问题,并使 Flutter 与 FaaS 等无服务容能力打通,形成云端一体化的研发能力,支持一云多端的发展需要。

在某些场景已经取得效果,过程中的思考与大家交流。

image.png

跨端方案 Flutter 与 RN 的对比与选择

闲鱼选择 Flutter 主要是出于高性能的考虑。 Flutter 高性能主要来源于 2 个原因:

  • Dart 的 AOT 编译能力。
  • 自建渲染引擎,不需要转换到 Native 控件,避免了线程跳跃等问题。

image.png

更多比较:

image.png

没有银弹的解决方案, Flutter 与 RN 各有优点。如何选择因素很多,关键看如何取舍,举个例子:

  • 当前团队人员以前端 JS 栈为主还是 Native 为主?如果 JS 为主,写 RN 会更习惯。如果 Android 或 iOS 为主,写 Flutter 会更习惯,因为 Flutter 的研发工具和体验与 Native 更相似。
  • 动态性和复杂交互的性能,哪个更重要?动态性重要 RN 合适,性能体验重要 Flutter 不会失望。虽然 Flutter 也有一些动态化解决方案,例如 JS 转接 Flutter 引擎的方案, Dart 代码 CodePush 的方案,组件化服务端组装方案等,但这些动态方案都没有 RN 这样从 JS 层解决的这么好。
  • 是否需要 IoT 等多端布局? Flutter 在嵌入式设计上有布局,性能有更好的表现。

Dart 作为 FaaS 层的首选语言

云端技术栈的打通,是减少协同的不错的解法。以往前端 +Node.js 的一体化方案大家应该不会陌生,然而如果端侧使用了 Flutter ,那云侧 Dart 自然是第一选择。

image.png

FaaS 的本质是运行在云端,那 Dart 适合用在云 /Server 上吗?

Dart 语言早于 Flutter ,在最初的设计上, Dart 就可以用于 Web、Server 。 Dart 具备一些服务端语言的特点:

  • 强类型,可预测性
  • GC 异步和并发
  • 高性能的 JIT
  • Profiler

闲鱼首先尝试将 Dart 作为普通的 Server ,替代传统的 Java Server ,然后再将 Dart 容器嵌入到 FaaS 容器中。建立 Dart Server 能力是第一步,也是主要的工作量所在。

闲鱼在 Dart Server 方面的建设思路:

image.png

开发期:

  • 受 Flutter 的 HotReload 启发,将 HotReload 移植到了 Server 侧。
  • 利用 Isolate ,在开发环境中为每个开发人员分配一个 Isolate ,解决以往的环境冲突的问题。

运行期:

  • Dart 本身是单线程异步模型,并发能力需要用Isolate支持。
  • 利用 Dart 的 Zone 的特性,可以方便的实现调用链路的跟踪,方便记录 Trace 日志。
  • 利用 Dart 支持的 C++ Extension 能力,可以在 Dart 中访问支持了 C++ 的中间件包。另外, Server Mesh 也是一个重要的思路,用于解耦异构语言之间的服务调用。

一体化的更深层思考

上述内容实现了 Flutter & Dart FaaS 的技术栈的统一,但仅技术栈统一还远远不够,端、云的同学仍然无法真正互补和一体化打通,原因在于还有更多深入问题需要考虑:

  • 一体化的业务闭环红利如何最大化?一体化不仅是效率的提升,还使一个同学可以 Cover 一个云到端的业务,使业务闭环。
  • 如何消除云端技术壁垒?仅技术栈打通,端人员还是不会写云,原因在于对云的思维模式的不理解,需要真正消除云端的技术壁垒。
  • 如何使工作总量减少 ( 1+1<2 )?如果一体化后把工作量压到一个人身上,那意义不大,需要使一体化下的总工作量降低。
  • 如何促进生产关系重塑? 生产关系需要适应新的生产力。

image.png

面向这些问题,闲鱼的解法思路:

  • 业务闭环为业务开发同学带来更好的成长空间,可以完整和专注的思考业务。这是人上的核心动力。
  • 业务闭环是业务流程沉淀的方向
  • 以往的架构是云、端分开架构的,一体化后有了更多的架构下沉空间,从而带来了总工作量 1+1<2 的可能
  • 领域下沉和工具支撑是一体化的保证

案例效果

案例一:一体化在资源均衡方面的体现。在近期的一个项目中,云端一体化使原本 2 个月的项目时间,减少了 20 天。

image.png

案例二:一体化在业务闭环方面的体现。负责增长的一位开发同学,专注在增长业务上,在合适的情况下为合适的人投放合适的内容,以此带来用户的增长和活跃效果。一体化的方式下,可以统一云、端的切面,业务研发不再受云、端的限制。

image.png

说在最后

一体化是建设高效研发框架的方向,并不是所有场景都需要一体化的开发,但一体化的 Flutter、FaaS 等技术组件,可以独立使用,也会带来效率提升,并且与原有的开发模式兼容。从一体化的思路去建设,可以使整体架构体系更加一致,也有机会做一体的架构沉淀。未来闲鱼希望在一体化上做更多尝试和深入探索,包括一体化工具、一体化业务平台、数据化智能化等方向。

One More Thing

就是现在!客户端/服务端Java/架构/算法/前端/质量 工程师,小闲鱼通通期待你的加入,base杭州阿里巴巴西溪园区。欢迎天马行空的你,加入这个颜值+才华逆天的团队,成就最好的自己!

投喂简历给小闲鱼→guicai.gxy@alibaba-inc.com

另外小编也会在近期搜罗一些,目前在招的岗位,请持续关注哦~

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
1月前
|
消息中间件 存储 弹性计算
云端问道13期方案教学-告别资源瓶颈,函数计算驱动多媒体文件处理
《云端问道13期方案教学》由阿里云技术团队周博宇主讲,聚焦如何使用函数计算突破资源瓶颈,高效处理多媒体文件。方案涵盖六大要点:寻找云需求解决方案、选择函数计算的原因、对比不同文件处理方式、实现多媒体文件处理、应用场景广泛性及优惠购买推荐。通过将文件处理从主应用拆分,利用函数计算的按需扩展和自动弹性特性,确保核心业务稳定,并大幅降低成本。适用于图片、视频处理等多种场景。
云端问道13期方案教学-告别资源瓶颈,函数计算驱动多媒体文件处理
|
1月前
|
弹性计算 监控 关系型数据库
云端问道13期实操教学-告别资源瓶颈,函数计算驱动多媒体文件处理
《云端问道13期实操教学》介绍了使用函数计算实现多媒体文件处理的解决方案,分为五部分:方案概览、部署准备、一键部署、完成及清理和主流应用场景。通过创建VPC、ECS、RDS等资源,演示了如何利用函数计算处理PPT加水印并转PDF,解决了资源瓶颈问题。最后讲解了函数计算在部署外部应用、文件处理和音视频处理中的优势。
|
1月前
|
人工智能 运维 Serverless
云端问道8期方案教学-基于Serverless计算快速构建AI应用开发
本文介绍了基于Serverless计算快速构建AI应用开发的技术和实践。内容涵盖四个方面:1) Serverless技术价值,包括其发展趋势和优势;2) Serverless函数计算与AI的结合,探讨AIGC应用场景及企业面临的挑战;3) Serverless函数计算AIGC应用方案,提供一键部署、模型托管等功能;4) 业务初期如何低门槛使用,介绍新用户免费额度和优惠活动。通过这些内容,帮助企业和开发者更高效地利用Serverless架构进行AI应用开发。
|
1月前
|
负载均衡 Serverless 持续交付
云端问道9期实践教学-省心省钱的云上Serverless高可用架构
详细介绍了云上Serverless高可用架构的一键部署流程
57 10
|
1月前
|
监控 Serverless 测试技术
云端问道9期方案教学-省心省钱的云上Serverless高可用架构
本文介绍了省心省钱的云上Serverless高可用架构,主要分为两个部分:1. Serverless的发展历程、特点及高可用架构;2. SAE(Serverless Application Engine)产品介绍。Serverless作为一种云计算模式,让用户无需管理底层基础设施,自动弹性扩展资源,按需付费,极大提高了资源利用率和业务灵活性。SAE作为Serverless计算服务,提供了简便的应用部署、运维自动化、丰富的弹性策略和可观测性等功能,帮助企业降低运营成本、提升研发效率。通过极氪汽车、南瓜电影等客户案例展示了SAE在实际应用中的优势。
|
2月前
|
弹性计算 负载均衡 安全
云端问道-Web应用上云经典架构方案教学
本文介绍了企业业务上云的经典架构设计,涵盖用户业务现状及挑战、阿里云业务托管架构设计、方案选型配置及业务初期低门槛使用等内容。通过详细分析现有架构的问题,提出了高可用、安全、可扩展的解决方案,并提供了按量付费的低成本选项,帮助企业在业务初期顺利上云。
|
4月前
|
Kubernetes Cloud Native 持续交付
云端新纪元:云原生技术重塑IT架构####
【10月更文挑战第20天】 本文深入探讨了云原生技术的兴起背景、核心理念、关键技术组件以及它如何引领现代IT架构迈向更高效、灵活与可扩展的新阶段。通过剖析Kubernetes、微服务、Docker等核心技术,本文揭示了云原生架构如何优化资源利用、加速应用开发与部署流程,并促进企业数字化转型的深度实践。 ####
|
3月前
|
边缘计算 自动驾驶 5G
5G网络架构解析:从核心网到边缘计算
【10月更文挑战第24天】
195 10
|
3月前
|
消息中间件 编解码 开发者
深入解析 Flutter兼容鸿蒙next全体生态的横竖屏适配与多屏协作兼容架构
本文深入探讨了 Flutter 在屏幕适配、横竖屏切换及多屏协作方面的兼容架构。介绍了 Flutter 的响应式布局、逻辑像素、方向感知、LayoutBuilder 等工具,以及如何通过 StreamBuilder 和 Provider 实现多屏数据同步。结合实际应用场景,如移动办公和教育应用,展示了 Flutter 的强大功能和灵活性。
204 6
|
3月前
|
开发者 容器
Flutter&鸿蒙next 布局架构原理详解
本文详细介绍了 Flutter 中的主要布局方式,包括 Row、Column、Stack、Container、ListView 和 GridView 等布局组件的架构原理及使用场景。通过了解这些布局 Widget 的基本概念、关键属性和布局原理,开发者可以更高效地构建复杂的用户界面。此外,文章还提供了布局优化技巧,帮助提升应用性能。
134 4