软件开发经历了从独立作战到复杂架构的转变,这一变化十分明显。那么,这些变化是如何使开发流程变得更加高效的?又是如何通过复杂的架构来提高生产力的?
早期PC互联网开发模式
在PC互联网初期,开发环境相对简陋,前端与后端之间没有明确的分界。那时,一个业务需求通常由一位开发者独自完成,网页与后端代码都整合在一个项目中。这类似于小型公司制作简易网站,一位程序员能在较短的时间内完成整个网站的构建,既要编写网页代码,又要处理业务逻辑,职责并不明确。不过,这种做法在业务规模不大时还能灵活应对。
业务复杂度催生变革
业务量持续增加,导致开发者同时处理前后端研发的效率明显降低。尤其在移动互联网迅猛发展的当下,服务端需应对PC、Android、iOS等多种前端设备。以大型电商应用为例,不同设备在展示和交互上各有特点,这对服务端构成了不小的挑战。单一的服务端难以满足众多前端的需求,传统的开发模式已经不再适用,所以进行改革变得非常迫切。
BFF架构应运而生
面对前端与后端间的兼容性问题,一种创新方法应运而生,那就是将部分后端服务调整为面向前端的后端服务,简称BFF。BFF充当着连接两端的桥梁角色,主要职责是进行数据的整合与排序。以大型电商平台为例,BFF能够将商品和库存等数据整合起来,再传输给前端。不过,在服务端编写BFF也带来了新的挑战。众多开发者经常需要执行接口操作。这让他们提升个人技能变得困难。
BaaS与FaaS层协作
BaaS涵盖了数据库存储和消息队列等功能。在遇到复杂需求时,服务端可以在BaaS层构建领域服务,然后由FaaS层进行调用。打个比方,BaaS就像是盖楼时打好的地基,而FaaS则是在这基础上建造的建筑。以游戏应用为例,BaaS层负责储存玩家的信息。FaaS层则根据这些信息来执行游戏规则。这种明确的分工让游戏开发变得更加高效。
三端一体的实现形式
为了持续提升开发能力,确保语言、协议和工程实现的高度融合极为关键。在编程领域,我们采用Dart语言进行Android、iOS和FaaS层的开发,这一做法实现了编程语言的统一,大幅降低了FaaS层语言学习的难度。在协议整合上,统一的框架有效地遮蔽了通信的复杂性。前端和后端使用相同的状态,这使得前端调用FaaS服务变得非常便捷,就像调用本地函数一样简单。当工程实现一体化后,前端和后端可以在同一个工程中协同开发。借助Dart语言的快速重载特性,联调过程变得既迅速又高效。
闲鱼下单页一体化实践
以闲鱼下单页面为例,我们对其展示和操作流程进行了全面分析。经过整合,我们将客户端的计算逻辑转移到了FaaS层,涉及融合多个领域的服务以及优化业务流程。因此,客户端不再负责渲染和业务逻辑,只需直接获取ViewModel来刷新页面。通过BinderAction在两端实现信息交流,Action中的State类型保持一致,这样做大大降低了通信的复杂性,从而提高了研发工作的效率。一旦这个单页应用投入运行,其成效便迅速显现,效果十分明显。
这些改变展现了软件架构的演进,给日常生活带来了不少方便。面向未来,你觉得软件架构还能实现哪些创新突破?点个赞,转发这篇文章,咱们共同探讨各自的观点。