10年前就出现的 Serverless,还有人在关注吗?
最近在关注一些云原生和云计算的话题,不知不觉看到了一个关于
Serverless
的内容。感觉这个对话很有意思,可以和大家分享一下这个对Serverless
“不屑一顾”的老李和他朋友的对话。
朋友认为老李对 Serverless
判了“死刑”。
不过老李的想法可能代表了很多人对Serverless的“落后”认知,即Serverless 等于FaaS(Function as a Service)。
接下来重点来了,朋友的一些反问,让老李对自以为熟悉的内容,有了重新的认知。
两人对话中提到的 Serverless 究竟是什么呢?
云计算涌现出很多改变传统IT架构和运维方式的新技术,比如虚拟机、容器、微服务,无论这些技术应用在哪些场景,降低成本、提升效率是云服务永恒的主题。
Serverless 即云计算的一种模型 。以平台即服务(PaaS)为基础,无服务器运算提供一个微型的架构,终端客户不需要部署、配置或管理服务器服务,代码运行所需要的服务器服务皆由云端平台来提供。
应用程序会从传统架构转变为事件驱动的、完全解耦的Severless架构,可以将计算和存储分离,能根据计算量和数据量自动伸缩,无论是开发还是运维,都会变得非常简单。
Serverless 的发展轨迹
Serverless 都适用于哪些场景?
主要应用在以下几个场景中:
Web及移动端服务中,可以整合API网关和Serverles服务构建Web及移动后端,帮助开发者构建可弹性扩展、高可用的移动或 Web后端应用服务。
IoT场景下可高效的处理实时流数据,由设备产生海量的实时信息流数据,通过Serverles服务分类处理并写入后端处理。
实时媒体资讯内容处理场景里,用户上传的音视频到对象存储OBS,通过上传事件触发多个函数,分别完成高清转码、音频转码等功能,满足用户对实时性和并发能力的高要求。
无服务器计算还适合于任何事件驱动的各种不同的用例,这包括物联网,移动应用,基于网络的应用程序和聊天机器人等。这里简单说两个场景,方便大家思考。
Serverless 给开发者或用户带来了具体的商业价值:
降低运维需求
Serverless 使得应用与服务器解耦,业务上线前无需预估资源,无需进行服务器购买、配置;
Serverless 也使得底层运维工作量进一步降低,业务上线后,也无需担忧服务器运维,而是全部交给了云平台或云厂商。降低运营成本
Serverless 的应用是按需执行的。应用只在有请求需要处理或者事件触发时才会被加载运行,在空闲状态下 Serverless 架构的应用本身并不占用计算资源;
在使用 Serverless 产品时,用户只需要为处理请求的计算资源付费,而无须为应用空闲时段的资源占用付费。缩短迭代周期、上线时间
Serverless 架构带来的是进一步的业务解耦,应用功能被解构成若干个细颗粒度的无状态函数,开发可以聚焦在单功能的快速开发和上线;
同时拆解后的云函数,也都可以进行独立的迭代升级,更快速的实现业务迭代,缩减功能的上市时间。快速试错
利用 Serverless 架构的简单运维、低成本及快速上线能力,可以来快速尝试业务的新形态、新功能;
利用 Serverless 产品的强弹性扩容能力,在业务获得成功时,也无需为资源扩容而担心。
Serverless 的问题
对于企业来说,支持Serverless计算的平台可以节省大量时间和成本,同时可以释放员工,让开发者得以开展更有价值的工作,而不是管理基础设施。
另一方面可以提高敏捷度,更快速地推出新应用和新服务,进而提高客户满意度。
但是Serverless不是完美的,它也存在一些问题,需要慎重应用在生产环境。
不适合长时间运行应用
Serverless 在请求到来时才运行。
这意味着,当应用不运行的时候就会进入 “休眠状态”,下次当请求来临时,应用将会需要一个启动时间,即冷启动时间。如果你的应用需要一直长期不间断的运行、处理大量的请求,那么你可能就不适合采用 Serverless 架构。
如果你通过 CRON 的方式或者 CloudWatch 来定期唤醒应用,又会比较消耗资源。
这就需要我们对它做优化,如果频繁调用,这个资源将会常驻内存,第一次冷启之后,就可以一直服务,直到一段时间内没有新的调用请求进来,则会转入“休眠”状态,甚至被回收,从而不消耗任何资源。
完全依赖于第三方服务
当你所在的企业云环境已经有大量的基础设施的时候,Serverless 对于你来说,并不是一个好东西。当我们采用某云服务厂商的 Serverless 架构时,我们就和该服务供应商绑定了,那么我们再将服务迁到别的云服务商上就没有那么容易了。这些也将带给我们一些额外的成本,可能带来的问题会比解决的问题多。
缺乏调试和开发工具
构建复杂
Serverless 很便宜,但是这并不意味着它很简单。AWS Lambda的 CloudFormation配置是如此的复杂,并且难以阅读及编写(JSON 格式),虽然CloudFomation提供了Template模板,但想要使用它的话,需要创建一个Stack,在Stack中指定你要使用的Template,然后aws才会按照Template中的定义来创建及初始化资源。而Serverless Framework的配置更加简单,采用的是 YAML 格式。在部署的时候,Serverless Framework 会根据我们的配置生成 CloudFormation 配置。然而这也并非是一个真正用于生产的配置,真实的应用场景远远比这复杂。
写在最后
云计算经过这么多年的发展,逐渐进化到用户仅需关注业务和所需的资源。比如,通过K8S这类编排工具,用户只要关注自己的计算和需要的资源(CPU、内存等)就行了,不需要操心到机器这一层。
从行业趋势看,Serverless 是云计算必经的一场革命。Serverless架构让人们不再操心运行所需的资源,只需关注自己的业务逻辑,并且为实际消耗的资源付费。可以说,随着Serverless架构的兴起,真正的云计算时代才算到来了。
任何新概念新技术的落地,本质上都是要和具体业务去结合,去真正解决具体问题。虽然Serverless很多地方不成熟,亟待完善。不过Serverless自身的优越特性,对于开发者来说,吸引力是巨大的。相信随着技术的飞速发展,Serverless在未来还有无限可能!
培养实战型IT从业者&你的技能提升好帮手--创想云教育
转载自:https://blog.csdn.net/cc18868876837/article/details/90672971
参考图片:https://mp.weixin.qq.com/s/yqlQESXrlT086rc8ZbMPGA