微服务方兴未艾,Serverless横空出世。
关于Serverless,网上众说纷纭,本人也是前几个月刚刚了解到Serverless,但第一次看到Serverless就感觉这应该就是云计算的未来,由于还处于很早期的阶段,毫无疑问,Serverless还有很多缺点,如实时性不足、运行时长限制等,但相信随着技术的进步,这些问题都会逐步解决,本文只谈谈Serverless相对传统基础设施的优势,以及为什么Serverless很可能是云计算的未来趋势。
Serverless通常被翻译成无服务器架构,它是一种事件驱动的函数级计算服务,同时也是一种极致的微服务设计,弹性伸缩能力无与伦比。
Serverless平台是一种高度抽象的代码运行环境,它能直接冷启动一段逻辑代码,既简单易用又无比强大,用户无需管理服务器,仅仅写出业务逻辑代码就能即刻运行。
目前Serverless的主要形态是FaaS(Function as a Service),国外有AWS Lambda、Azure Functions、Google Cloud Functions等,国内阿里云、腾讯云等都提供了FaaS服务。
一切皆因成本
大学时无意中在图书馆看到一本书《问道云计算》,书中一个观点令人印象深刻,作者认为云计算就像是国家电网,通用的计算服务将会成为像电力这样的社会基础设施。
现在用电很方便,牵根电线安个电表就行了,你不开电器电表就不会转,每月电表转多少国家电网收你多少钱,这些都太平常不过了,然而这要放到云计算,简直不可思议。
试想如果你家的电表换成以时间计费,你愿意么?也就是给你牵了根电线,然后不管你用没用、用多少,每时每刻都要给你计费,而且电力功率还有限制(按你购买的云服务CPU核数、内存等),超出功率就给你断闸限电······ 你可能会惊呼:这TM就是赤裸裸的抢劫啊!
然而现在的云计算公司就是这么干的,你按CPU核数、内存、带宽买云服务,不管你用没用、用多少,每时每刻都要给你计费,而且始终按最高“功率”计费。
但这也并不代表云计算公司多么暴利,虚拟机成本本来就这么高,容器成本也不低,为此AWS很早就提供了EC2竞价实例,现在很多云计算公司都推出了按秒计费的云服务器,但这依然还是延续着那种粗暴的计费方式,成本依旧高昂。
在所有的经济活动中,成本一定是首要考虑的因素之一,Serverless对传统云服务器的颠覆就在于它极大的成本优势,它能精确地按计算量来计费,就像电表按用电量计费,与时间无关一样,避免了虚拟机、容器大量的计算资源闲置浪费,对普通用户来说,成本上可以秒杀虚拟机和容器,能够大幅降低云计算服务的价格。
云计算的门槛
现在的云服务就像是早期的发电站一样,提供的是不同电压不同功率的电力,你得自己买变压器、自己去搭高压线、自己去捣腾变压器电压频率,然后才能用,serverless则是直接让国家电网给你220V 50Hz的电力,你直接插上插头就能用了。
Serverless就像插座一样即插即用,极大地降低了云计算的接入使用门槛,通过FaaS加API网关基本上可以重构大部分的企业级应用。
未来在Serverless平台上创建高可用、高可扩展性的微服务将是异常简单的事情,只写点业务代码就行了,你根本不用去考虑架构、扩展、并发之类的问题。因此有了Serverless,普通人完全没必要花大价钱买云主机或容器服务,既麻烦又浪费。
未来Serverless很可能取代虚拟机和容器,成为云计算的主流形态,云计算用户可能也不会再接触虚拟机和容器了,直接面向Serverless开发就行了。
此外Serverless基于事件驱动,部署升级比容器更快,这在敏捷开发、持续集成中更有优势。
IT的基础设施
要成为基础设施,首先是要让人放心,但目前云计算依然是一件让人操心的事情,开发部署应用时你需要考虑可扩展性、高可用性,每个服务一般都要部署多个实例,还要做服务发现、负载均衡、容错断路等,容器还要用Kubernetes管理集群······
但对开发人员而言,他们只想专注于业务逻辑,并不想为服务器管理和运维有关的基础设施问题操心。
Serverless几乎把这些IT的基础设施问题一次性解决了,Serverless天然具备高可用、完全的弹性伸缩等特点。
国外的工程师给 Serverless 打出一句口号就是:
Focus on your application, not your infrastructure.
熵的转移
从单机到分布式集群,从虚拟机到容器,从单体应用到微服务架构,无论IT系统如何演变,系统的复杂性都不会降低,而且还会呈指数级增加,这就像物理世界的熵增加原理一样,系统只会演变得越来越复杂和难以管理。
实际中应用开发越来越简单是因为我们不断把复杂性从上层转移到下层,最终通过自动化程序把复杂性从人转移给了机器,是机器最终承担了底层越来越复杂的重担,通过这样的复杂性转移就能不断降低IT系统的成本。
Serverless对传统的IT架构是颠覆性的,它更彻底地把复杂性转移给了基础设施,把IT系统的熵不断转移给机器,剩下的只是业务的复杂性。
重新定义云应用
传统的应用都是常驻内存型,每个应用启动时都需要开辟自己的进程并常驻在CPU、内存中,这种应用不仅长时间占用硬件资源,而且启动速度很慢,例如在容器环境中,使用Java开发的微服务启动速度明显偏慢,而短时间、快速启动的函数单元则具有明显优势。
Serverless一个了不起的地方就是它的应用不是常驻内存的,只有你去唤醒它,触发它的事件时才会占用计算资源,其他时间都是退出硬件静静地躺在硬盘上的文件而已。
很多人以为提供虚拟机、容器管理就是云计算了,以为虚拟机容器就能把计算资源抽象出来了,那其实和以前的服务器租赁没啥区别,正如《问道云计算》书中所说,它并没有构建出通用的计算资源池,真正的云计算应该像Serverless这样,对硬件基础设施进一步抽象,构建出通用的计算资源池。从这个角度来看,Serverless在重新定义云计算的形态。
除了云基础设施,Serverless同时也在重新定义云应用,传统的软件形态可能必须重构,运行在Serverless平台上的函数式应用可能才是云应用的应有形态。
展望Serverless的未来
未来的Serverless平台上,通过函数式应用调起硬件资源,不管底层是CPU、GPU、FPGA还是ASIC,都可以通过FaaS提供计算服务;上层都是统一的函数式应用,不管你是普通的web服务、多媒体处理还是神经网络训练,都可以通过FaaS获取计算服务。
当然目前来看,Serverless还远未成熟,但从未来来看,Serverless必将是云计算的一道曙光,甚至是云计算的一场革命。
扫一扫关注我的微信公众号