Serverless 爆火,云计算的下一个范式来了吗?

Serverless
云计算
re:Invent
0
0
> 亚马逊云科技推出4个新的大数据分析无服务器选项,宣告大数据迈向 Serverless 时代,今年的云创新热点又是什么?笔者在此大胆地提出自己的设想,也欢迎大家一起探讨。 # 一、Serverless 概述 在说 `Serverless` 之前,我们先了解一下云计算过去的十年。在过去的十年里, 云计算从 `IaaS`(基础设施即服务)到 `PaaS`(平台即服务)再到现在的 `SaaS`(软件即服务)确实减轻了用户对物理基础设施的管理精力,但留给他们大量的虚拟资源需要管理。 例如:对于批处理任务的负载,如 `MapReduce` 或高性能计算,多路复用可以很好地工作以及如何充分利用它们分配的实例;对于有状态服务,例如企业软件将数据库管理软件系统移植到云中时,用户希望在云中重新创建与本地计算机相同的计算环境,以简化将工作负载移植到云中,它的工作效果不太好。 ![2.png](https://dev-media.amazoncloud.cn/82e276ba33854e37be77faff35ecfdd9_2.png "2.png") 最初,`Cloud1.0` 云厂商都是提供给消费者的服务是资源型(`IaaS`+`PaaS`),对所有计算基础设施的利用,包括处理CPU、内存、存储、网络和其它基本的计算资源已经开发的软件运行环境。作为一个开发中不仅要关注软件还要关注硬件。再来`Cloud2.0` 云厂商提供给消费者的服务是服务型(`PaaS`+`SaaS`),提供给客户的服务是运营商运行在云计算基础设施上的应用程序,把客户采用提供的开发语言和工具开发的或收购的应用程序部署到供应商的云计算基础设施上去。那么下一个十年是`Cloud3.0`是`FaaS`( Function-as-a-Service)吗? | | A | B | C | D | | --- | --- |--- |--- |--- | | 1| 名称 | **Saas** | **Paas** | **laas**| | 2| 概念 |Software-as-a-Service (软件即服务) |Platform-as-a-Service(平台即服务) | Infrastructure-as-a-Service (基础设施即服务) | | 3| 含义 |提供给客户的服务是运营商运行在云计算基础设施上的应用程序,用户可以在各种设备上通过客户端界面访问,如浏览器。消费者不需要管理或控制任何云计算基础设施,包括网络、服务器、操作系统、存储等等; |提供给消费者的服务是把客户采用提供的开发语言和工具(例如 **Java,python,Net** 等)开发的或收购的应用程序部署到供应商的云计算基础设施上去。 | 提供给消费者的服务是对所有计算基础设施的利用,包括处理 CPU、内存、存储、网络和其它基本的计算资源,用户能够部署和运行任意软件,包括**操作系统**和应用程序。| | 4| 其他 |SaaS 是软件的开发、管理、部署都交给第三方,不需要关心技术问题,可以拿来即用。普通用户接触到的互联网服务,几乎都是 SaaS,下面是一些例子。| PaaS 提供软件部署平台 (runtime) 抽象掉了硬件和操作系统细节,可以无缝地扩展 (scaling)。开发者只需要关注自己的业务逻辑,不需要关注底层 | laas 是云服务的最底层,主要提供一些基础资源。它与 Paas 的区别是,用户需要自己控制底层,实现基础设施的使用逻辑。| 那么 `Serverless` 到底是什么?最近几年,技术圈对 `Serverless` 的讨论异常的火热,在业内也有了很多成熟的案例,国外发展比较早,比较有代表性的是亚马逊和谷歌,而在国内各大云厂商巨头都将其定义为集团战略性项目,不遗余力的推广和研发自己的技术。 广义上来说,我们可以将其称为其是一种后端的架构技术,更准确的说他应该是一种后端架构的概念或者思维。后端架构常见的如 `C/S` 架构,互联网的应用基本上都是由最基础的客户端和服务端构成的,那客户端要呈现内容就需要服务器来提供服务。 ![3.png](https://dev-media.amazoncloud.cn/8f8a41fa5c0f4016a1d8bb729838e123_3.png "3.png") 狭义上来说,可以追溯到亚马逊在2015年推出了一个名为 `Amazon Lambda` 服务。`Lambda` 提供了云计算功能,并吸引了对 `Serverless` 的广泛关注。因为它表明云用户只是编写代码,并将所有服务器供应和管理任务留给云提供商。 云厂商提供云功能将其打包为 FaaS(`Function-as-a-Service`),这也代表了 `Serverless` 的核心。云平台也提供了专门的 `Serverless` 框架,以满足特定的应用需求,如 `BaaS`(`Backend-as-a-Service`)。 狭义地说,`Serverless=FaaS+BaaS`:是无服务器的,它必须自动伸缩,而不需要显式的配置,并根据使用量计费。 ![4.png](https://dev-media.amazoncloud.cn/2390627d2bd54f5485e52a572202df17_4.png "4.png") `Serverless` 通过使云资源更易于使用来简化应用程序开发。 举个例子在云环境中,服务计算类似于使用低级汇编语言编程,而 `Serverless` 计算类似于使用高级语言(如 `Python`)编程。 汇编语言程序员计算简单的表达式,如 `C=A+B`,必须选择一个或多个寄存器,将值加载到这些寄存器中,执行计算,然后存储结果。 这反映了服务器云编程的几个步骤,首先提供资源或标识可用资源,然后用必要的代码和数据加载这些资源,执行计算,返回或存储结果,最后管理资源释放。`Serverless` 计算的与高级编程语言相似。高级编程环境自动内存管理使程序员不必管理内存资源,而 `Serverless` 计算使程序员不必管理服务器资源。 # 二、Serverless 的问题 我们前面介绍说了很多的特点,实际上这些也都是的优点,先简单的总结一下:`Serverless` 是可以不用运维的、能够实现自动的弹性伸缩、按量付费来节约成本、那有更高的安全性、易于迭代和部署。 ![5.png](https://dev-media.amazoncloud.cn/73ccd6642f6341c79b5b7ebcf2274164_5.png "5.png") 那就是十分完美的吗?其实不然,并不是它一样也存在很多缺点,了解他的缺点,可以让你今后更好的进行技术选型,决定是否用进行应用开发。 **首先**我们来看第一个,那就是**严重依赖云厂商的能力**。是云厂商打包提供的,所以产品一定适合云厂商绑定,那就因为理念和具体实现之间并没有统一的标准,比如呢 `A` 厂商认为 `Serverless` 的数据库必须使用标准的 `SQL` 规范,而 `B` 厂商则认为数据库可以使用 `SQL` 规范,也可以使用 `json` 文件的存储方案,那这就出现了不同的云厂商实现了不同的接口。我们的同一套代码是没有办法在不同的产品上运行的,所以从一个云平台迁移到另外一个平台的成本是非常高的。 再来,开发调试是比较困难的。因为 `Serverless` 应用依赖的是云服务,而这些云服务的环境,是很难在本地进行搭建的,想要在本地开发调试是比较复杂的。同时目前架构的发展是飞速的,初期阶段 `Serverless` 的开发,调试,部署等工作量也并不完善。 最后一点,就是底层硬件的不确定性。目前的技术实现是以 `FaaS+BaaS` 为主的,我们的应用代码在 `FaaS` 上运行,但 `BaaS` 对我们来说是一个黑盒,其底层的硬件资源是不确定的,某些场景下我们的代码是必须在某种类型的 `CPU` 或者 `GPU` 上运行的,目前厂商并没有提供针对于底层硬件的可选项,所以我们完全不知道服务器的底层硬件到底是使用了什么类型或者什么型号。 **所以,如何解决上述问题,已必将成为各个云厂商都会尽相发力,在各个细分领域布局自己的产品想要分一杯羹。** # 三、亚马逊云科技相关配套设施 五年前,在 `re:Invent 2017` 上,亚马逊云科技开始发布了最初的 `Amazon Aurora Serverless` 预览版。截止到今年,`Amazon Aurora Serverless v2` 得到了正式的发布。那么对于 `Aurora Serverless` 又是什么? ![6.png](https://dev-media.amazoncloud.cn/46c15b25dbc94e8296382351423037af_6.png "6.png") `Amazon Aurora Serverless` 是 `Amazon Aurora` 的按需自动扩展配置。它会自动启动、关闭,并根据应用程序的需求扩展或缩减容量。它使您能够在云中运行数据库,而无需管理任何数据库容量。其将数据层和计算层分开,以便每个层都可以独立扩展。它使用分布式、容错、自我修复的存储和复制,随着您添加更多数据,该复制将自动增长。数据跨单个区域内的多个可用区复制,这有助于在发生可用区故障时提供高可用性。 `Amazon Aurora Serverless v2` 是 `Amazon Aurora` 最新推出的版本,相比于上一代 `V1` 版本有所提升。其中,**重点提升部分包括**: - 资源容量采用原地扩展,使资源容量扩展速度由 `V1` 的分钟级提升到秒级; - `V2` 版本在容量调整时可以做到更细粒度的调整,以 0.5 ACU 作为扩展单元,而 V1 仅支持翻倍扩展; - V2 版本还可以依据多个维度进行容量调整,通过持续的监控和尽可能大的利用缓冲池。 此外,`Aurora Serverless v2` 增加了完整的 `Amazon Aurora` 功能,包括多可用区支持、只读副本和全球数据库等,并支持跨可用区和跨区域的高可用部署和读取扩展。 ![7.png](https://dev-media.amazoncloud.cn/fc6396b08a26480e8a627395a25ef511_7.png "7.png") 所以,`Amazon Aurora Serverless v2` 非常适合各种应用程序。例如,当您的业务快速增长或者是海量多租户场景时,拥有数十万个应用程序的企业、或者是拥有成百上千个数据库的多租户环境的软件即服务(SaaS)供应商,可以使用 `Amazon Aurora Serverless v2` 管理整个 `SaaS` 应用中众多数据库的容量。此外,它也适用于业务吞吐量波动明显的场景,如游戏业务、电商业务、测试环境等,以及无法预估吞吐量的新业务系统。对于大部分时间都处于低谷的业务系统,`Amazon Aurora Serverless v2` 能够为客户有效地节省成本。 ![8.png](https://dev-media.amazoncloud.cn/9fc2378ae391476abfdb86031769c25e_8.png "8.png") 最近,`Amazon EMR Serverless` 现全面推出一款无需管理服务器即可运行大数据应用程序,客户只需选择一个指定的开源框架,`Amazon EMR Serverless` 就会根据工作负载的需求自动预置、管理和扩展所需的计算和内存资源,以及处理大规模分布式数据、执行交互式 `SQL` 查询和运行机器学习应用程序。同时 `Amazon EMR` 支持云中的大多数大数据框架,能够帮助客户更快地运行大数据应用程序和 `PB` 级数据分析,成本低于本地解决方案的一半。 # 四、写在最后 可以预见的是,`Serverless` 未来面临着两个挑战:提高安全性和适应成本。 - `Serverless` 的未来将是促进 `BaaS`。 在 `Serverless` 计算之上实现难以编写的应用程序,如 `OLTP` 数据库(目前亚马逊云科技已经初步实现)或通信原语(如队列),可能会作为所有云提供商提供的更丰富的服务; - 再来会发展新的 `BaaS` 存储服务,扩展在 `Serverless` 上运行良好的应用程序类型。 这种存储将与本地块存储的性能相匹配, `Serverless` 的计算机硬件的异构性比今天为其提供动力的传统 `x86` 微处理器要大得多; - 当然, `Serverless` 将成为云时代的默认计算方式,会可能结束传统的 `C/S` 时代。但是短期时间,服务器云计算不会消失,但随着 `Serverless` 慢慢解决其当前的局限性,这部分云的相对重要性将下降。 扩展阅读: - [Amazon Aurora Serverless v2 正式发布:瞬时扩展应对高要求的工作负载](https://dev.amazoncloud.cn/column/article/6313931e08889232315cda16) - [Amazon Aurora Serverless v2 正式发布:针对要求苛刻的工作负载的即时扩展](https://dev.amazoncloud.cn/column/article/6309dadde0f88a79bcfae806) - [Amazon EMR Serverless 现全面推出 — 无需管理服务器即可运行大数据应用程序](https://dev.amazoncloud.cn/column/article/630b06d776658473a3220006) - [动如脱兔 静若磐石 新一代云原生无服务数据库 Aurora Serverless V2重装上阵](https://dev.amazoncloud.cn/column/article/630b596f76658473a3220019) 文章审核:tsaoyang
0
目录
关闭
contact-us