Serverless应用调试“秘诀”

本文涉及的产品
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
函数计算FC,每月15万CU 3个月
简介: 在应用开发过程中,或者应用开发完成,当所执行结果不符合预期时,我们通常要进行一定的调试工作。但是在Serverless加架构下,调试往往会受到极大的环境因素限制,通常情况下会出现的情况是,所开发的应用在本地是可以比较健康的、符合预期的运行,但是在FaaS平台上,则会出现一些不可预测的问题;或者是在一些特殊的环境下,本地没有办法模拟线上环境,难以进行项目的开发和调试。

在应用开发过程中,或者应用开发完成,当所执行结果不符合预期时,我们通常要进行一定的调试工作。但是在Serverless加架构下,调试往往会受到极大的环境因素限制,通常情况下会出现的情况是,所开发的应用在本地是可以比较健康的、符合预期的运行,但是在FaaS平台上,则会出现一些不可预测的问题;或者是在一些特殊的环境下,本地没有办法模拟线上环境,难以进行项目的开发和调试。

Serverless应用的调试,一直都是都是备受诟病的,但是各个云厂商并没有因此放弃在调试方向的不断深入探索。以阿里云函数计算为例,其提供了在线调试、本地调试等多种调试方案。

在线调试

简单调试

所谓的简单的调试,就是在控制台来进行调试,以阿里云函数计算为例,我们可以在控制台通过执行按钮,进行基本的调试:

必要时候,我们也可以通过设置Event来模拟一些事件:

在线进行调试的好处是,可以使用线上的一些环境进行代码的测试。否则当我们线上环境拥有VPC等资源时,在本地环境是很难进行调试,例如数据库需要通过VPC来进行访问时,或者有对象存储触发器的业务逻辑等。

断点调试

在线进行函数计算的代码调试,除了简单的调试之外,部分云厂商也是支持断点调试的,例如阿里云函数计算的远程调试、腾讯云云函数的远程调试等。以阿里云函数计算远程调试为例,我们可以通过控制台进行函数的在线调试。当我们创建好函数之后,可以选择远程调试,并点击开启调试:

开启调试之后,稍等片刻,系统将会进入远程调试界面:

此时我们可以进行一些断点调试:

本地调试

命令行工具

就目前来看,大部分FaaS平台都会为用户提供相对完备的命令行工具,包括AWS的SAM CLI,阿里云的Funcruft,同时也有一些开源项目例如Serverless Framework、Serverless Devs等对多云厂商的支持等。通过命令行工具进行代码调试的方法很简单,以Serverless Devs为例,本地调试阿里云函数计算:

首先确保,我们本地拥有一个函数计算的项目:

然后在项目下执行调试指令,例如在Docker中进行调试:

编辑器插件

以VScode插件为例,当我们下载好阿里云函数计算的VSCode插件,并且配置好账号信息之后,我们可以在本地新建函数,并且在进行打点,之后可以进行断点调试:

当我们的函数调试完成之后,可以进行部署等操作。

其他调试方案

Web框架的本地调试

在阿里云FaaS平台开发传统Web框架,以Python语言Bottle框架为例,可以增加:

app = bottle.default_app()

并且对run()方法进行条件限制(if __name__ == '__main__'):

if __name__ == '__main__':

   bottle.run(host='localhost', port=8080, debug=True)

例如:

# index.py

import bottle


@bottle.route('/hello/<name>')

def index(name):

   return "Hello world"


app = bottle.default_app()


if __name__ == '__main__':

   bottle.run(host='localhost', port=8080, debug=True)

这样,我们可以在本地开发的同时,和传统开发思路一样,在本地进行调试。当我们部署到线上时,只需要在入口方法处填写ndex.app,即可实现平滑的部署。

本地模拟事件调试

针对非Web框架,可以在本地构建一个方法,例如要调试一下对象存储触发器,可以是:

import json



def handler(event, context):

   print(event)



def test():

   event = {

       "events": [

           {

               "eventName": "ObjectCreated:PutObject",

               "eventSource": "acs:oss",

               "eventTime": "2017-04-21T12:46:37.000Z",

               "eventVersion": "1.0",

               "oss": {

                   "bucket": {

                       "arn": "acs:oss:cn-shanghai:123456789:bucketname",

                       "name": "testbucket",

                       "ownerIdentity": "123456789",

                       "virtualBucket": ""

                   },

                   "object": {

                       "deltaSize": 122539,

                       "eTag": "688A7BF4F233DC9C88A80BF985AB7329",

                       "key": "image/a.jpg",

                       "size": 122539

                   },

                   "ossSchemaVersion": "1.0",

                   "ruleId": "9adac8e253828f4f7c0466d941fa3db81161****"

               },

               "region": "cn-shanghai",

               "requestParameters": {

                   "sourceIPAddress": "140.205.***.***"

               },

               "responseElements": {

                   "requestId": "58F9FF2D3DF792092E12044C"

               },

               "userIdentity": {

                   "principalId": "123456789"

               }

           }

       ]

   }

   handler(json.dumps(event), None)



if __name__ == "__main__":

   print(test())

这样通过构造一个event对象,即可实现模拟事件触发

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
2月前
|
人工智能 自然语言处理 Serverless
阿里云函数计算 x NVIDIA 加速企业 AI 应用落地
阿里云函数计算与 NVIDIA TensorRT/TensorRT-LLM 展开合作,通过结合阿里云的无缝计算体验和 NVIDIA 的高性能推理库,开发者能够以更低的成本、更高的效率完成复杂的 AI 任务,加速技术落地和应用创新。
149 13
|
15天前
|
运维 Serverless 数据处理
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
51 1
|
19天前
|
运维 监控 Serverless
Serverless架构在图像处理等计算密集型应用中展现了显著的优势
Serverless架构在图像处理等计算密集型应用中展现了显著的优势
29 1
|
30天前
|
存储 消息中间件 人工智能
ApsaraMQ Serverless 能力再升级,事件驱动架构赋能 AI 应用
本文整理自2024年云栖大会阿里云智能集团高级技术专家金吉祥的演讲《ApsaraMQ Serverless 能力再升级,事件驱动架构赋能 AI 应用》。
|
30天前
|
运维 Serverless 数据处理
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
57 3
|
1月前
|
运维 Serverless 数据处理
Serverless架构在图像处理等计算密集型应用中展现了显著的优势
Serverless架构在图像处理等计算密集型应用中展现出显著优势,包括加速研发交付、降低成本、零运维成本、高效资源利用、自动扩展、实时数据处理及快速原型开发,为高并发、动态需求场景提供高效解决方案。
52 1
|
1月前
|
运维 Serverless 数据处理
Serverless架构在图像处理等计算密集型应用中展现出显著优势
【10月更文挑战第6天】Serverless架构在图像处理等计算密集型应用中展现出显著优势,包括加速研发交付、成本效益、零运维成本、高效资源利用、自动扩展能力、实时数据处理及快速原型开发,为高并发、动态需求场景提供高效、灵活的解决方案。
46 4
|
2月前
|
人工智能 运维 Serverless
Serverless + AI 让应用开发更简单,加速应用智能化
2024 云栖大会开幕,在大会第一天,阿里云正式发布全新产品——云应用开发平台 CAP。CAP 拥有丰富的场景化应用模板,可以极速体验,并且具备更低的成本优势以及灵活组装等特点,成为广大开发者与企业必备的一站式应用开发平台,让应用开发更简单。
183 12
|
2月前
|
Cloud Native 关系型数据库 Serverless
基于阿里云函数计算(FC)x 云原生 API 网关构建生产级别 LLM Chat 应用方案最佳实践
本文带大家了解一下如何使用阿里云Serverless计算产品函数计算构建生产级别的LLM Chat应用。该最佳实践会指导大家基于开源WebChat组件LobeChat和阿里云函数计算(FC)构建企业生产级别LLM Chat应用。实现同一个WebChat中既可以支持自定义的Agent,也支持基于Ollama部署的开源模型场景。
393 17
|
2月前
|
Kubernetes Java Maven
揭秘无服务器革命:Quarkus如何让Java应用在云端“零”负担起飞?
本文介绍如何使用Quarkus从零开始开发无服务器应用,通过示例代码和详细步骤引导读者掌握这一技术。无服务器架构让开发者无需管理服务器,具有自动扩展和成本效益等优势。Quarkus作为Kubernetes Native Java框架,优化了Java应用的启动速度和内存使用,适合无服务器环境。文章涵盖环境搭建、项目创建及部署全流程,并介绍了Quarkus的扩展性和监控工具,助力高效开发与应用性能提升。
51 9

热门文章

最新文章

相关产品

  • 函数计算