解读Serverless架构的前世今生

 更新时间:2021年05月20日 11:12:36   作者:华为云开发者社区  
云计算的不断发展,涌现出很多改变传统IT架构和运维方式的新技术,而以虚拟机、容器、微服务为代表的技术更是在各个层面不断提升云服务的技术能力,它们将应用和环境中很多通用能力变成了一种服务。但无论这些技术应用在哪里,帮助企业降本增效是技术变革永恒的主题。

一、Serverless简介

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

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

Serverless处理模型:

Serverless的典型工作流程:

二、Serverless开发模式

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

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

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

三、Serverless带来的价值

1、降低运营复杂度

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

2、降低运营成本

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

3、缩短产品的上市时间

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

四、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架构的前世今生的资料请关注脚本之家其它相关文章!

相关文章

  • Matlab使用fft画出信号频谱图的方法

    Matlab使用fft画出信号频谱图的方法

    这篇文章主要介绍了Matlab使用fft画出信号频谱图的方法,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • Scala函数式编程专题--函数思想介绍

    Scala函数式编程专题--函数思想介绍

    这篇文章主要介绍了Scala函数式编程的的相关资料,文中讲解非常细致,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-06-06
  • 怎样制作“别人家的”Chrome插件

    怎样制作“别人家的”Chrome插件

    Chrome插件有很多实用API可以让我们使用,通过Chrome插件我们还可以做很多的事情,例如翻译网页文字等。本文将教你怎样制作“别人家的”Chrome插件,感兴趣的小伙伴一起来看看吧
    2021-08-08
  • Spark在Win10下的环境搭建过程

    Spark在Win10下的环境搭建过程

    这篇文章主要介绍了Spark在Win10下的环境搭建过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • H5混合开发手机Web App入门:概念篇

    H5混合开发手机Web App入门:概念篇

    如果你开始学习手机 App 开发,就一定会听到 H5 这个词。它是目前的主流开发技术之一,容易上手,开发周期短、成本低、兼容传统 Web 开发。但是,很少有文章详细介绍,H5 到底是什么技术,有什么原理,跟其他技术的差异在哪里。
    2022-12-12
  • 权限控制之粗粒度与细粒度概念及实现简单介绍

    权限控制之粗粒度与细粒度概念及实现简单介绍

    这篇文章主要介绍了权限控制之粗粒度与细粒度概念及实现简单介绍,具有一定参考价值,需要的朋友可以了解下。
    2017-10-10
  • 浅谈软件工程师的自我修养

    浅谈软件工程师的自我修养

    在本文中,我们将探讨软件开发过程中关于角色、重构和质量的问题。软件不仅成为了一个必需品,更成为了一个竞争优势。因为众多公司围绕软件而竞争,软件开发相关的事宜显得越发重要。开发软件的人—软件工程师正显得越发重要。
    2021-05-05
  • uniapp语音识别(讯飞语音)转文字

    uniapp语音识别(讯飞语音)转文字

    这篇文章主要介绍了uniapp语音识别(讯飞语音)转文字,需要的朋友可以参考下
    2022-12-12
  • IntelliJ IDEA插件EasyCode安装方法与使用技巧

    IntelliJ IDEA插件EasyCode安装方法与使用技巧

    这篇文章主要介绍了IntelliJ IDEA插件EasyCode安装方法与使用技巧,需要的朋友可以参考下
    2020-03-03
  • vant/vue实现小程序下拉刷新功能方法详解

    vant/vue实现小程序下拉刷新功能方法详解

    这篇文章主要介绍了vant/vue实现小程序下拉刷新功能方法详解,需要的朋友可以参考下
    2022-12-12

最新评论