![](http://www.ctiforum.com/uploadfile/2021/0810/20210810104726823.jpg)
如果你是一个程序员,相信你至少肯定听说过Serverless Computing,ServerlessComputing被认为是继Docker之后又一个可能改变软件开发行业的技术;如果你的工作与云计算有关,你也有很大概率听说过Serverless Computing,Serverless Computing被认为代表了云计算的未来,Serverless Computing才是云计算真正的形态。不管这些说法是否正确,至少说明Serverless Computing是一种被广泛关注的热门技术。
实际上,各大公有云厂商已经积极行动起来。AWS从2014年推出了Serverless Computing服务Lambda,其他厂商也在积极跟进,Azure推出了Azure Function、Google有Google Cloud Function,和它们相比,中国的几个云大厂跟进的步伐稍稍慢了一点,但在2018年左右阿里云、腾讯云、华为云等都纷纷推出了自己的Serverless服务,用户使用量也在快速增长。不久前腾讯云公开的数据,腾讯云的Serverless服务日均调用已经打达到百亿次。
显然,Serverless使用量是与Serverless的市场热度相匹配的。Serverless Computing被认为是继虚拟机、容器之后云计算的第三波浪潮,甚至有人认为Serverless Computing才是云计算的真正的形态。2019 年Serverless Computing就曾被 Gartner 称为最有潜力的云计算技术发展方向,并被赋予是必然性的发展趋势。
Serverless Computing代表云的未来?
Serverless是无服务器的意思,Serverless Computing就是无服务器计算。Serverless Computing当然不是不要服务器,只是软件开发人员无需考虑服务器的管理和运维,只专心于代码本身、专注于代码的业务逻辑实现。
按照 CNCF 对 Serverless Computing的定义,Serverless Computing是指构建和运行不需要服务器管理的应用程序,使用者将代码托管到第三方(云服务商),由托管方按需提供后端服务,然后根据其实际计算量付费,而不必保留和支付固定数量的带宽或服务器数量。
Serverless Computing之所以让软件开发人员感觉兴奋,因为他们不再需要与服务器打交道。此前,为了让应用程序顺利部署到服务器端,需要考虑服务器的容量、带宽等等,这需要软件开发人员付出很多精力。后来有了容器和Kubernetes,让开发人员的工作变得容易了一些,但对于不少人来说还是太难了。而Serverless Computing解放了他们,无需关注这些,主要关心代码。
不过,只是谈开发人员喜欢Serverless Computing,还是小看了它。Serverless Computing更大影响在于它可能是会再次改变云计算行业的游戏规则。众所周知,云计算最着名的一个口号是像用水和用电一样使用IT,但在真正落地时并非如此。云计算最典型的使用方式是,用户根据预估的计算、网络和存储向云服务商购买云主机,在真正使用时,用户不仅要在这些服务器上部署各种软件,在实际使用时用户还要时刻考虑实际用量,和传统计算模式的区别在于没有了基建的负担,采购变方便了,可以随时进行采购,而在实际运营方面与在自己数据中心部署服务器并没有大的区别,同样要为部署、扩容、缩容操心。
而Serverless Computing像插座一样即插即用,极大地降低了云计算的接入使用门槛,通过FaaS加BaaS基本上可以重构大部分的企业级应用。基于Serverless平台上创建高可用、高可扩展性的微服务将是异常简单的事情,只写好业务代码就行了,根本不用去考虑架构、扩展、并发之类的问题,也完全没必要花大价钱买云主机或容器服务,既麻烦又浪费。正因为如此,有人提出Serverless Computing是云计算领域继虚拟机、容器之后第三波技术浪潮,对云计算产业的影响由此可见一斑。
Serverless Computing之优与劣
任何一项技术的流行都是有原因的,Serverless Computing也不例外。Serverless Computing最大的优势可以简单概括为按需付费、弹性伸缩、快速部署。
- 成本效益是Serverless Computing的主要卖点之一。和云计算一样,Serverless Computing可以降低整体 IT 预算的成本,因为没有服务器硬件,维护成本相对较低。而相比于传统云计算,对Serverless Computing云服务提供商通常会根据运行时间向您收费,这个计算可以精确到秒,不再会为不使用的服务付费。腾讯云和阿里云都提到Serverless Computing能实现一半的费用节省。
- 简化运维、实现快速部署。Serverless Computing最大优点是服务器的运维完全交由第三方云服务提供商,这可以显着简化企业的运营工作,使其得以更专注于关键的业务开发。对于开发人员而言,这可以显着提高工作效率,帮助他们充分发挥编码能力。
- 高可扩展性是Serverless Computing的另一优势。使用Serverless Computing后,由于可扩展性规划都交给了云服务提供商管理,如果要在软件开发计划中扩展和引入新功能变得更加容易,根本不必担心服务器、带宽和存储容量是否够用。
同样,和所有技术一样,Serverless Computing也并非完美,特别是作为一项还处于成长过程中的技术,Serverless Computing还面临不小的挑战,其中有技术的也有市场方面的。
毫无疑问,Serverless Computing最被诟病的是冷启动。所谓冷启动是指应用程序首次被调用加载时间过长,影响了用户体验。这个问题比较突出,好在各大云服务商都针对这一点提出了不少解决办法,假以时日这个问题至少会得到缓解。
Serverless Computing面临的第二挑战是安全问题。由于Serverless Computing用户把代码托管给了第三方,也就意味着基本失去了对代码的控制,而第三方往往会在同一台服务器上运行多个用户的代码,这就可能带来安全问题,比如数据泄露。另外,如果服务器受到DDoS 攻击,所有依赖该服务器的客户都会受到影响。
Serverless Computing另一个挑战是调试和监控困难。由于代码托管到第三方,用户根本无法了解后端流程,要调试代码,可能必须逐行(逐步调试)以找出问题所在,这都可能既耗时又令人不快。
不过,在Serverless Computing面临的所有挑战中最受关注的或者说最可能影响用户使用的还是供应商锁定问题。由于缺乏标准,今天用户在一个平台上构建的Serverless Computing程序功能通常很难迁移到另一个服务提供商,在最坏的情况下可能需要重写代码。这就使得用户在选定一个Serverless Computing平台时必须小心确认,其是否具有你需要的(不止是当前可能还有以后)所有功能。
不过,考虑Serverless Computing目前还处于高速成长过程中,假以时日这些问题相信都会得到解决。只要它能让我们以一种资源高效、有效且经济实惠的方式来构建我们的应用程序,创造更多业务价值。随着这项技术的逐步成熟和完善,相信在不久的将来会有越来越多公司选择Serverless Computing。