Serverless自定义运行时和单元测试(中)

简介: Serverless自定义运行时和单元测试(中)

http服务中定义了一个接口 访问/返回golang版本。

当基于容器实现自定义运行时函数计算会将容器的http请求转发到/路由。

本地测试-启动Http服务


image.png

alpine是最小体积的golang运行环境。

构建并上传镜像

  • • runtime的值等于custom-container表示该函数是自定义容器
  • • 通过customContainerConfig来自定义容器镜像

部署+测试


image.png

小结

  • • FaaS平台提供了有限的编程语言及版本的支持,使用自定义运行时,可以自定义编程语言进行开发
  • • 自定义运行时原理是在函数中实现一个Http服务,FaaS平台将触发器事件转发到你的Http服务
  • • 可以通过将运行时上传到FaaS,在bootstrap中定义启动命令来实现自定义运行时
  • • 可以通过自定义容器镜像来实现任意编程语言的自定义运行时

自定义运行时是Serverless应用中非常重要的一个功能,可以突破Faas平台运行环境的限制,可以使用FaaS平台所不支持的编程语言进行开发。

基于容器实现自定义运行时你可以很方便的安装依赖,因为依赖都打包到了镜像中。

还可以平滑的将原有系统或传统应用平滑迁移到Serverless架构。


单元测试


单元测试是保证代码质量和应用稳定性的重要手段。

使用Serverless的难点

  • • Serverless架构是分布式的,组成Serverless应用的函数是单独运行的,这些函数集合到一起组成分布式架构,你需要对独立函数和分布式应用都进行测试。
  • • Serverless架构依赖很多云服务,比如各种FaaS、BaaS等,这些云服务很难在本地模拟
  • • Serverless架构是事件驱动的,事件驱动这种异步工作模式也很难在本地模拟。

Serverless单元测试准则

越上层测试速度越慢,成本越高,所以应该写更多的单元测试。

Serverless应用依赖很多云服务,函数参数也与触发器强相关。

  • • 准则一:将业务逻辑和依赖的云服务分开,保持业务代码独立,使其更易于扩展和测试
  • • 准则二:对业务逻辑编写充分的单元测试保证业务代码的正确性
  • • 准则三:对业务代码和云服务编写集成测试,保证应用的正确性

示例代码

保存用户信息,保存成功后并发送欢迎邮件,这段代码的业务逻辑没有和FaaS服务分开,单元测试依赖数据库和邮件服务,这些服务都需要发送网络请求。

代码重构


把存储数据和发送邮件的业务逻辑单独拆分到user类中,并且为user类提供构造函数,注入db和mailer依赖。


image.png


相关实践学习
函数计算部署PuLID for FLUX人像写真实现智能换颜效果
只需一张图片,生成程序员专属写真!本次实验在函数计算中内置PuLID for FLUX,您可以通过函数计算+Serverless应用中心一键部署Flux模型,快速体验超写实图像生成的魅力。
从 0 入门函数计算
在函数计算的架构中,开发者只需要编写业务代码,并监控业务运行情况就可以了。这将开发者从繁重的运维工作中解放出来,将精力投入到更有意义的开发任务上。
相关文章
|
运维 负载均衡 Serverless
函数计算产品使用问题之在同一地域同一时刻最多可以同时运行多少个函数实例
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
运维 Serverless 调度
函数计算产品使用问题之怎么在HTTP触发的函数里添加或读取自定义头部
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
存储 缓存 监控
函数计算产品使用问题之调用sd生图时,怎么保证高并发场景正常运行
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
Kubernetes 安全 Serverless
Kubernetes云原生问题之在Serverless Container中,Pod运行如何解决
Kubernetes云原生问题之在Serverless Container中,Pod运行如何解决
234 6
|
弹性计算 Java Serverless
Serverless 应用引擎操作报错合集之上传自定义JAR包,启动时报错,是什么导致的
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
JavaScript NoSQL Serverless
函数计算产品使用问题之如何创建一个自定义运行时并指定Node.js版本
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
332 8
|
消息中间件 运维 Serverless
函数计算产品使用问题之如何限制同一时间只能运行一个函数实例
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
227 8
|
缓存 Serverless API
函数计算产品使用问题之不同环境下如何绑定自定义域名
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
272 8
|
运维 网络协议 Serverless
函数计算产品使用问题之如何绑定自定义域名
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
260 2
|
存储 Serverless 文件存储
函数计算产品使用问题之如何让SDXL模型在函数计算FC中运行并生成图像
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
192 2

相关产品

  • 函数计算