背景
Serverless是这几年兴起的一个概念,它希望开发者更加专注于应用逻辑本身,而不是被琐碎的基础设施细节所”绑架“。而FaaS是Serverless的一种比较好的实践方式。它拥有更加轻量、事件驱动的特点。
闲鱼选择使用Flutter + FaaS体系来实现云端一体化的开发模式也正是看中了Flutter和FaaS技术本身都是轻量的、面向应用的技术。与一体化本身希望开发者尽可能关注整体的业务逻辑非常契合。
Flutter + FaaS的云端一体化开发模式已经在闲鱼中被使用了一段时间。同事们之前也有过一些文章来介绍一体化开发在闲鱼演进和落地的过程。在这些文章中,都提到了 Logic_engine
、 Nexus_Framework
等字眼。它们一直默默地在业务开发同学的身后,支撑着一体化的落地和发展。
今天,我们就来介绍一下这个一体化的幕后玩家--- Nexus协议,以及基于它衍生出来的框架和库。
Nexus协议的来源
一开始说要做Flutter + FaaS一体化开发的时候,我们对”一体化“这三个字的认知相对比较模糊,只是知道端侧的同学可以用Dart这门语言来写FaaS函数,这样的语言上的一体化。对于FaaS所能做的事,也仅仅停留在前端实施已久的BFF层面。那个阶段,对于要做些什么,还是比较迷茫的。
阿里的同学经常说:你不知道能做些什么,是因为想得还不够清楚。
本着这样的想法,一体化小组经常聚在一起讨(liao)论(tian),不管Flutter + FaaS有没有一体化,反正我们小组先”一体化“了再说。
整个一体化的概念在讨论中慢慢变得清晰,首先我们对于一体化进行了定义,它应该是这样的一个形态:
语言一体化
开发模式与架构一体化
最终达到开发Flutter页面和开发FaaS无明显gap,像在开发一整个应用的体验。
语言一体化
由于Flutter本身是以Dart作为开发语言,那么我们自然也选择它作为FaaS的开发语言。闲鱼在之前已经实践过了Dart Server这种开发方式,在Dart runtime、相关开发工具方面有非常深厚的沉淀。组内的同学将这个runtime经过修改之后移植到了集团的FaaS平台Gaia上。
开发同学不仅可以在端上使用hotreload进行页面快速调试&#x