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架构的应用程序。在下面这个例子中:

  1. 每当一个新的帖子文本文件被添加到 S3 存储桶中,一个专用的 API 网关就会触发一个 Lambda 函数1,该函数负责初始化mp3文件生成的过程,并将信息的副本存储在 DynamoDB 中。

  2. 函数1还向 SNS 发布消息,触发 Lambda 函数3。这个函数调用 Amazon Polly 接口,将文本转换成与文本相同语言的mp3音频,并将音频文件保存在S3存储桶中,并将存储桶中的地址信息保存到DynamoDB的相应信息的记录中。

  3. 函数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呢?可能有以下几个原因:

  1. AWS是在践行其“以客户为中心”的理念:一方面,Serverless是一种新型云资源使用模式,对低频场景的客户来说能切实降低云成本;另一方面,Serverless又能减轻用户负担、降低使用门槛、优化用户体验。

  2. Serverless架构下,服务器资源颗粒度会更细,更有利于填充其资源池的波峰,提高服务器使用率。而且,节省出来的服务器可以通过Spot Instance方式售卖给客户。这能提升AWS的毛利率。

  3. AWS服务价格比较贵,所以搞Serverless对低频客户的成本削减帮助会很大,效果会很显著,能收到更多客户点赞,俘虏更多用户的芳心,可收获更多成本敏感型新用户。

  4. AWS净利润超过20%,有足够的利润空间来承受可能的利润下降。

  5. Serverless能减少空闲服务器空转,这将能降低碳排放,这符合环保主义者的要求,有助于树立AWS的环保形象。

  6. 有助于施压追随者。

为什么说Serverless能帮助AWS施压追随者呢?

  1. AWS做Serverless的榜样在先,用户能得到切实的好处,追随者不得不跟进。

  2. 本来追随者为了追赶AWS,往往定价降低,或者折扣很大,大规模上Serverless后收入减少将对其财务带来很大压力。

  3. 追随者没有AWS那么大的规模和那么强的运营能力,大规模上Serverless后对其财务压力会进一步增大。

四、Serverless的路还很长

一方面,与其说Serverless是一种新技术模式,不如说它是一种新商业模式。AWS搞Serverless确实是一着好棋,既讨好了用户,又施压了追随者,还讨好了环保主义者,还还进一步强化了其创新引领者的形象。这既是AWS创新能力的体现,也是其以用户为中心的理念的体现。

另一方面,Serverless的路还很长,因为还有大量问题待解决,比如冷启动时间比较长、函数调试手段缺乏、适用场景有限、产品种类较少、应用尚未推广开来、尚未形成开发者大群体、缺乏业界统一标准等问题。这些问题还需要AWS和业界继续努力。

相信AWS会发布更多更好的Serverless服务,相信AWS会持续优化Serverless应用架构及模式,相信有越来越多用户采用Serverless,相信云上应用开发会变得越来越简单高效。

感谢您的阅读,欢迎关注我的微信公众号!

AWS 15 年(1):从 Serverful 到 Serverless的更多相关文章

  1. AWS 15年(2):云原生兴起

    AWS创立云计算15年来,没有一个行业不跟云计算相关,没有任何一个颠覆性创新缺少云计算的参与,云已经是不可逆的滚滚洪流. AWS这15年,是云原生服务从无到有再到基本成熟的15年,是云原生应用兴起的1 ...

  2. 年中盘点 | 2022年,PaaS 再升级

    作者丨刘世民(Sammy Liu)全文共7741个字,预计阅读需要15分钟 过去十五年,是云计算从无到有突飞猛进的十五年.PaaS作为云计算的重要组成部分,在伴随着云计算高速发展的同时,在云计算产业链 ...

  3. [RN] 03 - Resource Collection & AWS Auth

    那些资源 一.三个例子 iReading Bilibili-React-Native ZhiHuDaily-React-Native 二.IM 例子 1. React Native Socket.io ...

  4. 暑期 2021 | Serverless Devs 最全项目申请攻略来啦!

    Serverless 是近年来云计算领域热门话题,凭借极致弹性.按量付费.降本提效等众多优势受到很多人的追捧,各云厂商也在不断地布局 Serverless 领域.但是随着时间的发展,Serverles ...

  5. [翻译] 使用 Serverless 和 .NET Core 构建飞速发展的架构

    原文:Fast growing architectures with serverless and .NET Core 作者:Samuele Resca Serverless 技术为开发人员提供了一种 ...

  6. Serverless 的初心、现状和未来

    作者 | 不瞋 导读:Serverless 是如何产生的?当前有哪些落地场景?Serverless 的未来又将如何?本文分享了阿里云高级技术专家不瞋对于 Serverless 的看法,回顾其发展历程, ...

  7. 6岁!是时候重新认识下Serverless了

    一.背景 Serverless 概念从2012年开始提出,真正推出相关云产品是2014年AWS推出Lambda.如果我们将 Serverless 比作一个婴儿,那么它已经6岁了. 虽然业界对Serve ...

  8. docker“少折腾”

    1.docker镜像加速 新版的 Docker 使用 /etc/docker/daemon.json(Linux) 或者 %programdata%\docker\config\daemon.json ...

  9. CNCF CloudNative Landscape

    cncf landscape CNCF Cloud Native Interactive Landscape 1. App Definition and Development 1. Database ...

随机推荐

  1. 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 ...

  2. 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 ...

  3. 关于浏览器,从输入URL到呈现页面过程!(主讲TCP/IP协议)

    一.文本对话--从请求到响应 我们在浏览器中输入一个 URL,回车之后便会在浏览器中观察到页面内容.实际上这个过程是: (1)浏览器向网站所在的服务器发送了一个 Request(请求) (2)网站服务 ...

  4. Maven 学习第一步[转载]

    转载至:http://www.cnblogs.com/haippy/archive/2012/07/04/2576453.html 什么是 Maven?(摘自百度百科) Maven是Apache的一个 ...

  5. docker创建tomcat容器无法正常访问

    记一次创建tomcat docker容器后访问是404,进入到tomcat docker容器后发现webapps是空的 1.挂载 docker run -v localConfigFile:/cont ...

  6. 软件测试人员必备的linux命令

    1 目录与文件操作1.1 ls(初级)使用权限:所有人功能 : 显示指定工作目录下之内容(列出目前工作目录所含之档案及子目录). 参数 : -a 显示所有档案及目录 (ls内定将档案名或目录名称开头为 ...

  7. 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 ...

  8. SpringIOC原理浅析

    1. IoC理论的背景我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑. 图1:软件系统中耦合的对象 如果我们打开机械 ...

  9. python3约瑟夫环问题

    问题描述:n个人围成一个圈,从第一个人开始数1,数到第k个出局,然后下一个人继续从1数,求出局人编号 思路:将所有人编号放到数组里,一个人出局后,下一个人加上k对数组长度求余,得出下一个要删除的编号. ...

  10. C++STL标准库学习笔记(五)set

    前言: 在这个笔记中,我把大多数代码都加了注释,我的一些想法和注解用蓝色字体标记了出来,重点和需要关注的地方用红色字体标记了出来,这一篇后面主要都是我的记录了,为了防止大片蓝色字体出现,后面就不改蓝色 ...