细数Serverless的“配套服务”

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
函数计算FC,每月免费额度15元,12个月
简介: Serverless开发者工具通通常情况下包括命令行工具,编辑器插件以及其他工具。命令行工具一般情况下有厂商一方工具,和开源建设的三方工具两种,例如AWS Lambda的SAM CLI,阿里云函数计算的Funcruft等就是典型的一方工具。这类工具的特点是和厂商、产品的匹配成都会非常高,一些特性能力的支持会比较迅速,缺点是有的时候比较保守;

开发者工具

Serverless开发者工具通通常情况下包括命令行工具,编辑器插件以及其他工具。

命令行工具一般情况下有厂商一方工具,和开源建设的三方工具两种,例如AWS Lambda的SAM CLI,阿里云函数计算的Funcruft等就是典型的一方工具。这类工具的特点是和厂商、产品的匹配成都会非常高,一些特性能力的支持会比较迅速,缺点是有的时候比较保守;例如Serverless Devs、Serverless Framework就是典型的三方工具,这两个工具都是支持AWS Lambda,阿里云函数计算,腾讯云云函数等多个云厂商的FaaS产品。在客户端表现上来看,这两个开源项目都是Serverless的开发者工具,都是组件化的命令行工具,也都是支持多云;在形态上来看,Serverless Framework更注重部署与运维方向,Serverless Devs更注重Serverless应用的全生命周期,同时Serverless Devs相对Serverless Framework而言,增加了可视化的界面:

通过界面可以快速的部署应用:

也可以快速的管理云上Serverless相关资源:

除了命令行工具之外,为了更好地帮助用户编写代码和在线调试、部署函数,很多厂商都基于不同的编辑器开发了插件。例如AWS提供Visual Studio CodeEclipse插件:

同样提供函数服务的Azure也提供了Visual Studio Code插件。Visual Studio 中的 Azure Functions 项目模板创建一个项目,该项目可发布到 Azure 中的函数应用。可使用函数应用将函数分组为一个逻辑单元,以用于管理、部署和共享资源:

对于国内厂商而言,腾讯云云函数也提供Tencent Serverless Tookit相关的插件:

阿里云在开发者工具层面,同样提供了VSCode插件:

同时阿里云函数计算还提供了Cloud Toolkit工具,实现了本地Jet Brains IDE中运行、下载云端函数,创建、上传本地函数, 以IntelliJ IDEA为例,其函数管理界面如下:

除了上述的命令行工具,编辑器插件之外,其实Serverless的开发者工具还有很多其他形式,例如典型的IaC产品Pulumi也是支持多云Serverless操作的,以Google Cloud Functions为例创建一个Slack bot:

// secure config tokens to use to validate incoming messages as well as authenticate ourself to slack

const config = new pulumi.Config("mentionbot");

const slackToken = config.get("slackToken");

const verificationToken = config.get("verificationToken");


// A topic that we can enqueue slack events to so they can be processed in batch later on

const messageTopic = new gcp.pubsub.Topic("messages");


// Create an http endpoint that slack will use to push events to us.

const endpoint = new gcp.cloudfunctions.HttpCallbackFunction("bot", {

   callbackFactory: () => {

       const app = express();

       app.use(bodyParser.json());

       app.post("/events", (req, res) => {

           // Importantly: This is the code that will run in your serverless GCP cloud function!


           const body = req.body;


           // Process the body as appropriate. If it's something we need to respond to immediately

           // (like a verification request), then do so. Otherwise, add the message to our pubsub

           // topic to be processed later:

           const pubSub = new PubSub();

           const topic = pubSub.topic(messageTopic.name.get());

           topic.publish(Buffer.from(JSON.stringify(body)));


           // Quickly respond with success so that slack doesn't retry.

           res.status(200).end();

       });


       return app;

   }

});


messageTopic.onMessagePublished("processTopicMessage", async (data) => {

   // Actually handle the 'data' in the pubsub message.

   // Importantly: This is the code that will run in your serverless GCP cloud function!

});


// Give this url to slack to let them know where to post their events to.

export const url = endpoint.httpsTriggerUrl;

另外Stackery等产品,也为Serverless赋能,让用户可以像玩scratch一样开发Serverless应用,进一步将Low-Code与Serverless打通:

Serverless Workflow

Serverless工作流Serverless Workflow)是一个用来协调多个分布式任务执行的全托管云服务。

Serverless工作流中,用户可以用顺序、分支、并行等方式来编排分布式任务,Serverless工作流会按照设定好的步骤可靠地协调任务执行,跟踪每个任务的状态转换,并在必要时执行用户定义的重试逻辑,以确保工作流顺利完成。Serverless工作流通过提供日志记录和审计来监视工作流的执行,方便轻松地诊断和调试应用。  Serverless工作流简化了开发和运行业务流程所需要的任务协调、状态管理以及错误处理等繁琐工作,让用户聚焦业务逻辑开发。

Serverless工作流可以协调分布式组件Serverless工作流能够编排不同基础架构、不同网络、不同语言编写的应用,抹平混合云、专有云过渡到公共云或者从单体架构演进到微服务架构的落差;减少流程代码量Serverless工作流提供了丰富的控制逻辑,例如顺序、选择、并行等,让用户以更少的代码实现复杂的业务逻辑;提高应用容错性Serverless工作流用户管理流程状态,内置检查点和回放能力,以确保用户的应用程序按照预期逐步执行。错误重试和捕获可以让您灵活的处理错误;ServerlessServerless工作流根据实际执行步骤转换个数收费,执行结束不再收费。Serverless工作流自动扩展让用户免于管理硬件预算和扩展。

Serverless工作流具有以下能力和特性:

  • 服务编排能力: Serverless工作流可以帮助用户将流程逻辑与任务执行分开,节省编写编排代码的时间。例如图片经过人脸识别函数后,根据人脸位置剪裁图像,最后发送消息通知用户Serverless工作流提供了一个Serverless的解决方案,降低了用户的编排运维成本。
  • 协调分布式组件: Serverless工作流能够协调在不同基础架构上、不同网络内,以不同语言编写的应用。应用不管是从私有云/专有云平滑过渡到混合云或公共云,或者从单体架构演进到微服务架构,Serverless工作流都能发挥协调作用。
  • 内置错误处理: 通过内置错误重试和捕获能力,用户可以自动重试失败或超时的任务,对不同类型错误做出不同响应,并定义回退逻辑。
  • 可视化监控Serverless工作流提供可视化界面来定义工作流和查看执行状态。状态包括输入和输出等。方便用户快速识别故障位置,并快速排除故障问题。
  • 支持长时间运行流程: Serverless工作流可以跟踪整个流程,持续长时间执行确保流程执行完成。有些流程可能要执行几个小时、几天、甚至几个月。例如运维相关的Pipeline和邮件推广流程。
  • 流程状态管理: Serverless工作流会管理流程执行中的所有状态,包括跟踪它所处的执行步骤,以及存储在步骤之间的数据传递。用户无需自己管理流程状态,也不必将复杂的状态管理构建到任务中。

可观测性

Serverless应用的可观测性是被很多用户所关注的。可观测性是通过外部表现判断系统内部状态的衡量方式,在应用开发中,可观测性帮助我们判断系统内部的健康状况。在系统出现问题时,帮助我们定位问题、排查问题、分析问题;在系统平稳运行时,帮助我们评估风险,预测可能出现的问题。在Serverless应用开发中,如果观察到函数的并发度持续升高,很可能是业务推广团队的努力工作导致业务规模迅速扩张,为了避免达到并发度限制触发流控,开发者就需要提前提升并发度,以阿里云函数计算为例,阿里云函数计算在可观测行层面提供了多种纬度,包括Logging、Metrics以及Tracing等内容。

在控制台监控中心,可以查看到整体的Metrics,服务级Metrics以及每个函数的Metrics:

除此之外,还可以看到当前函数的请求记录:

根据不同的请求记录,可以查看到函数的详细信息:

除了在控制台的监控中心处可以查看到函数的日志等信息,在函数详情页面,也可以看到函数的详细日志信息:

以及Tracing相关信息

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
1月前
|
分布式计算 运维 Serverless
EMR Serverless Spark服务和EMR Serverless StarRocks服务的比较
**EMR Serverless Spark** 以其出色的稳定性、高效性能、减轻运维负担及成本优化著称,适合大规模数据处理。**EMR Serverless StarRocks** 则以高速查询、存算分离架构和灵活扩缩容见长,侧重企业级功能。两者在不同应用场景中有各自优势,选择应基于具体需求。更多详情,参考阿里云官方资源。
|
2月前
|
监控 Serverless 文件存储
函数计算产品使用问题之如何确保新建的实例拉取的是最新的自定义容器镜像
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
1天前
|
消息中间件 关系型数据库 Serverless
【阿里云】一键部署创建函数计算服务以处理多媒体文件
通过阿里云的一键部署功能,轻松创建函数计算服务以处理多媒体文件。首先选择地域并配置资源栈名称及其他必要参数,如登录凭证、实例类型及数据库配置。过程中可能需开通相关服务如消息服务MNS,并确保账户有足够的余额。完成配置后,系统自动创建资源栈。当状态显示“创建成功”即部署完毕。最后,通过提供的URL及凭据访问应用,上传PPTX文件进行处理,并下载处理后的结果。
13 4
|
5天前
|
Kubernetes 安全 Serverless
Kubernetes 的架构问题之Serverless Container中提供对外服务如何解决
Kubernetes 的架构问题之Serverless Container中提供对外服务如何解决
23 5
|
20天前
|
Java Serverless Docker
函数计算产品使用问题之使用Docker镜像部署的Web服务如何获取客户端的真实IP
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
20天前
|
运维 Serverless API
Serverless 应用引擎使用问题之如何开发HTTP服务
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
21天前
|
监控 Serverless 异构计算
函数计算操作报错合集之GPU服务请求返回了404错误是什么原因
在使用函数计算服务(如阿里云函数计算)时,用户可能会遇到多种错误场景。以下是一些常见的操作报错及其可能的原因和解决方法,包括但不限于:1. 函数部署失败、2. 函数执行超时、3. 资源不足错误、4. 权限与访问错误、5. 依赖问题、6. 网络配置错误、7. 触发器配置错误、8. 日志与监控问题。
|
28天前
|
机器学习/深度学习 监控 物联网
函数即服务(FaaS)
函数即服务(FaaS)
|
1月前
|
存储 分布式计算 运维
EMR Serverless Spark服务最佳实践测评
EMR Serverless Spark服务最佳实践测评
80 2
|
20天前
|
运维 安全 Serverless
函数计算产品使用问题之怎么调整单个服务下最大允许创建的函数个数
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。

热门文章

最新文章

相关产品

  • 函数计算