量子位|一文看懂Serverless:AWS阿里云腾讯云都发力“无服务器架构”( 二 )


Serverless架构类同FaaS , 又做何解?
提及Serverless , 很多人的第一反应都是FaaS+BaaS 。
的确 , 这是Serverless的一种实现形式 , 也是一种比较主流的理解 。
所谓“FaaS+BaaS” , 其实就是函数即服务与后端即服务的结合体 。
具体来说 , BaaS(BackendasaService)可以被解释为“后端即服务” 。
一般是API调用后端或别人已经实现好的程序逻辑 , 通常用来管理数据 。
例如 , 亚马逊RDS可以替代自己部署的MySQL , 当然其中还有各种其它数据库、中间件的作用 。
FaaS(FunctionsasaService)则是函数即服务 , 作为无服务器计算的一种形式 , 当前使用最广泛的当属AWS的Lambada 。
经过长期实践我们认为 , Serverless架构可以提供一种更加“代码碎片化”的软件架构范式 , 而所谓的“函数”(Function) , 则是提供相比微服务更加细小的程序单元 。
进一步来说 , 究竟该如何理解“函数即服务”的概念?
大致上是开发者先将函数定义封装在容器中 , 通过调用函数来实现调用后端存储等服务 。
本质上 , FaaS是一种事件驱动的由消息触发的服务 。
与传统的服务器端软件的不同 , 经应用程序部署到拥有操作系统的虚拟机或者容器中 , 一般需要长时间驻留在操作系统中运行 。
而FaaS则可以直接将程序部署上到平台上 , 当有事件到来时触发执行 , 执行完了就可以消灭 。
更重要的一点 , FaaS产品不需要对特定框架或库进行编码 。
还是以AWSLambda函数为例 , 函数可以在Javascript、Python、Go等 , 也就是任何JVM语言(Java , Clojure , Scala等)或.NET语言中实现;但与此同时 , Lambda函数还可执行与其部署工件捆绑在一起的另一个进程 。
在FaaS环境中 , 用户将函数功能代码上传到FaaS提供商 , 其中对的水平扩展是完全自动弹性的 。
而“函数”还可以代表客户所要执行的每个操作 , 即每个函数完成一个相对简单的业务逻辑 , 一个完整的应用由若干个函数组成 , 主要包括创建、读取、更新以及删除等 。
量子位|一文看懂Serverless:AWS阿里云腾讯云都发力“无服务器架构”
文章图片
目前 , 函数即服务(FunctionasaService , FaaS)是当下Serverless实现的技术基础 。
因为FaaS和Serverless之间关系密切 , 所以FaaS的特点也可以被认为是Serverless平台的特点 , 但如果单纯认为Serverless就是FaaS , 就比较狭义了 。
BaaS时代仅仅以API的方式提供应用依赖的后端服务;而在FaaS时期 , 用户与开发者不再关注底层 , 这么说Serverless繁荣也是合理有据的事儿 。
使用Serverless , 也是一把双刃剑
据实际观察 , 一直以来企业使用Serverless通常会涉及几方面因素 , 其中“减少运营成本”被认为是最直观有效的原因之一 。
的确 , 应用Serverless后 , 企业就无需再为潜在的流量高峰买进大部分时间都可能空闲的服务器机架 , 而是根据流量进行自动伸缩 , 采用按请求量来付费的灵活方式 。
此外“自动按需扩展”可以发挥到极致:随时扩展到当前的使用量 , 消除了意外或者季节性流量高峰的困扰 。
更重要的是 , Serverless不需要关心内存泄露 , 还具备将云数据库、云消息队列等服务囊括在内的完善配套设施 , 极大减少工作量 。
哪怕企业中大部分的开发人员都出身软件 , 对修复保护以及管理并不擅长 , 一样可以做到专注软件开发 , Serverless绝对没问题 。
基于此 , 一直以来国内外都有很多企业致力于提供基于Serverless框架的能力服务 , 接受程度更是水涨船高 , 简单盘点下 , 尤其是几家大型的公有云厂商 。
例如里程碑式的AWSLambda 。
作为AWS针对Serverless架构推出的FaaS云服务 , AWSLambda自2014年上线以后就受到广泛关注 , 除了满足大家对Serverless的期望之外 , 更重要的是AWS平台的成功 。