云开发模式下的研发职能洗牌和工程模型

本文涉及的产品
函数计算FC,每月15万CU 3个月
简介: 云开发模式下的研发职能洗牌和工程模型


本文是对11月7日腾讯Techo技术大会上本人分享的议题《云开发模式下的工程模型和落地实践》的讲稿整理。

软件开发经历几十年的发展到今天,开发者的关注点其实只有两个:系统架构软件架构。下图中列出的内容有的属于系统架构层面,比如异地容灾、网络专线、网络防护等等;有些属于软件架构层面,比如数据库、高并发、文件存储等等。

不论是系统架构还是软件架构,目的都是保证业务逻辑的正确性和高效性。换句话说,都是围绕业务逻辑展开。

以这两个关注点为基础,逐渐演化出了现今普遍的技术研发团队的职能分配结构。比如以系统架构为基础演化出运维工程师,又可细分为面向软件的运维和面向硬件的运维;以软件架构为基础演化出数据库工程师、服务端工程师以及前端工程师。

各职能有不同的分工,要求从业者具备其所属职能的专有领域知识,进而造成各职能之间存在明显的隔离边界。而边界的存在必然会对多职能的协作和交流产生不良影响。

极限编程是Kent Beck在1996年提出的一种软件工程方法,后又演化出三种耳熟能详的具体落地方案:封闭开发、敏捷开发和结对编程。前两者跟本文的话题关联不大,所以略过。下图展示的便是经典的前后端结对开发的场景:

虽然结对编程缩短了空间距离令沟通更便捷,但是空间并非是影响沟通的唯一甚至主要因素。由于前后端之间存在明显的职能边界,所以现实中的结对编程绝大多数达不到理想中的结果。而空间距离的缩短不仅没有促成高效沟通,反而弄巧成拙为两人的吵架提供了便利。

而这个问题在云开发模式下被极大地弱化甚至完全消除。为何会如此,我们先从云计算的历史讲起。

从系统到软件,云计算的演进之路

从物理机到云主机再到PaaS,云计算一步步降低了开发者对于系统架构的关注,减少运维投入和经济成本。Serverless则更进一步,弱化开发者对软件架构的感知和关注。

那么FaaS+BaaS的Serverless模型还缺什么?云开发如何弥补Serverless的不足?

举个例子,下图是使用云开发提供的云存储能力进行静态文件的上传和下载操作:

与传统CDN不同的是,云存储上传文件后得到的是一个fileID而不是URL,然后在下载的时候首先要用fileID换取URL,在这个过程中会进行必要的权限验证,非法用户不能够获得资源的URL。

从以上对比中可以提取出云存储相对于传统CDN的两个提升点:一是更安全便捷的权限控制;二是更语义化的编程语言API。

这也是云开发在Serverless基础上解决对端“最后一公里”问题的两个核心出发点。

关于云开发对于Serverless的加强请参阅延伸阅读《云开发如何解决serverless对端的最后一公里问题》

云开发推动研发职能结构的洗牌

自BFF诞生以来一直存在着“BFF层谁来做”的争议。BFF层本质上是server,要求开发者有服务端开发的领域知识和能力。所以交给传统的前端工程师来做必然会有一定的学习成本以及服务稳定性方面的隐患,即使直接招聘有此能力的前端也会消耗相对传统前端更多的雇佣成本。

那么BFF交给后端开发者不就行了吗?如此,那跟传统的研发职能分配有何不同呢?前端仍然写交互、后端仍然写逻辑,协作流程上没有任何改动,意义何在?效率何在?

如此难以抉择的根本是因为前端工程师不会写业务逻辑?还是因为前端不熟悉服务端的编程语言?

当然不是。

编程语言是各职能之间最表层也是最容易跨过得一道门槛,业务逻辑则更不是问题。传统前端之所以写不好server,本质上是因为缺乏服务端开发的专有领域知识,而这些领域知识是跟编程语言和业务逻辑无关。

所以,云开发模式下由云函数承载业务逻辑充当BFF层的代替者,对于开发者的唯二要求便是熟悉编程语言和编写业务逻辑的能力,而与两者无关的其他领域知识一概消除。

则必然,前后端分离的边界下沉到BFF之下,进而传统的前后端职能分配结构被重新洗牌。

而洗牌之后的工程模型也更新换代。

研发职能的单一化必然带动迭代效率的提升,从另一方面,前后端由单一职能负责也提供了玩更多花样的环境,比如同构编程。

总结

虽然目前普遍认为Serverless=FaaS+BaaS,但Serverless是一种理念,一种指导思想,并不会局限于固定的模型。云开发在Serverless理念的基础之上,以端SDK+接入层的模式弥补了Serverless对端能力的不足。在此基础之上,传统的研发职能结构被进一步洗牌。

延伸阅读:

相关实践学习
【AI破次元壁合照】少年白马醉春风,函数计算一键部署AI绘画平台
本次实验基于阿里云函数计算产品能力开发AI绘画平台,可让您实现“破次元壁”与角色合照,为角色换背景效果,用AI绘图技术绘出属于自己的少年江湖。
从 0 入门函数计算
在函数计算的架构中,开发者只需要编写业务代码,并监控业务运行情况就可以了。这将开发者从繁重的运维工作中解放出来,将精力投入到更有意义的开发任务上。
相关文章
|
2天前
|
人工智能 运维 安全
|
5天前
|
SpringCloudAlibaba 负载均衡 Dubbo
微服务架构下Feign和Dubbo的性能大比拼,到底鹿死谁手?
本文对比分析了SpringCloudAlibaba框架下Feign与Dubbo的服务调用性能及差异。Feign基于HTTP协议,使用简单,适合轻量级微服务架构;Dubbo采用RPC通信,性能更优,支持丰富的服务治理功能。通过实际测试,Dubbo在调用性能、负载均衡和服务发现方面表现更出色。两者各有适用场景,可根据项目需求灵活选择。
386 124
微服务架构下Feign和Dubbo的性能大比拼,到底鹿死谁手?
|
7天前
|
人工智能 JavaScript 测试技术
Qwen3-Coder入门教程|10分钟搞定安装配置
Qwen3-Coder 挑战赛简介:无论你是编程小白还是办公达人,都能通过本教程快速上手 Qwen-Code CLI,利用 AI 轻松实现代码编写、文档处理等任务。内容涵盖 API 配置、CLI 安装及多种实用案例,助你提升效率,体验智能编码的乐趣。
713 108
|
2天前
|
算法 Python
【轴承故障诊断】一种用于轴承故障诊断的稀疏贝叶斯学习(SBL),两种群稀疏学习算法来提取故障脉冲,第一种仅利用故障脉冲的群稀疏性,第二种则利用故障脉冲的额外周期性行为(Matlab代码实现)
【轴承故障诊断】一种用于轴承故障诊断的稀疏贝叶斯学习(SBL),两种群稀疏学习算法来提取故障脉冲,第一种仅利用故障脉冲的群稀疏性,第二种则利用故障脉冲的额外周期性行为(Matlab代码实现)
228 152
|
4天前
|
Java 数据库 数据安全/隐私保护
Spring 微服务和多租户:处理多个客户端
本文介绍了如何在 Spring Boot 微服务架构中实现多租户。多租户允许单个应用实例为多个客户提供独立服务,尤其适用于 SaaS 应用。文章探讨了多租户的类型、优势与挑战,并详细说明了如何通过 Spring Boot 的灵活配置实现租户隔离、动态租户管理及数据源路由,同时确保数据安全与系统可扩展性。结合微服务的优势,开发者可以构建高效、可维护的多租户系统。
203 127
|
4天前
|
Web App开发 前端开发 API
在折叠屏应用中,如何处理不同屏幕尺寸和设备类型的样式兼容性?
在折叠屏应用中,如何处理不同屏幕尺寸和设备类型的样式兼容性?
231 124
|
2天前
|
编解码 算法 自动驾驶
【雷达通信】用于集成传感和通信的OFDM雷达传感算法(Matlab代码实现)
【雷达通信】用于集成传感和通信的OFDM雷达传感算法(Matlab代码实现)
174 125