从云计算到函数计算
函数计算,你的名字
云计算,是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需求提供给计算机各种终端和其他设备,使用服务商提供的电脑基建作计算资源,因此用“云”来指代“网络计算资源”这是一种非常恰当的比喻。
美国国家标准和技术研究院的云计算定义中明确了三种服务模式,分别是软件即服务(SaaS)、平台即服务(PaaS)和基础设施即服务(IaaS)。阿里云的产品能全部覆盖这三种服务模式,如果分别举个例子那么应该是:宜搭(SaaS加速器)、函数计算FC和云服务器ECS。
Serverless计算服务,其基于PaaS又不同于PaaS,因而更多时候被称作功能即服务(Function-as-a-Service,缩写为 FaaS)。函数计算FC是阿里云的事件驱动的全托管Serverless 计算服务产品,我想函数计算Function Compute的名字就是这样诞生的。
函数计算,直达应用的核心
我们知道应用的核心是逻辑和存储,而代码主要实现业务逻辑和持久化。
函数计算FC总体上是FaaS BaaS:
函数指计算函数,包含了业务逻辑部分,这一部分由FaaS来实现;
而数据持久化、消息推送和账户系统等,由BaaS来实现。
Serverless服务并不是没有服务器了,而是作为一种新的架构让我们在以往传统应用维护上的工作得到进一步降低。
以常见的主要基于云服务器的Web服务为例,大致有这样的流程:
· 服务器性能能否应对可能突然爆发的用户请求,何时扩容?
· 服务器上的脚本和业务代码等多少还在健康运行?
· 外部网络安全威胁到来时如何保障数据安全?
面对诸多问题确实会让人头大,但如果我们摒弃基于服务器的架构而转用Serverless的架构之后,服务的过程就变成了这样:
当客户端和数据库未发生变化的前提下,服务器变成了Serverless的架构。工作的分工发生了巨变。例如,之前需要开发团队维护的路由模块以及鉴权模块都将接入服务商提供的API网关系统以及鉴权系统,开发团队无须再维护这两部分的业务代码,只需要持续维护相关规则即可,再也不用担心应用的构建;业务代码被拆分成了函数粒度,不同函数表示不同的功能,根据请求量还可以实现毫秒级扩容;业务逻辑之外的一部分安全问题、资源调度问题全都交由云厂商负责。
除了开发和维护产品的省心,在具体实现成本上也能达到降本增效的效果。相对于传统项目服务的全天候运行来说,函数计算FC是基于事件驱动的,只有在用户发起请求时,函数才会被激活并且执行,运行成本按量收费,成本相较于节省计划还有显著的成本优势。
使用云服务器,我们不用操心物理机房的运行维护等操作系统层之下的内容;使用函数计算FC,我们不需要装操作系统、容器配置、运行环境,不用担心环境程序会挂掉。
可见,采用函数计算FC的Serverless架构后用户仅需运维与应用有关的函数,ECS架构下需要操心的东西现在只剩下了一个:
函数计算仿佛一场全新的技术**,使用函数计算FC的Serverless架构后:
如此妙哉的函数计算该如何体验呢?
函数计算FC提供运行环境、开发者工具和函数触发器等功能。同时,函数计算FC提供有免费执行次数 : 100万 (次)和免费资源使用量 : 40万 (GB-秒)。对于小范围的上线使用,我们只用负担公网流量费用和其他资源付费即可。
最常用的函数计算创建方式是控制台进入服务及函数子页面,依次创建服务和函数。一个服务可以由多个函数组成,一个函数只能隶属于一个服务。
当然,阿里云提供了一键式的在函数计算控制台-应用页面,我们可以通过模板和仓库导入来创建:
目前公测中的模板中心包含了各类来自官方或社区的共计56个应用或框架模板,覆盖已经相当全面了。在官方文档的指导下可以实现零基础创建FC应用。
由繁到简,从长到短
实践-基于Node.js Serverless的Web短网址跳转
主要功能-实现长连接与短链接的映射。
简要描述:
用户可以为指定URL创建对应短链
用户访问短链,自动跳转到相应URL
如上文所说,用函数计算FC构建应用总体上要是FaaS BaaS。本文的实践项目涉及到BaaS数据库的使用,方便起见使用云开发平台搭建应用。
应用架构图如下:
资源预备:
API 网关/API Gateway
函数计算/Function Compute
对象存储/Object Storage Service
日志服务/Log Service
MongoDB Serverless实例
数据库部分:
购买MongoDB Serverless版。
新建集合,新建集合其实就相当于新建一个表。创建集合:links、logs。
通过程序代码连接Serverless实例,使用方法点击该链接参见官方文档。
逻辑代码部分示例:
(Attention:该项目还使用了Express框架,以便于简化路由处理)
完成前端静态页面后便可绑定域名上线测试。
小结
Serverless作为云原生玩家的首选微服务已逐渐得到大众认同并快速发展起来,期待未来会有更多基于Serverless的应用。
原文链接:
标签: Serverless 服务器 架构