解读Serverless架构的前世今生

一、Serverless简介

Serverless架构的出现,带来了跨越式的变革。Serverless下主机管理、操作系统管理、基础软件的部署运维、资源分配和扩缩容能力全部由云厂商提供,把计算能力做成像水电煤一样的公共服务,这就意味着基于Serverless服务构建应用,开发者只需要专注在产品代码上,而无需管理和操作云端服务运行环境,计算资源从过去购买“服务器”转向购买对应的“服务”。

Serverless = Faas (Function as a service) + Baas (Backend as a service)

解读Serverless架构的前世今生_第1张图片

Serverless处理模型:

解读Serverless架构的前世今生_第2张图片

Serverless的典型工作流程:

解读Serverless架构的前世今生_第3张图片

二、Serverless开发模式

Serverless真正做到了部署应用无需涉及基础设施的建设,自动构建、部署和启动服务。以大数据应用开发举例:

解读Serverless架构的前世今生_第4张图片

在传统开发流程中,我们需要先根据大数据实际应用从采集,存储,清洗,关联,到分析挖掘全链路所涉及的组件列表,完成后端大数据平台一系列组件的安装部署,再等到大数据应用完成后,进行应用功能调试、应用+平台性能调优,最终测试、上线后,还需要大数据平台运维工程师对整个大数据平台进行维护。整个过程涉及多个角色,而本身大数据平台的运维和调优具备一定的技术门槛,调优效果完全取决于自有员工的能力,而一个好的调优人员,就像一个好的数据库DBA一样,需要长期项目实践积累,属于关键稀缺人才。

基于Serverless,所有事情变得非常简单了,云厂商以服务的形式对外提供大数据组件能力,以往复杂的平台搭建过程得到完全解放,只需要写完大数据应用程序后部署到Serverless服务即可,后续也不需要关心任何服务器以及大数据平台组件的运维、调优操作。云厂商在对外提供服务的同时,背后都有一个完备的团队7*24提供专业的支撑。因此只需要大数据应用开发工程师即可完成所有工作。当然,如果具备一定的大数据平台能力,对大数据应用侧的性能调优也是非常有利的,往往可以事半功倍。

三、Serverless带来的价值

1、降低运营复杂度

Serverless架构使软件应用和服务器实现了解耦,服务器不再是用户开发和运营应用的焦点。在应用上线前,用户无须再提前规划服务器的数量和规格。在运维过程中,用户无须再持续监控和维护具体服务器的状态,只需要关心应用的整体状态。应用运营的整体复杂度下降,用户的关注点可以更多地放在软件应用的体验、改进以及其他能带来更高业务价值的地方。

2、降低运营成本

服务器不再是用户关注的受管资源,运营的复杂度下降,应用运营所需要投入的时间和人力大大降低。在最好的情况下,可以做到少数几个应用管理员即可管理一个处理海量请求的应用系统。

3、缩短产品的上市时间

在Serverless架构下,应用的功能被解构成若干个细颗粒度的无状态函数,功能与功能之间的边界变得更加清晰,功能模块之间的耦合度大大减小。这使得软件应用的开发效率更高,应用开发的迭代周期更短。

解读Serverless架构的前世今生_第5张图片

四、Serverless现存问题

对于企业来说,支持Serverless计算的平台可以节省大量时间和成本,释放基础设施相关员工,转移到开展更有价值的工作,而不是管理基础设施。另一方面可以提高敏捷度,更快速地推出新应用和新服务,进而提高客户满意度。但是任何事情都有两面性,Serverless并不是完美的,它也存在一些问题:

1、完全依赖于第三方服务

当我们采用某云服务厂商的 Serverless 架构时,理论上我们就和该服务供应商绑定了,那么我们再将服务迁到别的云服务商上就没有那么容易了。但如果云厂商本身兼容开源,甚至应用代码可以“0”改动迁移,这个问题就迎刃而解了,也就不存在绑定一说了。选择云厂商Serverless服务的时候,从产品演进的角度,这也是一个重点需要考虑的点。

2、缺乏调试和开发工具

现阶段基于Serverless架构服务开发时,相对比较痛苦的就是功能开发阶段,每次你调试的时候,你需要一遍又一遍地上传代码。而每次上传的时候,你就好像是在部署服务器,虽然应用部署非常简单,但并不能总是快速地定位出问题在哪。不过这应该也是一个阶段性的问题,后续Serverless周边工具生态逐步完善后,相信Serverless下的开发也会拥有跟本地开发一致的体验。

3、语言版本

一般Serverless服务内部针对单组件都是维护一个或几个主流版本,这个策略完全由云厂商决定,并不会严格紧跟社区版本。站在我的角度,也并不是版本越高越好,还是对外提供一个长期稳定的版本,比如原本是Spark 2.3,当Spark 2.4刚面世的时候,就没有必要马上跟风,服务对外的稳定可用才是最关键的。另外,现在基于K8S的自定义镜像也能很好的解决组件多版本和周边依赖问题。

五、总结

一般来说,社会越发达、越成熟,社会分工就越明确,技术亦是如此。云计算经过这么多年的发展,逐渐进化到用户仅需关注核心业务和业务运行所需的资源,基础设施及平台统一由云厂商来负责看护。Serverless架构让我们不需要再操心服务端的运维,不需要关心我们不熟悉的领域,只需要专注于业务的开发、专注于产品的实现。我们需要关心的事情变少了,也意味着我们能做的事情更多了。可以说,随着Serverless架构的兴起,真正的云计算时代才算到来了。相信随着技术的飞速发展,Serverless在未来还有无限可能!

以上就是解读Serverless架构的前世今生的详细内容,更多关于Serverless架构的前世今生的资料请关注脚本之家其它相关文章!

你可能感兴趣的:(解读Serverless架构的前世今生)