从云计算到函数计算

本文涉及的产品
函数计算FC,每月15万CU 3个月
简介: Serverless 计算服务,其基于PaaS又不同于PaaS,因而更多时候被称作功能即服务(Function-as-a-Service,缩写为 FaaS)。函数计算FC是阿里云的事件驱动的全托管Serverless 计算服务产品,我想函数计算Function Compute的名字就是这样诞生的。

从云计算到函数计算


函数计算,你的名字

 

云计算,是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需求提供给计算机各种终端和其他设备,使用服务商提供的电脑基建作计算资源,因此用“云”来指代“网络计算资源”这是一种非常恰当的比喻。

 

image.png

 

美国国家标准和技术研究院的云计算定义中明确了三种服务模式,分别是软件即服务(SaaS)、平台即服务(PaaS)和基础设施即服务(IaaS)。阿里云的产品能全部覆盖这三种服务模式,如果分别举个例子那么应该是:宜搭(SaaS加速器)、函数计算FC和云服务器ECS

 

Serverless计算服务,其基于PaaS又不同于PaaS,因而更多时候被称作功能即服务(Function-as-a-Service,缩写为 FaaS)。函数计算FC是阿里云的事件驱动的全托管Serverless 计算服务产品,我想函数计算Function Compute的名字就是这样诞生的。


函数计算,直达应用的核心


我们知道应用的核心是逻辑和存储,而代码主要实现业务逻辑和持久化。

函数计算FC总体上是FaaS+BaaS

函数指计算函数,包含了业务逻辑部分,这一部分由FaaS来实现;

而数据持久化、消息推送和账户系统等,由BaaS来实现。


ECS?FC?

image.png


Serverless服务并不是没有服务器了,而是作为一种新的架构让我们在以往传统应用维护上的工作得到进一步降低。

以常见的主要基于云服务器的Web服务为例,大致有这样的流程:

 

image.png

 

在服务过程中,服务器可能涉及路由规则、鉴权逻辑以及其他各类复杂的业务代码。同时,开发团队不仅要将精力用于开发,还要付出很大的精力在服务器的运维上面,例如要时刻关注以下问题:

· 服务器性能能否应对可能突然爆发的用户请求,何时扩容?

· 服务器上的脚本和业务代码等多少还在健康运行?

· 外部网络安全威胁到来时如何保障数据安全?

 

面对诸多问题确实会让人头大,但如果我们摒弃基于服务器的架构而转用Serverless的架构之后,服务的过程就变成了这样:

image.png

当客户端和数据库未发生变化的前提下,服务器变成了Serverless的架构。工作的分工发生了巨变。例如,之前需要开发团队维护的路由模块以及鉴权模块都将接入服务商提供的API网关系统以及鉴权系统,开发团队无须再维护这两部分的业务代码,只需要持续维护相关规则即可,再也不用担心应用的构建;业务代码被拆分成了函数粒度,不同函数表示不同的功能,根据请求量还可以实现毫秒级扩容;业务逻辑之外的一部分安全问题、资源调度问题全都交由云厂商负责。

image.png

除了开发和维护产品的省心,在具体实现成本上也能达到降本增效的效果。相对于传统项目服务的全天候运行来说,函数计算FC是基于事件驱动的,只有在用户发起请求时,函数才会被激活并且执行,运行成本按量收费,成本相较于节省计划还有显著的成本优势。

 

FC:解放生产力,更专注于应用的业务本身


使用云服务器,我们不用操心物理机房的运行维护等操作系统层之下的内容;使用函数计算FC,我们不需要装操作系统、、容器配置、运行环境,不用担心环境程序会挂掉。

 image.png

可见,采用函数计算FC的Serverless架构后用户仅需运维与应用有关的函数,ECS架构下需要操心的东西现在只剩下了一个:

image.png


函数计算仿佛一场全新的技术革命,使用函数计算FC的Serverless架构后:

  • 开发团队不需要再自己维护服务器,也不需要自己操心服务器的各种性能指标和资源利用率,团队的运维可以更加专注的将监控目光放到监控应用程序本身的度量。
  • 应用的部署将变得十分容易。我们只要上传基本的代码,同时不需使用PuppetChefAnsibleDocker来进行配置管理,大大降低了运维成本。


综上所述,相对于传统项目,函数计算FC具备以下优势:

  • 用户无需采购和管理服务器等基础设施,运维成本低,安全性更高。(即涵盖了云服务器的优势)
  • 用户只需专注业务逻辑的开发,使用函数计算支持的开发语言设计、优化、测试、审核以及上传自己的应用代码。结合工作流,代码提交自动部署,直接运行!
  • 函数计算FC以事件驱动的方式触发应用响应用户请求。与阿里云对象存储OSSAPI网关、日志服务和表格存储等服务无缝对接,帮助快速构建应用。
  • 简化运维工作,提供日志查询、性能监控和报警等功能快速排查故障。
  • 不用担心性能问题,架构更富有弹性,毫秒级别弹性伸缩,快速实现底层扩容以应对峰值压力。
  • 使用成本低,按需付费,支持百毫秒级别收费。只需为实际使用的计算资源付费,适合有明显波峰波谷的用户访问场景。

 

函数计算FC似乎是真正实现 “像云一样“的云计算愿景,它很好的诠释了:最大程度利用资源、减少空闲资源浪费的环保理念和降低学习成本和使用成本的现实需求。


如此妙哉的函数计算该如何体验呢?


函数计算FC提供运行环境、、开发者工具和函数触发器等功能。同时,函数计算FC提供有免费执行次数 : 100 ()免费资源使用量 : 40 (GB-)。对于小范围的上线使用,我们只用负担公网流量费用和其他资源付费即可。


1657446496967_96FB224B-CF8E-42c8-8F1C-857969ACE1C1.png

最常用的函数计算创建方式是控制台进入服务及函数子页面,依次创建服务和函数。一个服务可以由多个函数组成,一个函数只能隶属于一个服务。

 

当然,阿里云提供了一键式的在函数计算控制台-应用页面,我们可以通过模板和仓库导入来创建:


目前公测中的模板中心包含了各类来自官方或社区的共计56个应用或框架模板,覆盖已经相当全面了。在官方文档的指导下可以实现零基础创建FC应用。

image.png


由繁到简,从长到短

实践-基于Node.js + ServerlessWeb短网址跳转

 

主要功能-实现长连接与短链接的映射。


简要描述:

用户可以为指定URL创建对应短链

用户访问短链,自动跳转到相应URL

 

如上文所说,用函数计算FC构建应用总体上要是FaaS+BaaS。本文的实践项目涉及到BaaS数据库的使用,方便起见使用云开发平台搭建应用。

 

应用架构图如下:

image.png

资源预备:

需要注册开通云开发平台并激活以下服务,

l  API 网关/API Gateway

l  函数计算/Function Compute

l  对象存储/Object Storage Service

l  日志服务/Log Service

l  MongoDBServerless实例

 

数据库部分:

l  购买MongoDB Serverless

l  新建集合,新建集合其实就相当于新建一个表。创建集合:linkslogs

l  通过程序代码连接Serverless实例使用方法点击该链接参见官方文档

 

逻辑代码部分示例:

(Attention:该项目还使用了Express框架,以便于简化路由处理)

importstoragefrom'../storage'exportdefaultasync (req, res): Promise<any>=> {
// params from request body or querystringconstparams=req.body??req.queryconst { url='', slug='' } =paramsas { url?: string, slug?: string }
// url is requiredif (url==='') {
returnres.status(400).send({ message: 'Missing required parameter: url.' })
  }
// url format checkif (!/^https?:\/\/.{3,}/.test(url)) {
returnres.status(400).send({ message: 'Illegal format: url.' })
  }
// custom slug length checkif (slug.length!==0&& (slug.length<2||slug.length>10)) {
returnres.status(400).send({ message: 'Illegal length: slug, (>= 2 && <= 10).' })
  }
constgetForwarded= (name: string): string=>req.headers[`x-forwarded-${name}`]?.toString() ??''try {
// request origin urlconstorigin=`${getForwarded('proto')}://${getForwarded('host')}/`// if slug customizedif (slug!=='') {
constexistUrl=awaitstorage.getUrlBySlug(slug)
// url & slug are the same.if (existUrl===url) {
returnres.send({ slug, link: origin+slug })
      }
// slug already existsif (existUrl!=null) {
returnres.status(400).send({ message: 'Slug already exists.' })
      }
    }
// target url existsconstexistSlug=awaitstorage.getSlugByUrl(url)
// url exists & no custom slugif (existSlug!=null&&slug==='') {
returnres.send({ slug: existSlug, link: origin+existSlug })
    }
// create if not existsconstnewSlug=awaitstorage.addLink(url, slug)
// responseres.send({ slug: newSlug, link: origin+newSlug })
  } catch (e) {
returnres.status(500).send({ message: e.message })
  }
}

image.png



完成前端静态页面后便可绑定域名上线测试。


注意,需要绑定已备案域名。


小结


Serverless作为云原生玩家的首选微服务已逐渐得到大众认同并快速发展起来,期待未来会有更多基于Serverless的应用。

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
2月前
|
监控 Serverless 数据库
探索 Serverless 架构:云计算的新浪潮
【10月更文挑战第18天】Serverless架构,即无服务器架构,是一种新兴的云计算模式,让开发者无需管理服务器即可构建和运行应用。本文探讨了其核心概念、优势、挑战及最佳实践,强调了按需付费、自动扩展和开发效率等优点,同时也指出了冷启动、状态管理和调试监控等挑战。
|
1月前
|
机器学习/深度学习 监控 Serverless
探索Serverless架构:云计算的新前沿
【10月更文挑战第26天】本文探讨了Serverless架构作为新兴的云计算范式,如何改变应用的构建和部署方式。文章介绍了Serverless的核心概念、优势和挑战,并提供了开发技巧和实用工具,帮助开发者更好地理解和利用这一技术。
|
1月前
|
监控 Serverless 数据库
探索 Serverless 架构:云计算的新浪潮
【10月更文挑战第23天】Serverless 架构是一种新兴的云计算范式,允许开发者构建和运行应用程序而无需管理服务器。本文深入探讨了 Serverless 的核心概念、优势、挑战及最佳实践,帮助开发者更好地理解和应用这一技术。
|
7月前
|
人工智能 Serverless 云计算
云计算中的Serverless版,你了解了吗?
云计算中的Serverless版,你了解了吗? 随着科技的进步,云计算已经成为了我们生活中不可或缺的一部分。而在众多的云计算服务中,Serverless版无疑是一个热门的话题。今天,我们就来详细了解一下Serverless版的计费方式以及购买流程。
78 2
云计算中的Serverless版,你了解了吗?
|
4月前
|
分布式计算 Serverless MaxCompute
Serverless 架构问题之Serverless架构助力云计算如何解决
Serverless 架构问题之Serverless架构助力云计算如何解决
45 1
|
4月前
|
Web App开发 缓存 Serverless
Serverless 架构问题之云计算的形态演进如何解决
Serverless 架构问题之云计算的形态演进如何解决
37 0
|
5月前
|
运维 监控 Serverless
Serverless架构下的函数计算:重塑云计算的未来
【7月更文挑战第16天】Serverless架构下的函数计算作为云计算领域的一项重大创新,正以其独特的优势改变着应用开发和运维的方式。随着技术的不断成熟和完善,函数计算将在更多领域发挥重要作用,推动云计算技术向更加高效、灵活和智能的方向发展。对于开发者和企业来说,掌握函数计算技术将是把握未来云计算机遇的关键所在。
|
7月前
|
运维 监控 Serverless
【专栏】无服务器架构,一种云计算模型,让开发者专注编写代码而不必管理服务器(Serverless)
【4月更文挑战第28天】无服务器架构,一种云计算模型,让开发者专注编写代码而不必管理服务器。它基于事件驱动,自动扩展资源并按需计费。优势包括缩短开发周期、优化资源利用、降低成本、提高可用性及简化维护。然而,冷启动延迟、调试困难、性能监控、安全性和学习曲线等挑战仍需解决。随着技术进步,无服务器架构将在科技发展中发挥更大作用。
131 2
|
7月前
|
物联网 数据挖掘 Serverless
Serverless 开拓无服务器时代:云计算的新趋势(下)
Serverless 开拓无服务器时代:云计算的新趋势(下)
Serverless 开拓无服务器时代:云计算的新趋势(下)
|
7月前
|
消息中间件 Serverless 云计算
Serverless 开拓无服务器时代:云计算的新趋势(上)
Serverless 开拓无服务器时代:云计算的新趋势(上)
Serverless 开拓无服务器时代:云计算的新趋势(上)