什么是 Serviceless 和 FaaS?

这两年 云原生、Serviceless 和 FaaS 的概念开始火了起来,越来越多的团队开始在这方面进行投入,身在其中,我们当然也要去了解这些技术,或许会给我们开发带来新的变革。

Cloud Native(云原生)

云原生是一种基于云的基础之上的软件架构思想,以及基于云进行软件开发实践的一组方法论。云原生可以分拆为两个词,“云”和“原生”,其中“云”是和本地是相对应的,本地是指传统的的应用是运行服务器主机上,而云是指私有云、公有云和混合云;“原生”就是指土生土长的意思,是指应用在一开始就是基于云进行搭建的,云原生应用有几个基本的特点:微服务、DevOps、容器化等。

Serviceless(无服务器)

Serviceless 字面意思是指无服务器架构,无服务器不是指没有服务器,而是开发者无需关心服务器的维护工作,这些维护工作都是由云服务供应商提供,通过摆脱诸如服务器置备和管理等例行任务,开发人员就会有更多的时间专注于自己的应用开发,除之外,Serviceless 还应该提供自动伸缩功能,可以根据实际的使用情况,自动扩容和收缩服务的配置,甚至收缩到无服务实例的状态,通过事件触发创建实例,另外也应该具有按需付费的特点。

FaaS(函数即服务)

在理解这个概念之前我们先了解 IaaS 和 PaaS。IaaS 全程是 Infrastructure as a Service,基础设施即服务,就是我们通过租用云服务供应商提供的云主机,在云主机上搭建数据库和Web 服务器等,阿里云的 ECS 就属于 IaaS 产品。PaaS 全程是 Platform as a Service,平台即服务,供应商已经为我们搭建好了数据库、Web 服务器,我们可以直接调用数据库,另外我们也只需要把我们的代码上传到 Web 服务器即可完成部署,我们无需关心云服务器的工作等,比如 Google App Engine 就属于 PaaS 产品。

FaaS 的全程是 Function as a Service,函数即服务,在 PaaS 上更进一步,我们都不需要关心应用框架的搭建,我们只需要在供应商已经提供好的应用框架基础下编写函数的代码即可实现应用服务功能,连代码部署我们都不用关心。FaaS 是 Serviceless 一个典型的产品,应该要具备支持多种语言,服务自动伸缩,基于事件触发,按需付费等特点。FaaS的事件触发通常提供2种方式,一种是最常见的HTTP协议,支持GET和POST请求,另外一种是微服务之间的调度协议,通常是RPC协议。

适合场景

  • CPU密集型:当我们需要实现CPU密集型的功能的时候,比如视频转码、音频转码、文件处理等,为了避免影响主服务器的稳定性,可以把消耗大量CPU计算的任务都迁移到函数计算上,运行在沙箱环境中。
  • 瞬时高并发:当双十一来领,或者促销活动的到来,可能会导致短时间出现高并发的问题,如果我们预知流量的到来,我们需要提前部署足够的服务器,当这些粗发活动变成了常态性,比如每个星期定时发放优惠券,运维工作就变成了异常繁琐,如果利用FaaS的自动伸缩特定,当流量到来的时候云平台自动扩张,保证服务稳定。
  • 轻量级服务:对于前端和客户端的开发者,搭建一个后台服务的成本是相对来说较高的,需要更多的学习成本和维护成本,通过FaaS服务可以使用非常低的成本即可搭建一个轻量级服务。

如何更加好使用FaaS?

  • 基础服务BaaS化:由于Serviceless属于无状态服务器,短生命周期,意味着我们不能在服务器维护各种数据库连接的开销,也不能在容器生命周期内保存缓存,也不会在函数容器中搭建复杂的应用框架,所以需要简化基础服务的使用,如对象存储、日志存储、业务服务等,利用这些简化的服务,基于函数的服务就可以通过简单的编码实现各种功能。

优势

  • 多语言支持:FaaS供应商通常会为开发者提供多语言支持,基本会覆盖主流的服务器开发语言,开发者只需要选择自己属于的语言进行开发。
  • 自动伸缩、按需付费:传统的开发我们必须要为峰值预先部署足够的服务器配置和实例数量,然后我们也必须为空闲时间占用的服务而付费,而FaaS根据流量的情况自动伸缩服务实例的数量,不但可以减低突发事件导致的服务压力风险,同时我们只需要为实际占用的时长和配置进行付费。
  • 开发成本低:开发者不再需要关心服务器的维护工作,也不用需要关心服务器框架的搭建,让服务端开发不只是后端工程师的专属,让更多的前端和客户端工程师也可以参与到服务端的开发中来,同时也减少了沟通的环节,让开发更加高效。

劣势

  • 技术受限:由于代码是运行在供应商的服务架构体系,意味着我们需要根据供应商的环境来编写逻辑代码,如果需要更换供应商着要付出更大的成本。
  • 基础服务受限:由于我们无法管理自己的服务器,意味着我们的多数服务(比如数据库)只能根据供应商有什么服务而选择使用,难以定制。
  • 灵活性降低:由于服务器不受我们管理,意味着我们服务基于服务器做一些特点的控制。

FaaS探索的焦点

  • 自动伸缩:由于服务的颗粒度精确到了函数和单个API级别,意味着供应商可以准确地监测到并发量和内存占用和CPU的运行时长,供应商可以根据实际的调用情况自动扩展和收缩服务器的数量。
  • 快速弹起:如果当前是无任务无请求进来,FaaS服务实际上是不需要处于运行状态,完全可以处于停机状态,节省成本,由于服务的冷启动是需要一定的时间,当收到任务的时候如何快速弹起服务是非常重要。

Serviceless 产品

Serviceless FaaS

FaaS 是一个非常典型的 Serviceless 的产品,上文也详细介绍了FaaS的特点。

Serviceless PaaS

Serviceless除了FaaS,目前也有部分供应商提供应用级别的Serviceless PaaS平台,提供App Engine 和容器部署方式,PaaS 本身也有Serviceless一些特点,都是无服务器(开发者无需维护服务器),都可以实现快速扩容和收缩实例数量,但是不同的是Serviceless PaaS弥补了传统 PaaS 无法自动扩容收缩的能力,甚至可以收缩到无实例运行状态。好比如Serviceless PaaS是自来水,而传统PaaS是桶装水,自来水即开即用,而桶装水虽然也很方便,但是需要开发者预先计划好需要桶装水的数量。但是为了保证服务的连续性和快速响应,Serviceless PaaS通常会提供一个最小实例在维持工作,可以根据时间策略或者服务器的占用情况自动扩容和收缩服务实例,而传统PaaS是需要开发者手动进行扩容和收缩服务数量。所以在 Serviceless 加持下,PaaS的优势发挥的淋漓尽致。

总结

很多人分不清Serviceless和FaaS的区别,实际上FaaS只是Serviceless架构的一种产品形态。Serviceless FaaS虽然看起来很先进,可以在其有限的领域下,提供即开即用的功能,开发人员甚至不会用服务器开发即可完成一个web api的开发,比较适合前端和客户端的开发人员,但是由于缺少了灵活性,应用的场景其实是很有限,不适合用于主服务程序的开发。我认为Serviceless PaaS才是未来,在不丢失灵活性的情况下,提供弹性伸缩和按需付费,把Serviceless的特点发挥得淋漓尽致。Serviceless和FaaS没有一个绝对的定义,随着技术的演进,也会有新的解读,未来也会有更多的可能,更大的想象空间,所以我们不必拘束于当前的局限,一起向前看吧。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容