什么是Serverless

本文涉及的产品
简介: 自2006年8月9日,Google首席执行官埃里克·施密特(Eric Schmidt)在搜索引擎大会(SESSanJose2006)首次提出“云计算”(Cloud Computing)的概念之后,云计算的发展可以用日新月异这个词来形容。那么究竟什么才是Serverless呢?

什么是Serverless


自2006年8月9日,Google首席执行官埃里克·施密特(Eric Schmidt)在搜索引擎大会(SESSanJose2006)首次提出“云计算”(Cloud Computing)的概念之后,云计算的发展可以用日新月异这个词来形容。那么究竟什么才是Serverless呢?


简单来说,Serverless可以说是一种架构,一种云计算发展的产物,至于具体说什么是Serverless,可能没有谁能给他一个明确的概念,如果非要说一个可以稍微容易理解一些的概念,那或许可以参考Martin Fowler在《Serverless Architectures》中对Serverless这样定义:Serverless=BaaS + FaaS。

Serverless架构和传统的项目的区别


首先,我们以一个常见的Web服务为例:


在这个图中,服务器中可能涉及路由规则、鉴权逻辑以及其他各类复杂的业务代码。同时,开发团队要付出很大的精力在这个服务器的运维上面,例如要时刻关注以下问题:

  • 客户量突然增多时是否需要扩容服务器。
  • 服务器上的脚本和业务代码等是否还在健康运行。
  • 是否有黑客在不断地对服务器发起攻击。


当我们把这个思路切换到Serverless的逻辑之后,变成了这样:


可以认为,当客户端和数据库未发生变化的前提下,服务器变化巨大。


  • 之前需要开发团队维护的路由模块以及鉴权模块都将接入服务商提供的API网关系统以及鉴权系统,开发团队无须再维护这两部分的业务代码,只需要持续维护相关规则即可。
  • 在这个结构下,业务代码也被拆分成了函数粒度,不同函数表示不同的功能。
  • 我们已经看不到服务器的存在,是因为Serverless的目的是让使用者只关注自己的业务逻辑即可,所以一部分安全问题、资源调度问题(例如用户量暴增、如何实现自动扩容等)全都交给云厂商负责。
  • 相对于传统项目而言,传统项目无论是否有用户访问,服务都在运行中,都是有成本支出,而Serverless而言,只有在用去发起请求时,函数才会被激活并且执行,并且会按量收费,相对来说可以在有流量的时候才有支持,没有流量的时候就没有支出,相对来说,成本会进一步降低。


通过以上分析和描述,不难看出Serverless架构相对于传统的开发模式的区别,也逐渐的发现了它的优势。但是问题来了,很多工作都交给了云厂商来做,那我们做什么呢?


使用Serverless架构后:

  • 开发团队不需要再自己维护服务器,也不需要自己操心服务器的各种性能指标和资源利用率,而是可以让开发团队付出更多的时间和精力去关注应用程序本身的状态和逻辑。
  • Serverless应用的部署将变得十分容易。我们只要上传基本的代码,例如Python程序只需要上传其逻辑与依赖包,C/C++、Go等语言只需上传其二进制文件,Java只需要上传其Jar包等即可,同时不需使用Puppet、Chef、Ansible或Docker来进行配置管理,大大降低了运维成本。
  • Serverless架构也不再需要监控底层的数据,例如不再需要监控磁盘使用量、CPU使用率等,可以更加专注的将监控目光放到监控应用程序本身的度量。同时在Serverless架构上,运维人员的工作角色会有所转变,部署将变得更加自动化,监控将更加面向应用程序本身。

使用Serverless架构的优势


从上文中我们不难看出,相对于传统项目,Serverless具备的以下优势:

  • 您无需采购和管理服务器等基础设施,运维成本低。
  • 您只需专注业务逻辑的开发,使用函数计算支持的开发语言设计、优化、测试、审核以及上传自己的应用代码。
  • 以事件驱动的方式触发应用响应用户请求。与阿里云对象存储OSS、API网关、日志服务和表格存储等服务无缝对接,帮助您快速构建应用。例如,通过OSS解决图片和视频的存储问题,当有新数据写入您的OSS资源时,自动触发函数处理数据。
  • 提供日志查询、性能监控和报警等功能快速排查故障。
  • 毫秒级别弹性伸缩,快速实现底层扩容以应对峰值压力。
  • 按需付费,支持百毫秒级别收费。只需为实际使用的计算资源付费,适合有明显波峰波谷的用户访问场景。


总而言之,Serverless是在传统容器技术和服务网格上发展起来,更多指的是后端服务与函数服务的结合。对于开发者而言,能够将更多的精力关注在函数服务上,更侧重让使用者只关注自己的业务逻辑即可。


同时,Serverless也是云计算发展到一定阶段的必然产物。作为普惠科技,云计算发展的目标一定是绿色科技和大众科技的产品——而Serverless能够很好的诠释这些:最大程度利用资源、减少空闲资源浪费;同时降低学习成本和使用成本。


Serverless架构被称为是“真正实现了当初云计算的目标”,这种说法虽然有些夸张,但是也从另一方面表现出了大家对Serverless架构的期盼和信心。自2012年被提出至今,Serverless架构也是经历了7年时间,正在逐渐的走向成熟。


相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
2月前
|
运维 Serverless 虚拟化
为什么需求Serverless
公司计划在网站上引入AIGC技术以增强用户互动,但担忧开发周期长和成本高。技术负责人建议使用Serverless技术,这种模式允许只关注核心代码开发,减少资源管理和运维成本,适应快速、低成本的需求。小陈将负责调研Serverless在AIGC应用中的可行性,以实现更高效、节省资源的开发。Serverless的核心是让开发者专注于业务逻辑,减少非必要技术问题的处理,符合开发人员期望的开发模式。
42 6
|
2月前
|
运维 Cloud Native 安全
Serverless是什么
小陈向大刘请教Serverless,了解到Serverless是种云原生开发模式,重点在于FaaS(函数即服务)和BaaS(后端服务),让开发者专注于业务逻辑,而无需管理服务器等基础设施。Serverless并非无服务器,而是将服务器运维工作交给云厂商。FaaS是代码托管服务,例如阿里云的函数计算,提供敏捷、弹性、可靠且成本效益高的计算服务。BaaS则是通过API调用第三方服务,如数据库访问。Serverless与传统架构相比,减少了开发者的负担,提高了效率,降低了成本,并增强了安全性。
56 6
|
9月前
|
存储 安全 物联网
Serverless 是什么?
Serverless 是什么?
117 0
|
10月前
|
弹性计算 监控 Java
Serverless
Serverless应用引擎SAE(Serverless App Engine)是一个全托管、免运维、高弹性的通用PaaS平台。SAE支持Spring Cloud、Dubbo、HSF、Web应用和XXL-JOB、ElasticJob任务的全托管,零改造迁移、无门槛容器化、并提供了开源侧诸多增强能力和企业级高级特性。
99 3
|
架构师 物联网 Serverless
什么是Serverless? #110
什么是Serverless? #110
54 0
|
Serverless
什么是 Serverless——与 Serverless 相对的是 Serverfull
什么是 Serverless——与 Serverless 相对的是 Serverfull自制脑图
94 0
什么是 Serverless——与 Serverless 相对的是 Serverfull
|
运维 Kubernetes Cloud Native
什么是serverless
什么是serverless
116 0
|
消息中间件 Kubernetes 前端开发
Serverless是什么?
Serverless是什么?
290 0
Serverless是什么?
|
Serverless
Serverless 新旧观念的转变
Serverless 新旧观念的转变自制脑图
59 0
Serverless 新旧观念的转变
|
Serverless
Serverless
Serverless 自制脑图
92 0
Serverless