Serverless从入门到进阶:架构、原理与实践
上QQ阅读APP看书,第一时间看更新

1.2 Serverless的发展历程

本节主要分析Serverless的产生和发展趋势,让读者对Serverless的发展历程有更加清晰的认识。搜索引擎中关键词Serverless的热度可以很好地反映Serverless的技术趋势。图1-1展示了Serverless这个关键词过去5年在谷歌的搜索热度。可以看到,2015~2020年,随着云计算技术的发展和逐步成熟,Serverless的搜索趋势有着爆发式的增长。

014-1

图1-1 谷歌搜索Serverless关键词的趋势图

1.2.1 Serverless的产生

1. 产生背景

随着数字化、信息化的发展,产业互联网进一步渗透到人们生活的方方面面。各行各业逐步和科技紧密结合,通过交付软件提供服务,诞生了餐饮和外卖/点餐系统的结合,出行和打车系统/乘车付费软件的结合等。企业对于软件的需求越来越旺盛,提升软件开发效率、降低软件开发和部署的难度成为开发者持续的追求。基于上述目标,技术的变革和更新从未停止。

2. 软件开发的演变史

说起Serverless的发展历程,可以先看Serverless出现之前传统软件架构的组织形态,便于我们更好地理解为什么Serverless是云计算的革命和趋势。

(1)物理机时代

早期服务通过物理机的方式提供。物理机本身的交付周期长,扩缩容不够灵活,还需要专门配备运维人员提供系统的安装、维护、升级等服务。在这种情况下,部署的最小单元就是物理服务器。

(2)虚拟机时代

随着企业不断提高对软件开发效率的要求,越来越多的企业通过虚拟服务器提供服务。虚拟机基于物理服务器集群,通过对物理机进行虚拟化的方式提供服务。这种方式让用户摆脱了硬件运维,可以更多地关注系统、软件的升级和业务开发。同时,虚拟化的方式让故障迁移变得更加容易,在系统出现故障时可以将虚拟机从一台物理机群迁移到另一台。典型的虚拟化技术有XEN、KVM等。在这种情况下,业务部署的最小单元为虚拟机。

(3)容器时代

虚拟机依然需要用户提前预留资源,而容器技术进一步简化了用户的使用门槛。容器可以将系统内的依赖打包,提供可移植、相互隔离的运行环境。跟随容器也衍生出了非常多的调度、编排工具,Docker就是典型的容器技术。在这种情况下,业务的最小部署单元为容器。

(4)Serverless时代

如果说在容器时代,资源依然需要预留和维护,那么在Serverless时代,底层资源被进一步抽象,服务提供商屏蔽了容器的分配和扩缩容,给客户提供代码托管和运行的平台,即FaaS服务。在这种情况下,业务的最小部署单元为单个函数,并且可以按需使用和付费。

不同时期的软件开发、架构实现方式的变化如图1-2所示。

016-1

图1-2 软件架构的演变

从图1-2可以看出,随着软件开发架构的演变,用户需要关心的部分越来越少,由供应商承担的部分越来越多。在Serverless架构下,用户仅需要关心业务实现,而操作系统、虚拟化和硬件层面的实现则全部交给服务商统一维护,达到了提高软件开发/交付效率、降低成本(资源成本、人力成本)的目的。

1.2.2 Serverless发展里程碑

追本溯源,Serverless概念至今已有10年的历史,并且伴随着云计算的发展而逐步成熟。图1-3梳理了一些Serverless发展历程中的里程碑事件。

017-1

图1-3 Serverless发展里程碑

2006年,伦敦的一家公司发布了名为Zimki的平台,该平台提供了端到端的JavaScript开发能力,并且最早提出了“Pay as you go”的概念,但在商业上并未取得显著成功。

2008年,谷歌发布App Engine服务,用户的开发方式得到了根本的变革,无须考虑预分配多少资源,也无须考虑操作系统的实现。

2012年,一家提供DevOps解决方案的公司Iron.io首次提出了Serverless的概念。

2014年,AWS(Amazon Web Service)率先发布Lambda产品。这是首个落地的Serverless商业化产品。从此,Serverless的概念逐渐进入大众视野,并开始为人熟知。

2016年,Azure Function、GCP(Google Cloud Platform)以及IBM Open Whisk相继发布Serverless计算平台。

2017年,腾讯云和阿里云先后发布了Serverless计算产品——云函数和函数计算;同年,谷歌GCP发布了Firebase产品,提供多端一体化开发的Serverless解决方案。

2018年,腾讯云发布小程序·云开发产品,提供基于小程序的多端Serverless开发方案。

2019年,腾讯云和Serverless.com达成战略合作,共同开发Serverless Framework产品,提供Serverless开发的一站式解决方案。