AWS 15 年(1):从 Serverful 到 Serverless
2006年,AWS发布了其第一个Serverless存储服务S3和第一个Serverful计算服务EC2,这也是AWS正式发布的前两个服务,开启了云计算波澜壮阔的旅程。2014年,AWS发布了业界第一个Serverless计算服务AWS Lambda。在今年(2021年)的AWS re:Invent大会上,AWS又发布三个Serverless新品:Redshift Serverless、EMR Serverless和MSK Serverless。AWS的15年发展史(2006到2021年),也是一部AWS创造和深耕Serverless的历史,一部从Serverful不断向Serverless演进的历史。
那么,为什么AWS服务要不断从Serverful演进到Serverless呢?在AWS心中到底Serverless是什么呢?为什么AWS一直不遗余力地推进Serverless呢?Serverless到底是一种技术模式还是商业模式呢?对云计算行业影响如何呢?以下内容是笔者和几个业界朋友讨论后的成果,总结后分享出来。
一、AWS Serverless是什么?
在看什么是Serverless之前,我们来看看典型的Serverful服务EC2。在笔者看来,EC2和在用户自己数据中心内的物理服务器或虚拟机没有本质区别,主要区别只是位置变了(从用户数据中心挪到了AWS数据中心),以及管理角色变了(用户自己管理变为AWS托管),而用户还是要负责EC2服务器的选型、确定规格、配置和运维,及其生命周期管理。
而Serverless则是一个全新物种。在AWS Serverless Q&A页面(https://aws.amazon.com/cn/serverless/faqs/)中,AWS是这么定义Serverless的:
no server management:用户不需要管理服务器
pay-for-value services:按价值付费
continuous scaling:能自动持续扩容
built-in fault tolerance:内置高可用和容错能力
这定义非常简洁。简而言之,AWS Serverless服务就是客户不需要自己管理服务器(Server)的服务。这不是说这些服务就不需要Server,而是AWS把这些服务与Server相关的事情都替客户干了。
AWS已有的Serverless服务如下表所列:
领域 |
Serverless 服务 |
计算 |
AWS Lambda,AWS Fargate |
程序集成 |
Amazon EventBridge,Amazon SNS,AWS Step Functions, Amazon SQS, Amazon API Gateway, AWS AppSync |
存储 |
AWS S3,Amazon DynamoDB,Amazon RDS,Amazon Aurora Serverless |
分析 |
Redshift Serverless,EMR Serverless,MSK Serverless |
实际上,AWS一直在做从Serverful到Serverless持续进化的过程:
(till 2019)
一服务被Serverless化后会带来什么变化呢?以EMR Serverless为例,AWS官网中的下图将其与托管EMR服务做了对比。用户在使用托管EMR服务时,首先需要确定实例的规格和集群规模,然后创建集群并配置集群参数,再提交job,任务处理完毕后销毁集群。而使用EMR Serverless服务时,用户只需要创建应用、提交job,集群的事情完全由AWS负责。
利用Serverless服务开发的应用就是Serverless架构的应用程序。在下面这个例子中:
每当一个新的帖子文本文件被添加到 S3 存储桶中,一个专用的 API 网关就会触发一个 Lambda 函数1,该函数负责初始化mp3文件生成的过程,并将信息的副本存储在 DynamoDB 中。
函数1还向 SNS 发布消息,触发 Lambda 函数3。这个函数调用 Amazon Polly 接口,将文本转换成与文本相同语言的mp3音频,并将音频文件保存在S3存储桶中,并将存储桶中的地址信息保存到DynamoDB的相应信息的记录中。
函数2则负责从Dynamodb中获取文本文件的完整信息,包括对应的mp3音频在S3存储桶中的地址。
二、Serverless对AWS客户的价值:节省成本、减少管理和技术负担、加快应用交付速度
(一)节省成本
国内某公有云厂商对其1000多云客户进行了资源利用情况分析,抽样超过一万计算节点发现,42%的节点资源利用率低于10%,72%的节点资源利用率低于20%。在AWS上,许多客户一直都只使用 EC2实例可用容量的10-20%。这说明,大部分公有云用户都存在一定程度的资源浪费,这一方面是在浪费用户自己的钱,另一方面云服务商的服务器空转导致不环保。
AWS Serverless服务能根据任务处理的需要而自动增减服务器资源,用户只需为所用资源付费。因为这些资源是真正为用户创造价值的资源,没有资源被浪费,因此,AWS将这种付费模式称为“按价值付费(Pay-for-value)”。此外,无服务器架构可以降低总体拥有成本(TCO) ,因为许多集群的网络、安全和配置调优等管理任务也不再需要了。
这是因为Serverless架构的服务和应用采用事件驱动(Event-driven)架构,只有在任务处理启动后,AWS才会创建必要的Server资源,并在处理过程中自动调整资源,处理完毕后就释放资源。
从这原理出发,我们能看出来,通常认为Serverless服务只适合于低频场景,因为每次Server的冷启动会带来一定的应用时延,这会带来不好的用户体验。但是,在特定场景中,体验要求可以稍微降低一点,而省钱是主要的需求。另一方面,Serverless免去了用户配置、优化、运维服务器集群的负担,简化了用户操作,这又提升了用户体验。
在https://www.simform.com/blog/aws-lambda-pricing/中,作者对比了两种场景下AWS Lambda和EC2的费用:
在图1所示的低频场景中,每个月只进行2万次处理,此时Lambda大大节省成本。
在图2所示的高频场景中,每个月要进行3千万次处理,Lambda成本远高于EC2。
(图1)
(图2)
(二)降低技术和管理负担
从企业管理者角度来看,使用Serverless服务,不需要创建、配置和管理服务器集群,也就不需要这方面的技术人员,这也能降低使用门槛、人力成本和管理负担。
从开发人员角度来看,Serverless让开发者不用关心繁琐的基础设施运维工作,使开发者可以把更多的精力放在核心业务的实现上。因此,无论是前端开发者,还是后端开发者,Serverless都可以帮助他们提升效率,降低交付时间。
可以说,Serverless是云计算的未来,是整个软件和应用架构的未来,符合“云计算让应用越来越简单”这个大方向。
(三)加快应用交付速度
有了Serverless后,云服务厂商底层架构承担的事情越多,业务层面需要关注的架构和运维工作就越少,应用交付的时间就越快。
在AWS官网中,AWS宣称使用Serverless服务能加快应用交付速度。其Coca-Cola的案例中,使用 AWS Lambda 等无服务器构建块,1 周内即开发出应用原型,在 150 天内将 Web 应用程序从原型扩展到 10000 台机器。
三、Serverless对AWS自己的价值:讨好用户、施压追随者、环保标杆
AWS为什么一直不遗余力地推广Serverless呢?可能有以下几个原因:
AWS是在践行其“以客户为中心”的理念:一方面,Serverless是一种新型云资源使用模式,对低频场景的客户来说能切实降低云成本;另一方面,Serverless又能减轻用户负担、降低使用门槛、优化用户体验。
Serverless架构下,服务器资源颗粒度会更细,更有利于填充其资源池的波峰,提高服务器使用率。而且,节省出来的服务器可以通过Spot Instance方式售卖给客户。这能提升AWS的毛利率。
AWS服务价格比较贵,所以搞Serverless对低频客户的成本削减帮助会很大,效果会很显著,能收到更多客户点赞,俘虏更多用户的芳心,可收获更多成本敏感型新用户。
AWS净利润超过20%,有足够的利润空间来承受可能的利润下降。
Serverless能减少空闲服务器空转,这将能降低碳排放,这符合环保主义者的要求,有助于树立AWS的环保形象。
有助于施压追随者。
为什么说Serverless能帮助AWS施压追随者呢?
AWS做Serverless的榜样在先,用户能得到切实的好处,追随者不得不跟进。
本来追随者为了追赶AWS,往往定价降低,或者折扣很大,大规模上Serverless后收入减少将对其财务带来很大压力。
追随者没有AWS那么大的规模和那么强的运营能力,大规模上Serverless后对其财务压力会进一步增大。
四、Serverless的路还很长
一方面,与其说Serverless是一种新技术模式,不如说它是一种新商业模式。AWS搞Serverless确实是一着好棋,既讨好了用户,又施压了追随者,还讨好了环保主义者,还还进一步强化了其创新引领者的形象。这既是AWS创新能力的体现,也是其以用户为中心的理念的体现。
另一方面,Serverless的路还很长,因为还有大量问题待解决,比如冷启动时间比较长、函数调试手段缺乏、适用场景有限、产品种类较少、应用尚未推广开来、尚未形成开发者大群体、缺乏业界统一标准等问题。这些问题还需要AWS和业界继续努力。
相信AWS会发布更多更好的Serverless服务,相信AWS会持续优化Serverless应用架构及模式,相信有越来越多用户采用Serverless,相信云上应用开发会变得越来越简单高效。
感谢您的阅读,欢迎关注我的微信公众号!
AWS 15 年(1):从 Serverful 到 Serverless的更多相关文章
- AWS 15年(2):云原生兴起
AWS创立云计算15年来,没有一个行业不跟云计算相关,没有任何一个颠覆性创新缺少云计算的参与,云已经是不可逆的滚滚洪流. AWS这15年,是云原生服务从无到有再到基本成熟的15年,是云原生应用兴起的1 ...
- 年中盘点 | 2022年,PaaS 再升级
作者丨刘世民(Sammy Liu)全文共7741个字,预计阅读需要15分钟 过去十五年,是云计算从无到有突飞猛进的十五年.PaaS作为云计算的重要组成部分,在伴随着云计算高速发展的同时,在云计算产业链 ...
- [RN] 03 - Resource Collection & AWS Auth
那些资源 一.三个例子 iReading Bilibili-React-Native ZhiHuDaily-React-Native 二.IM 例子 1. React Native Socket.io ...
- 暑期 2021 | Serverless Devs 最全项目申请攻略来啦!
Serverless 是近年来云计算领域热门话题,凭借极致弹性.按量付费.降本提效等众多优势受到很多人的追捧,各云厂商也在不断地布局 Serverless 领域.但是随着时间的发展,Serverles ...
- [翻译] 使用 Serverless 和 .NET Core 构建飞速发展的架构
原文:Fast growing architectures with serverless and .NET Core 作者:Samuele Resca Serverless 技术为开发人员提供了一种 ...
- Serverless 的初心、现状和未来
作者 | 不瞋 导读:Serverless 是如何产生的?当前有哪些落地场景?Serverless 的未来又将如何?本文分享了阿里云高级技术专家不瞋对于 Serverless 的看法,回顾其发展历程, ...
- 6岁!是时候重新认识下Serverless了
一.背景 Serverless 概念从2012年开始提出,真正推出相关云产品是2014年AWS推出Lambda.如果我们将 Serverless 比作一个婴儿,那么它已经6岁了. 虽然业界对Serve ...
- docker“少折腾”
1.docker镜像加速 新版的 Docker 使用 /etc/docker/daemon.json(Linux) 或者 %programdata%\docker\config\daemon.json ...
- CNCF CloudNative Landscape
cncf landscape CNCF Cloud Native Interactive Landscape 1. App Definition and Development 1. Database ...
随机推荐
- A Child's History of England.10
In the next reign, which was the reign of Edward, surnamed The Elder, who was chosen in council to s ...
- A Child's History of England.36
CHAPTER 11 ENGLAND UNDER MATILDA AND STEPHEN The King was no sooner dead than all the plans and sche ...
- 关于浏览器,从输入URL到呈现页面过程!(主讲TCP/IP协议)
一.文本对话--从请求到响应 我们在浏览器中输入一个 URL,回车之后便会在浏览器中观察到页面内容.实际上这个过程是: (1)浏览器向网站所在的服务器发送了一个 Request(请求) (2)网站服务 ...
- Maven 学习第一步[转载]
转载至:http://www.cnblogs.com/haippy/archive/2012/07/04/2576453.html 什么是 Maven?(摘自百度百科) Maven是Apache的一个 ...
- docker创建tomcat容器无法正常访问
记一次创建tomcat docker容器后访问是404,进入到tomcat docker容器后发现webapps是空的 1.挂载 docker run -v localConfigFile:/cont ...
- 软件测试人员必备的linux命令
1 目录与文件操作1.1 ls(初级)使用权限:所有人功能 : 显示指定工作目录下之内容(列出目前工作目录所含之档案及子目录). 参数 : -a 显示所有档案及目录 (ls内定将档案名或目录名称开头为 ...
- Does compiler create default constructor when we write our own?
In C++, compiler by default creates default constructor for every class. But, if we define our own c ...
- SpringIOC原理浅析
1. IoC理论的背景我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑. 图1:软件系统中耦合的对象 如果我们打开机械 ...
- python3约瑟夫环问题
问题描述:n个人围成一个圈,从第一个人开始数1,数到第k个出局,然后下一个人继续从1数,求出局人编号 思路:将所有人编号放到数组里,一个人出局后,下一个人加上k对数组长度求余,得出下一个要删除的编号. ...
- C++STL标准库学习笔记(五)set
前言: 在这个笔记中,我把大多数代码都加了注释,我的一些想法和注解用蓝色字体标记了出来,重点和需要关注的地方用红色字体标记了出来,这一篇后面主要都是我的记录了,为了防止大片蓝色字体出现,后面就不改蓝色 ...