🏡 微信公众号:极客FUN
开源社区-geekfun:https://www.geekfun.club/zh/
⛳️ 欢迎关注 🐳 点赞 🎒 收藏 ✏️ 留言
文章发布于公众号,获取最新文章,关注极客范
DocKit:https://dockit.geekfun.club/
jest-search: https://github.com/geek-fun/jest-search
serverlessInsight:https://serverlessinsight.geekfun.club/

Serverless是云计算高速发展的产物,Iron.io的副总裁Ken Fromm于2012年在文章《Why The Future of Software and Apps is Serverless》中首次提出了这一概念,并随着2014年AWS推出Lambda而被人熟知。Serverless以其无需管理计算资源、免运维的特性快速风靡,开启了全新的云计算范式。
在这里插入图片描述

Serverless及其演进

Serverless,中文译为无服务器架构,是指构建和运行应用程序不再需要管理服务器资源,开发者无需去关心服务器的配置、运维以及扩缩容,由云厂商提供统一负责,用户只需要根据业务需求使用其服务即可。
在这里插入图片描述

在Serverless架构中,开发者不会再去配置服务器操作系统、管理系统依赖更新、通过ssh连接服务器、手动添加主机应对流量突增等操作,云平台将提供一个比容器更为高层级的抽象,用户只需要根据提供的API、配置项设置好符合业务需求的相关配置,如内存,CPU数和存储空间等,然后上传业务代码,云平台将自动根据请求伸缩相应资源。

Serverless是云计算不断演进的结果。回顾历史,发布一个应用程序需要的服务器从物理主机托管,到运营商提供裸机服务器,再到云计算时代的虚拟机(IaaS),容器(CaaS),最终到Serverless无服务器架构(FaaS)。管理、运维计算资源的任务越来越多地向云厂商移动,开发者得以将更多的精力聚焦于业务需求,实现从"拥有服务器"到"使用计算能力"的范式转变。
在这里插入图片描述

到今天,Serverless已经不再局限于如Lambda这样的FaaS(Function as Service)平台上,诸如DynamoDB、AWS Cognito、API Gateway等都成为了Serverless Native生态中举足轻重的角色,更有越来越多的非无服务云计算产品推出了Serverless版本,如OpenSearch Serverless、Aurora Serverless等,形成了丰富的Serverless生态。

Serverless的核心特点

Serverless作为一种全新的云计算范式,拥有诸多不同点,它并不是简单地从一个计算平台迁移到另一个计算平台,而是如面向对象和函数式编程般对计算资源思考模式的转变。而这些改变都是基于其不同于常规计算资源的特点所决定的:

  • 无需管理服务器:开发者无需购买和管理服务器等基础设施,只需关注业务逻辑,编写函数代码。
  • 极致的弹性伸缩:根据业务请求量自动弹性扩缩容,支持从零到数千实例的弹性伸缩,灵活应对突发性工作负载。
  • 按量计费:基于实际使用量计费,显著降低闲置资源成本,不执行不收费。
  • 事件驱动:通过事件触发函数执行,与事件源(如OSS、消息队列)的原生集成让使用者无需管理队列资源。
  • 高可用性:云厂商提供≥99.95%的SLA保障,函数实例虚拟机级别隔离,确保服务稳定性。

Serverless应用场景

Serverless架构因其独特的优势,在多个领域展现出强大的适用性:

  • API后端:整合API网关和Serverless服务构建Web及移动后端,帮助开发者构建可弹性扩展、高可用的移动或Web后端应用服务。
  • 事件驱动的数据处理:包括实时文件处理(如图片压缩、裁剪、添加水印)、数据ETL处理、日志分析等场景。
  • IoT物联网:处理IoT设备数据,构建IoT后端服务,支持设备连接、数据采集和实时分析。
  • AI推理服务:在机器学习领域,特别是AI推理预测场景中,Serverless能够根据请求量自动伸缩,有效处理突发的推理需求。
  • 多媒体处理:音视频转码、文档转换等计算密集型任务,按需调用计算资源。
  • 监控与自动化运维:构建自动化运维流程,如定时任务、监控告警等。

Serverless的局限性

尽管Serverless具有诸多优势,但在实际应用中也存在一些局限性需要考虑:

  • 冷启动延迟:长时间闲置的函数在启动时可能会有延迟,尤其是Java等需初始化运行环境的语言,可能面临秒级延迟。
  • 不适合长时间运行业务:Serverless在请求到来时才运行,当应用不运行时会进入"休眠状态",不适合需要持续运行的应用场景。
  • 调试困难:无服务器实例更难以收集调试和修复无服务器功能所需的日志和性能数据。
  • 状态管理难题:函数无状态特性要求依赖外部存储(如Redis、S3),增加了架构复杂性。为此,对于无状态的方法/程序, Serverless即用即扔的特性天然地与之契合。
  • 厂商锁定风险:不同云厂商的Serverless实现存在差异,迁移成本较高。
  • 成本模型争议:在高负载场景下,按调用次数计费可能比传统服务器方案更昂贵。

结语

Serverless代表了云计算发展的新方向,它通过抽象底层基础设施,让开发者能够更加专注于业务逻辑。虽然存在一些局限性,但随着技术的不断演进和生态的完善,Serverless正在成为构建现代云原生应用的重要选择。对于开发者而言,理解Serverless的核心概念、特点、适用场景和局限性,将有助于在合适的场景中发挥其最大价值。

希望这篇博客能够帮助您更好地理解Serverless架构,为您的技术选型提供参考。随着云原生技术的不断发展,Serverless的应用场景和能力边界也将持续扩展。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐