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

本文涉及的产品
函数计算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 架构模式
相关文章
|
6月前
|
资源调度 数据可视化 项目管理
项目管理系统在制造业的应用,提高生产效率的秘诀与解决方案
制造业面临产品交付挑战,项目管理系统成为提升效率的关键。Zoho Projects提供解决方案,包括基础信息管理(如门户配置、用户管理、权限设置和自动化)、任务管理(规范流程,支持模板和文档导入导出)和资源调度(分配人员,可视化展示资源使用)。该系统助力企业优化作业效率,已被超过20万家公司采用,并获福布斯认可。
59 3
|
2月前
|
运维 前端开发 项目管理
构建高效团队的技术管理心得
本文探讨了在技术管理中如何通过明确角色分工、加强沟通和灵活应对变化,提高团队效率和项目成功率。分享了一些实用的经验和方法,旨在帮助技术管理者打造高效的工作团队。
39 5
|
4月前
|
监控 安全 架构师
超越流水线,企业研发规范落地新思路
一文详解研发规范的目标、常见误区、选型方法与常见最佳实践。
15710 19
|
6月前
|
数据采集 存储 运维
提升团队工程交付能力,从“看见”工程活动和研发模式开始
本文从统一工程交付的概念模型开始,介绍了如何将应用交付的模式显式地定义出来,并通过工具平台落地。
122472 414
|
3月前
数字化核心构建问题之SAP为应用软件扎根客户打基础如何解决
数字化核心构建问题之SAP为应用软件扎根客户打基础如何解决
24 0
|
5月前
|
存储 数据采集 物联网
低代码与云服务开发相结合:重塑现代软件开发模式
随着数字化转型的深入推进,越来越多的企业开始将业务迁移到云端,以实现更高的灵活性、可靠性和成本效益。云服务已经成为企业数字化战略的重要组成部分。与此同时,低代码开发作为一种新兴的编程模式,也逐渐受到企业的关注。那么,当云服务遇到低代码开发,又会碰撞出怎样的火花呢?
60 4
|
SQL 数据采集 运维
袋鼠云数栈 DataOps 数据生产力实践,实现数据流程的自动化和规范化
袋鼠云数栈在7年多的研发历程中为上千家客户提供了数据生产效率提升解决方案,也在这个过程中不断地将 DataOps 的理念融合到产品中,助力越来越多的企业成功实现数字化转型升级。本文将就数栈基于 DataOps 的敏捷、高质量数据生产力实践进行分享,希望对大家有所帮助。
415 0
|
前端开发 数据可视化 小程序
低代码技术在研发团队的应用模式探讨
低代码技术在研发团队的应用模式探讨
426 0
低代码技术在研发团队的应用模式探讨
|
敏捷开发 前端开发 项目管理
在YesDev研发协同工具,项目协作 All In One
值得注意的是,YesDev中所定义和提倡的项目,是指在一定时间周期内完成的有限需求、任务和问题的集合,对应敏捷开发中的一次迭代或Scrumn的一个Sprint。
|
存储 弹性计算 运维
30人的产研团队如何高效协同?
工具选型及使用建议对于中小企业,基本都不会自己搭建服务器和机房进行部署,而是选择各大云平台,选择一款SaaS项目管理工具可以极大的降低运维成本。
967 0
30人的产研团队如何高效协同?