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

本文涉及的产品
函数计算FC,每月15万CU 3个月
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
简介: 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


相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
3月前
|
测试技术 Android开发 Python
探索软件测试的艺术:从基础到高级安卓应用开发中的自定义视图
【8月更文挑战第29天】在软件开发的世界中,测试是不可或缺的一环。它如同艺术一般,需要精细的技巧和深厚的知识。本文旨在通过浅显易懂的语言,引领读者从软件测试的基础出发,逐步深入到更复杂的测试策略和工具的使用,最终达到能够独立进行高效测试的水平。我们将一起探索如何通过不同的测试方法来确保软件的质量和性能,就像艺术家通过不同的色彩和笔触来完成一幅画作一样。
|
1月前
|
机器学习/深度学习 JSON 算法
实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)
本文详细介绍了使用YOLOv5-Seg模型进行图像分割的完整流程,包括图像分割的基础知识、YOLOv5-Seg模型的特点、环境搭建、数据集准备、模型训练、验证、测试以及评价指标。通过实例代码,指导读者从自定义数据集开始,直至模型的测试验证,适合深度学习领域的研究者和开发者参考。
410 3
实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)
|
1月前
|
机器学习/深度学习 JSON 算法
语义分割笔记(二):DeepLab V3对图像进行分割(自定义数据集从零到一进行训练、验证和测试)
本文介绍了DeepLab V3在语义分割中的应用,包括数据集准备、模型训练、测试和评估,提供了代码和资源链接。
194 0
语义分割笔记(二):DeepLab V3对图像进行分割(自定义数据集从零到一进行训练、验证和测试)
|
1月前
|
机器学习/深度学习 算法 PyTorch
目标检测实战(五): 使用YOLOv5-7.0版本对图像进行目标检测完整版(从自定义数据集到测试验证的完整流程)
本文详细介绍了使用YOLOv5-7.0版本进行目标检测的完整流程,包括算法介绍、环境搭建、数据集准备、模型训练、验证、测试以及评价指标。YOLOv5以其高精度、快速度和模型小尺寸在计算机视觉领域受到广泛应用。
462 0
目标检测实战(五): 使用YOLOv5-7.0版本对图像进行目标检测完整版(从自定义数据集到测试验证的完整流程)
|
1月前
|
算法 Java 测试技术
数据结构 —— Java自定义代码实现顺序表,包含测试用例以及ArrayList的使用以及相关算法题
文章详细介绍了如何用Java自定义实现一个顺序表类,包括插入、删除、获取数据元素、求数据个数等功能,并对顺序表进行了测试,最后还提及了Java中自带的顺序表实现类ArrayList。
21 0
|
4月前
|
JavaScript NoSQL Serverless
函数计算产品使用问题之如何创建一个自定义运行时并指定Node.js版本
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
4月前
|
存储 缓存 Serverless
函数计算操作报错合集之如何处理运行时报错:“Function time out after 600 seconds”
在使用函数计算服务(如阿里云函数计算)时,用户可能会遇到多种错误场景。以下是一些常见的操作报错及其可能的原因和解决方法,包括但不限于:1. 函数部署失败、2. 函数执行超时、3. 资源不足错误、4. 权限与访问错误、5. 依赖问题、6. 网络配置错误、7. 触发器配置错误、8. 日志与监控问题。
|
4月前
|
Serverless Go C语言
函数计算产品使用问题之如何在Golang运行时环境中解决glibc依赖问题
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
4月前
|
Java 测试技术 数据库
单元测试问题之LoginServiceImpl以避免对IpUtil的依赖问题如何解决
单元测试问题之LoginServiceImpl以避免对IpUtil的依赖问题如何解决
|
4月前
|
测试技术 持续交付
单元测试问题之确保单元测试自动化运行中的问题如何解决
单元测试问题之确保单元测试自动化运行中的问题如何解决

热门文章

最新文章

相关产品

  • 函数计算