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

本文涉及的产品
函数计算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对端能力的不足。在此基础之上,传统的研发职能结构被进一步洗牌。

延伸阅读:

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
1月前
|
存储 监控 数据可视化
设计行业如何借助协作软件提升团队协作力?
随着设计项目规模和复杂性的增加,设计行业越来越依赖协作软件来提高工作效率、加强团队协作、支持远程办公、实现文件版本控制等,确保项目高效推进。协作软件不仅优化了设计流程,还促进了创意交流和团队创新。
|
27天前
|
数据可视化 数据挖掘 项目管理
从头到尾掌控项目,了解全流程协作的力量
在现代企业中,全流程协作理念通过从任务发起至结果交付的全生命周期透明化、标准化和高效化,打破部门、团队和工具间的壁垒,提高团队透明度,打破时空限制,降低跨部门沟通成本,赋能团队持续优化。
|
4月前
|
运维 前端开发 项目管理
构建高效团队的技术管理心得
本文探讨了在技术管理中如何通过明确角色分工、加强沟通和灵活应对变化,提高团队效率和项目成功率。分享了一些实用的经验和方法,旨在帮助技术管理者打造高效的工作团队。
49 5
|
3月前
|
数据采集 存储 监控
组建数据治理团队:从无到有的实践指南
通过以上四个步骤,可以从无到有地建立和完善一个高效的数据治理团队。这个团队将帮助企业更好地管理和利用自己的数据资产,从而为企业创造更大的价值。
|
8月前
|
数据采集 存储 运维
提升团队工程交付能力,从“看见”工程活动和研发模式开始
本文从统一工程交付的概念模型开始,介绍了如何将应用交付的模式显式地定义出来,并通过工具平台落地。
122798 420
|
8月前
|
运维 监控 Cloud Native
设计与构建 FinOps 流程、团队、体系与目标
企业 FinOps 实施不是一蹴而就的项目,如果您正在推进企业云原生 FinOps 落地,除了选择合适的技术手段,企业内部的流程和体系建设也尤为重要。
163820 26
|
8月前
|
监控
构建高效能团队的敏捷方法论
【5月更文挑战第10天】敏捷方法论助力构建高效能团队,强调个体协作、迭代开发、客户参与和灵活应变。通过选择合适的敏捷框架,建立协作文化,制定明确流程,持续改进,团队能迅速响应市场变化,保证产品竞争力和创新力,促进企业成功和持续发展。
|
8月前
|
运维 安全 开发工具
打破代码评审难落地魔咒,轻松构建基于代码评审的研发流程和文化
本文介绍小布快跑,高效协同,如何轻松构建基于代码评审的研发工作流。
265 2
|
敏捷开发 数据可视化 项目管理
敏捷方法和相应的敏捷工具
敏捷思维是一种在敏捷方法和框架的指导下进行工作和问题解决的思维方式。它强调灵活性、适应性、协作和持续改进,旨在提供更高质量的工作成果和更好的项目管理。
|
敏捷开发 测试技术 项目管理
​ 敏捷开发和传统开发的区别?以及Scrum敏捷管理工具推荐
Leangoo领歌一款永久免费的专业敏捷研发管理工具,它覆盖了敏捷项目研发全流程,包括小型团队敏捷开发,规模化敏捷SAFe,Scrum of Scrums大规模敏捷。能够支持多种场景,如:敏捷研发管理、敏捷项目管理、工作流管理、轻量级项目群管理、任务管理等。

热门文章

最新文章

下一篇
开通oss服务