Serverless会是一场云计算的革命吗

Stella981
• 阅读 325

微服务方兴未艾,Serverless横空出世。

Serverless会是一场云计算的革命吗

关于Serverless,网上众说纷纭,本人也是前几个月刚刚了解到Serverless,但第一次看到Serverless就感觉这应该就是云计算的未来,由于还处于很早期的阶段,毫无疑问,Serverless还有很多缺点,如实时性不足、运行时长限制等,但相信随着技术的进步,这些问题都会逐步解决,本文只谈谈Serverless相对传统基础设施的优势,以及为什么Serverless很可能是云计算的未来趋势。

Serverless通常被翻译成无服务器架构,它是一种事件驱动的函数级计算服务,同时也是一种极致的微服务设计,弹性伸缩能力无与伦比。

Serverless平台是一种高度抽象的代码运行环境,它能直接冷启动一段逻辑代码,既简单易用又无比强大,用户无需管理服务器,仅仅写出业务逻辑代码就能即刻运行。

目前Serverless的主要形态是FaaS(Function as a Service),国外有AWS Lambda、Azure Functions、Google Cloud Functions等,国内阿里云、腾讯云等都提供了FaaS服务。

一切皆因成本

大学时无意中在图书馆看到一本书《问道云计算》,书中一个观点令人印象深刻,作者认为云计算就像是国家电网,通用的计算服务将会成为像电力这样的社会基础设施。

Serverless会是一场云计算的革命吗

现在用电很方便,牵根电线安个电表就行了,你不开电器电表就不会转,每月电表转多少国家电网收你多少钱,这些都太平常不过了,然而这要放到云计算,简直不可思议。

试想如果你家的电表换成以时间计费,你愿意么?也就是给你牵了根电线,然后不管你用没用、用多少,每时每刻都要给你计费,而且电力功率还有限制(按你购买的云服务CPU核数、内存等),超出功率就给你断闸限电······ 你可能会惊呼:这TM就是赤裸裸的抢劫啊!

Serverless会是一场云计算的革命吗

然而现在的云计算公司就是这么干的,你按CPU核数、内存、带宽买云服务,不管你用没用、用多少,每时每刻都要给你计费,而且始终按最高“功率”计费。

但这也并不代表云计算公司多么暴利,虚拟机成本本来就这么高,容器成本也不低,为此AWS很早就提供了EC2竞价实例,现在很多云计算公司都推出了按秒计费的云服务器,但这依然还是延续着那种粗暴的计费方式,成本依旧高昂。

Serverless会是一场云计算的革命吗

在所有的经济活动中,成本一定是首要考虑的因素之一,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的未来

未来的Serverless平台上,通过函数式应用调起硬件资源,不管底层是CPU、GPU、FPGA还是ASIC,都可以通过FaaS提供计算服务;上层都是统一的函数式应用,不管你是普通的web服务、多媒体处理还是神经网络训练,都可以通过FaaS获取计算服务。

当然目前来看,Serverless还远未成熟,但从未来来看,Serverless必将是云计算的一道曙光,甚至是云计算的一场革命。

Serverless会是一场云计算的革命吗

扫一扫关注我的微信公众号

点赞
收藏
评论区
推荐文章
秃头王路飞 秃头王路飞
5个月前
webpack5手撸vue2脚手架
webpack5手撸vue相信工作个12年的小伙伴们在面试的时候多多少少怕被问到关于webpack方面的知识,本菜鸟最近闲来无事,就尝试了手撸了下vue2的脚手架,第一次发帖实在是没有经验,望海涵。languageJavaScript"name":"vuecliversion2","version":"1.0.0","desc
blmius blmius
1年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
技术小男生 技术小男生
5个月前
linux环境jdk环境变量配置
1:编辑系统配置文件vi/etc/profile2:按字母键i进入编辑模式,在最底部添加内容:JAVAHOME/opt/jdk1.8.0152CLASSPATH.:$JAVAHOME/lib/dt.jar:$JAVAHOME/lib/tools.jarPATH$JAVAHOME/bin:$PATH3:生效配置
光头强的博客 光头强的博客
5个月前
Java面向对象试题
1、请创建一个Animal动物类,要求有方法eat()方法,方法输出一条语句“吃东西”。创建一个接口A,接口里有一个抽象方法fly()。创建一个Bird类继承Animal类并实现接口A里的方法输出一条有语句“鸟儿飞翔”,重写eat()方法输出一条语句“鸟儿吃虫”。在Test类中向上转型创建b对象,调用eat方法。然后向下转型调用eat()方
刚刚好 刚刚好
5个月前
css问题
1、在IOS中图片不显示(给图片加了圆角或者img没有父级)<div<imgsrc""/</divdiv{width:20px;height:20px;borderradius:20px;overflow:h
小森森 小森森
5个月前
校园表白墙微信小程序V1.0 SayLove -基于微信云开发-一键快速搭建,开箱即用
后续会继续更新,敬请期待2.0全新版本欢迎添加左边的微信一起探讨!项目地址:(https://www.aliyun.com/activity/daily/bestoffer?userCodesskuuw5n)\2.Bug修复更新日历2.情侣脸功能大家不要使用了,现在阿里云的接口已经要收费了(土豪请随意),\\和注意
晴空闲云 晴空闲云
5个月前
css中box-sizing解放盒子实际宽高计算
我们知道传统的盒子模型,如果增加内边距padding和边框border,那么会撑大整个盒子,造成盒子的宽度不好计算,在实务中特别不方便。boxsizing可以设置盒模型的方式,可以很好的设置固定宽高的盒模型。盒子宽高计算假如我们设置如下盒子:宽度和高度均为200px,那么这会这个盒子实际的宽高就都是200px。但是当我们设置这个盒子的边框和内间距的时候,那
艾木酱 艾木酱
5个月前
快速入门|使用MemFire Cloud构建React Native应用程序
MemFireCloud是一款提供云数据库,用户可以创建云数据库,并对数据库进行管理,还可以对数据库进行备份操作。它还提供后端即服务,用户可以在1分钟内新建一个应用,使用自动生成的API和SDK,访问云数据库、对象存储、用户认证与授权等功能,可专
Stella981 Stella981
1年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
helloworld_28799839 helloworld_28799839
5个月前
常用知识整理
Javascript判断对象是否为空jsObject.keys(myObject).length0经常使用的三元运算我们经常遇到处理表格列状态字段如status的时候可以用到vue