4月26日,阿里云正式推出了函数计算这个微服务产品,在此之前Serverless的概念被炒的极其火热,仿佛大家要欢天喜地进入了微服务的狂欢阶段,不过光有概念很容易晕,今天我带大家一起来细化一下Serverless的基本概念、Serverless跟传统IT架构的对比、Serverless和函数计算的区别,以及函数计算最典型场景都有哪些。
Serverless的基本概念
Serverless是一种基于互联网的技术架构理念,应用逻辑并非全部在服务端实现,而是采用FAAS(Function as a Service)架构,通过功能组合来实现应用程序逻辑。同时,Serverless架构能够让开发者在构建应用的过程中无需关注计算资源的获取和运维,由平台来按需分配计算资源并保证应用执行的SLA,按照调用次数进行计费,有效的节省应用成本。
我画个简单对比图来对比传统IT架构和Serverless的真正区别在哪里:
在该架构中,我们在云服务器上是部署了web容器来解析web图片处理应用,用户通过手机上的APP上传图片,应用程序对图片进行定制,例如按用户属性分类、按区域分类,审核鉴黄图片、以及建立图片索引等个性化数据处理后,把图片存储到云存储中,用户通过最近节点CDN可以读取经过处理的图片,达到图片分享的功能。
当应用上线后,在营销推广后业务量达到高峰值就要考虑云服务器的负载均衡问题,架构就开始演变成集群模式,详见集群架构图:
在这个架构中,我们需要做如下事情:
1.管理云服务器。我们要关心CPU数量、内存大小、IP地址等等系统级的配置。
2.管理云服务器操作系统,为部署容器设置访问策略,操作系统版本以及容器安全补丁也不能忽视,否则竞争对手可能雇佣黑客来攻击我们的系统。
3.配置整套环境的弹性扩容的策略,应对高峰期突发访问量。
4.需要配置云存储、CDN。
5.编写WEB图片处理应用。
Serverless(函数计算)架构图:
如果使用函数计算,用户可以设置云存储的触发器(PutObject事件),当用户上传图片到OSS会立即触发一个函数来处理图片,同样当业务访问量是峰值的时候,函数计算会自动扩容来支撑整个业务量的处理。处理后的数据回传到OSS中,其他用户通过CDN可以访问被处理后的图片。
其中架构图如下:
我随手摘录网文上介绍的Serverless的优势:
1、节约使用成本
在业务突发性极高的场景下,系统为了应对业务高峰,必须构建能够应对峰值需求的系统,这个系统在大部分时间是空闲的,这就导致了严重的资源浪费和成本上升。在Serverless架构下,服务将根据用户的调用次数进行计费,节省了使用成本,同时,用户能够通过共享网络、硬盘、CPU等计算资源,在业务高峰期通过弹性扩容方式有效的应对业务峰值,在业务波谷期将资源分享给其他用户,有效的节约了成本
2、简化设备运维
在原有的IT体系中,开发团队即需要维护应用程序,同时还要维护硬件基础设施;Serverless架构中,开发人员面对的将是第三方开发或自定义的API 和URL,底层硬件对于开发人员透明化了,技术团队无需再关注运维工作,能够更加专注于应用系统开发
3、提升可维护性
Serverless架构中,应用程序将调用多种第三方功能服务,组成最终的应用逻辑。
例如登录鉴权服务,云数据库服务等第三方服务在安全性、可用性、性能方面都进行了大量优化,开发团队直接集成第三方的服务,能够有效的降低开发成本,同时使得应用的运维过程变得更加清晰,有效的提升了应用的可维护性。
Serverless和函数计算的区别
阿里云的函数计算(Function Compute)是基于Serverless这种理论框架下推出弹性海量计算平台,是Serverless的一种实现,函数计算主打的旋律是轻、快、有弹性,从一定意义上来看也可以认为函数计算就是Serverless的一个Paas平台。下面来大致看看函数计算的主要组成部分和基本概念:
包含关系:
函数概念解释:
1、Service有两层意义,一层可以按照业务属性来划分不同的服务专区,方便用户做分类识别,另外一层对执行单元的授权、配置专属日志等,都在service进行配置。
2、一个Service可以设置50组Function,一个Function可以设置10个Trigger,一个Trigger只能被一个Event定义。
3、Function是函数计算最小的执行单位,是核心代码的执行区域。
函数计算的典型用户场景
阿里云函数计算目前是通过事件来触发函数的执行,处理的函数符合执行无状态、执行幂等性等特点。一一来讲解这些典型用户场景:
基于事件触发:
1、IoT应用:设备端通过函数计算来订阅天气信息和空气质量,设备和设备之间无依赖,执行过程中无需记录状态,获取到第三方数据即可返回。
2、WEB应用:某WEB网站在用户注册成功后,会发一封欢迎邮件,通过函数计算把邮件内容定制成模板,每次触发,每次执行都是幂等无状态。
3、图片处理:基于OSS的事件触发,当用户上传的图片转入到某Bucket中后,自动触发函数岁图片进行可定制化处理
4、音频转换文字处理:当用户通过语音来发出某些指令的时候,可以通过函数计算来触发阿里云的ET公开API获取到音频转换成文字的方式。基于云产品场景的触发:
1、OSS(云存储)应用:
A、图片处理:监控Bucket、Object事件(Put、Delete、Get、Head等)触发用户对函数运行,比如图片的转码、水印或者鉴黄后的图片分发到多个区域的Bucket等。
B、日志处理:通过函数计算事件触发,把存放的不同区域的bucket下的日志文件进行汇总,分解,计算,并把计算结果通过回调函数通知Invoke程序。
2、APIGateway的应用:
A、API数据商,通过APIGateway连接函数计算,并从阿里云市场中获取到的数据,例如天气、股票、空气质量等进行数据分析和数据清洗后,通过回调函数返回运算过的数据,达到*定制的功能。同时享受APIGateway高附加值,例如流控、鉴权、监控的功能。
详见下图架构:
B、API代理商:通过APIGateway分发标准化的API接口,建立自己的生态系统,在APIGateway背后调用函数计算把后端对资源和跨产品的能力包装起来(对图片、AI、数据等),形成统一解决方案,例如对空气质量的定制,对多个来源,IOS,Android,WEB,物联网Hub都统一输出。
以上就是对函数计算产品的综述,拥有最新、最辣、最火爆的技术,永远是开发者的终极追求,套用广告词,谁用谁知道!