细数Serverless的“配套服务”

本文涉及的产品
简介: 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相关信息

相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
25天前
|
监控 Serverless 测试技术
Serverless 应用引擎常见问题之做的web服务计费如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
327 3
|
26天前
|
运维 Serverless 调度
Serverless 应用引擎常见问题之资源使用完影响服务使用如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
22 0
|
24天前
|
监控 Serverless
函数计算(FC)作为一种无服务器的计算服务,在使用过程中可能会遇到各种问题
函数计算(FC)作为一种无服务器的计算服务,在使用过程中可能会遇到各种问题
21 4
|
3月前
|
JSON 安全 Serverless
在使用阿里云函数计算(FC)服务时,您可以通过自定义域名来访问部署好的云函数
在使用阿里云函数计算(FC)服务时,您可以通过自定义域名来访问部署好的云函数【1月更文挑战第23天】【1月更文挑战第112篇】
222 7
|
4月前
|
数据采集 Serverless API
在函数计算FC上成功部署SD服务并能通过API进行有效调用
在函数计算FC上成功部署SD服务并能通过API进行有效调用
289 3
|
26天前
|
关系型数据库 MySQL Serverless
Serverless 应用引擎常见问题之新发布的服务 arms 没了如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
24 3
|
1月前
|
运维 监控 Serverless
一键开启 GPU 闲置模式,基于函数计算低成本部署 Google Gemma 模型服务
本文介绍如何使用函数计算 GPU 实例闲置模式低成本、快速的部署 Google Gemma 模型服务。
164762 56
|
1月前
|
关系型数据库 Serverless 测试技术
函数计算常见问题之停止服务如何解决
函数计算(Function Compute, FC)是阿里云提供的无服务器计算服务,它允许用户在无需管理服务器的情况下运行代码,但在配置和执行过程中可能遇到报错,本合集致力于梳理FC服务中的常见报错和配置问题,并提供解决方案,帮助用户优化函数执行环境。
114 0
|
3月前
|
关系型数据库 Serverless 分布式数据库
碧桂园服务使用阿里云PolarDB Serverless云数据库实现降本增效。
碧桂园集团,即碧桂园控股有限公司新型城镇化住宅开发商,采用集中及标准化的运营模式,业务包含物业发展、建安、装修、物业管理、物业投资、酒店开发和管理、以及现代农业、机器人。
|
3月前
|
监控 Serverless 持续交付
Serverless 应用引擎问题之服务中断如何解决
Serverless部署是指将应用程序部署到无服务器架构中,该架构允许开发者专注于代码而无需关心底层服务器的运行和维护;针对Serverless部署过程中可能遇到的挑战,本合集提供全面的指南和最佳实践,帮助开发者顺利实现应用的无服务器化部署。
112 1

相关产品

  • 函数计算