我在研究 Serverless 的时候,看了很多相关的文章和书籍,其中 Mike Roberts 的 “What is Serverless” 这本书是把事情解释的最清楚,我把这本书的主要内容翻译出来给大家
我们将首先看一看历史,看看是什么原因导致进化出了 Serverless,然后我们将解释一下 Serverless 到底是什么,最后,我们将总结为什么 Serverless 是云计算成长的必然产物,同时也是应用交付方式的巨大的飞跃。
云的诞生
让我们回到2006年, 那时候还没有 iPhone 和移动互联网,Ruby on Rails 是一个非常热门的编程框架,Web 2.0 在当时是互联网最火热的名词。那时候大部分应用程序的后端服务,都是运行在托管或者自建的数据中心中的,物理服务器上的。
2006年8月发生的事情将从根本上改变这种模式。 亚马逊新的IT部门亚马逊的 AWS 宣布推出Elastic Compute Cloud(EC2),EC2是众多基础架构即服务(IaaS)产品中的第一个, IaaS允许公司租用计算资源 (主要是面向互联网应用的虚拟主机),而不是购买自己的服务器, 它还允许人们在几分钟之内就可以获取到主机资源。 EC2的五个主要优势是:
- 降低人工成本。在 IaaS 出现之前,公司需要雇佣有专门技能的人来管理数据中心和里面的物理服务器,他们需要管理从电源和网络,到货架和安装,到修复机器的磁盘等物理问题,到设置操作系统(OS)。 通过IaaS,所有这些都消失了,而是都交给 IaaS 服务提供商,比如 AWS 或者阿里云。
- 降低风险。在管理自己的物理服务器时,经常会遭遇一些意外事件,比如硬件故障,从而导致系统不稳定或者长时间宕机,因为硬件问题很难预测,并且可能需要很长时间才能解决。 通过IaaS,客户虽然仍需要做一些工作来对抗硬件故障发生的风险,但不再需要知道如何修复硬件, 相反,可以简单地在几分钟内申请到新机器实例,并重新安装应用程序,从而限制了这些问题的风险。
- 降低基础设施成本。在大部分情况下,当您考虑电源,网络等成本的时候,EC2实例的成本比运行您自己的硬件便宜,尤其是当您只想临时需要运行主机几天或几周而不是几个月时。
- 扩展性。考虑到IaaS带来的扩展优势,基础设施成本显着下降,通过IaaS,公司在扩展其运行的服务器的数量和类型方面具有更大的灵活性, 不再需要提前几个月预先购买10台高端服务器,相反,您可以从一个或两个低功耗,廉价的实例开始,然后随着时间的推移逐渐扩展您的实例数量和类型。
- 交付时间。在托管服务器的旧时代,为新应用程序采购和配置服务器可能需要数月时间。 如果你想出新的想法,并且希望尽快尝试一下,在传统的方式下很难办到。 使用IaaS,交付时间从几个月缩短到几分钟。
基础设施外包
使用 IaaS ,本质上我们可以认为是基础设施外包的技术。 当我们开发和运营软件时,我们需要做的工作大致可以分为两类:一类是针对我们的需求需要定制的工作,另外一类是和其他公司做的做法类似,比较通用的工作。基础设施就是属于第二种,其范围包括物理的设备,例如运行我们机器,电路,网络等,也包括一些通用的软件功能,比如用户认证。
基础设施外包通常可以由服务提供商(SP)提供。 例如,电力由电力供应商提供,并且网络由互联网服务提供商(ISP)提供,他们通过 2 种模式来减低成本和提高效率:规模化和技术。
几乎所有形式的基础设施外包都通过规模化的模式来降低成本,把好多工作打包在一起批量的来做,成本比单独一件一件的去做,效率要高太多了。例如,AWS 可以以远远低于小公司的价格购买相同规格的服务器,因为 AWS 一次性购买成千上万的服务器,而不是购买几十台服务器。 同样,AWS 的每台服务器运营成本远低于自建 IDC 的公司。
基础设施外包通常也部分归因于技术创新。 比如 EC2 ,是通过硬件虚拟化的技术来实现的。在IaaS出现之前,一些IT供应商已经开始允许公司来按月来租用物理服务器,显然,EC2 的按小时租用主机的方式更具吸引力,而且,虚拟化技术可以将物理服务器细分为许多更小的,快速启动和关闭的虚拟机(VM),这样 IaaS 才变得可行。
基础设施外包与 IaaS 的五大好处完全一致:
- 降低人工成本 :减少人员,减少维护基础设施工作所需的时间
- 降低风险 :消除了一部分对特殊技能专家的需求,并且能够获得及时的运营支持能力
- 降低资源成本 :同样功能的成本更低
- 提高扩展的灵活性:可以访问更多资源和不同类型的类似资源,而不会造成重大损失或浪费
- 缩短交付周期:缩短从新想法到生产可用性的交付时间
当然,基础设施外包也有其缺点和局限性,我们将在后面部分介绍。
原文链接: Serverless 系列 (1): 云的诞生和基础设施外包 - 知乎