开发函数计算的正确姿势 —— Fun 自动化 NAS 配置

本文涉及的产品
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
函数计算FC,每月15万CU 3个月
简介: 开发函数计算的正确姿势 —— Fun 自动化 NAS 配置 1. 前言 首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。

1. 前言

首先介绍下在本文出现的几个比较重要的概念:

函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。函数计算更多信息 参考

Fun: Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API 网关、日志服务等资源。它通过一个资源配置文件(template.yml),协助您进行开发、构建、部署操作。Fun 的更多文档 参考

NAS: 阿里云文件存储NAS是一个可共享访问,弹性扩展,高可靠,高性能的分布式文件系统。在函数计算的场景中,由于其有代码包的限制,可以使用 NAS 存放一些不经常变动的文件,比如数据模型、静态资源等。参考

备注:请确保 Fun 工具版本在 2.16.0+

在很多函数计算的实战文章里,比如《开发函数计算的正确姿势——tensorflow serving》,我们都通过 NAS 存放一些体积比较大且不易变动的资源。这使得即使在依赖比较大的场景下,我们依旧可以借助于函数计算快速开发一个 Serverless 应用。 NAS 在帮助函数计算解决大依赖问题的同时,由于其自身 NAS 本身的配置也比较复杂,也增加了函数计算的使用难度。

为了简化使用 NAS 的体验,我们在 Fun 2.16.0 添加了一个新的配置项 NasConfig: Auto 。通过该属性,可以一键将 nas 及其依赖的 vpc 资源一同创建出来。

下面,我们先回顾下传统的 NAS 配置方法,再介绍下新的 NAS 配置方法,看新的配置方法是如何实现简化 NAS 配置步骤的效果的。

2. 传统的配置方式

《开发函数计算的正确姿势 —— 本地运行、调试、发布 NAS 函数》中,我们已经介绍过,如何在配置、调试、发布函数计算与 NAS 服务。

从文章中的介绍来看,通常情况下,为了在函数计算中使用 NAS 服务,我们通常需要经过以下几个步骤:

  1. 登陆 vpc 控制台,依次创建

    1. 专有网络
    2. 创建交换机
    3. 创建安全组
  2. 登陆 nas 控制台,依次创建

    1. 文件系统
    2. 添加挂载点
  3. 编写 template.yml,复制上面步骤创建好的资源,并编写 [VpcConfig]() 以及 NasConfig 的配置

完成上面的步骤后,template.yml 的内容如下:

ROSTemplateFormatVersion: '2015-09-01'
Transform: 'Aliyun::Serverless-2018-04-03'
Resources:
  nasDemo:
    Type: 'Aliyun::Serverless::Service'
    Properties:
      VpcConfig:
        VpcId: 'vpc-bp12hm92gdpcjtai7ua82'
        VSwitchIds: [ 'vsw-bp1gitru7oicyyb4uiylj' ]
        SecurityGroupId: 'sg-bp1243pi65bw4cjj4bks'
      NasConfig: 
        UserId: 10003
        GroupId: 10003
        MountPoints: 
          - ServerAddr: '012194b28f-ujc20.cn-hangzhou.nas.aliyuncs.com:/'
            MountDir: '/mnt/nas'

最后使用 fun local 或者 fun deploy 就可以进行调试以及部署了。

3. 新的配置方式

如果仅仅想使用 nas,但又不想关心专有网络、交换机、挂载点等相关概念,可以直接使用 Fun 2.16.0 提供的新的配置 NasConfig: Auto 。

一个使用了 NasConfig 的服务示例如下:

ROSTemplateFormatVersion: '2015-09-01'
Transform: 'Aliyun::Serverless-2018-04-03'
Resources:
  nasDemo:
    Type: 'Aliyun::Serverless::Service'
    Properties:
      NasConfig: Auto

有了 NasConfig: Auto ,不需要声明 VPC 的配置以及 NAS 的配置,在使用 fun deploy 时,Fun 会自动生成相关的配置。

部署日志类似如下: 

Waiting for service nasDemo to be deployed...
    ... ...
    using 'VpcConfig: Auto', Fun will try to generate related vpc resources automatically
        ... ...
    generated auto VpcConfig done:  {"vpcId":"vpc-bp1pcr7o8ksmgojt4rfws","vswitchIds":["vsw-bp13qdw9qe1i2it4y0700"],"securityGroupId":"sg-bp161u0547x0lq5k6i5x"}
    using 'NasConfig: Auto', Fun will try to generate related nas file system automatically
        ... ...
    generated auto NasConfig done:  {"UserId":10003,"GroupId":10003,"MountPoints":[{"ServerAddr":"0294c4a7ac-vrk7.cn-hangzhou.nas.aliyuncs.com:/nasDemo","MountDir":"/mnt/auto"}]}
    Checking if nas directories /mnt/auto/nasDemo exists, if not, it will be created automatically
    Checking nas directories done ["/mnt/auto/nasDemo"]
    ... ...
service nasDemo deploy success

从上面的部署日志可以发现,由于多了 NasConfig: Auto 的配置,部署操作会自动比传统配置方式多几步:

  1. 自动创建 VPC 相关的资源
  2. 自动创建 NAS 相关的资源
  3. 检测在函数计算配置的挂载目录是否存在,如果不存在,则自动创建

经过上面三步自动化的操作,我们就可以直接在函数计算使用 NAS 服务了。 

注意:

  1.  NasConfig: Auto 的部署效果是幂等的,即,如果依赖的相关资源不存在,则会自动创建,如果相关资源已经存在,则会直接使用相关资源。
  2. fun local、fun deploy 均支持 NAsConfig: Auto 配置
  3. 使用 NasConfig: Auto 时,NAS 文件系统会被自动挂载到函数计算运行环境的 /mnt/auto 目录

4. 总结

相对于传统的 NAS 配置方法,新的配置方法可以极大的减少了用户配置 NAS 服务与函数计算的步骤。通过新的配置方法,用户可以更方便的在函数计算中使用 NAS 服务存放数据模型、语言依赖等资源。

5. 更多参考

  1. Fun 首页 
  2. 开发函数计算的正确姿势——tensorflow serving
相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
1月前
|
运维 Linux Apache
Puppet 作为一款强大的自动化运维工具,被广泛应用于配置管理领域。通过定义资源的状态和关系,Puppet 能够确保系统始终处于期望的配置状态。
Puppet 作为一款强大的自动化运维工具,被广泛应用于配置管理领域。通过定义资源的状态和关系,Puppet 能够确保系统始终处于期望的配置状态。
51 3
|
19天前
|
监控 安全 Serverless
"揭秘D2终端大会热点技术:Serverless架构最佳实践全解析,让你的开发效率翻倍,迈向技术新高峰!"
【10月更文挑战第23天】D2终端大会汇聚了众多前沿技术,其中Serverless架构备受瞩目。它让开发者无需关注服务器管理,专注于业务逻辑,提高开发效率。本文介绍了选择合适平台、设计合理函数架构、优化性能及安全监控的最佳实践,助力开发者充分挖掘Serverless潜力,推动技术发展。
41 1
|
1月前
|
监控 Serverless 云计算
探索Serverless架构:开发的未来趋势
【10月更文挑战第5天】Serverless架构,即无服务器架构,正逐渐成为云计算领域的热点。它允许开发者构建和运行应用程序而无需管理底层服务器。本文介绍了Serverless架构的基本概念、核心优势及挑战,并展示了其在事件驱动编程、微服务架构和数据流处理等场景中的应用。通过优化冷启动、使用外部存储等实战技巧,开发者可以更好地利用Serverless架构提升开发效率和应用性能。随着技术的成熟,Serverless将在未来软件开发中扮演重要角色。
|
1月前
|
Linux 应用服务中间件 Shell
利用 ACME 实现SSL证书自动化配置更新
【10月更文挑战第11天】多项式承诺原理是密码学中的重要工具,允许证明者向验证者承诺一个多项式并证明其某些性质。Kate多项式承诺是一种知名方案,基于有限域上的多项式表示,通过生成和验证简洁的证明来确保多项式的正确性和隐私。其安全性基于离散对数假设。应用场景包括区块链中的零知识证明和可验证计算,以及多方计算和身份认证协议。在区块链中,Kate多项式承诺可用于保护隐私币和智能合约中的敏感信息。
|
29天前
|
监控 关系型数据库 MySQL
PowerShell 脚本编写 :自动化Windows 开发工作流程
PowerShell 脚本编写 :自动化Windows 开发工作流程
26 0
|
3月前
|
持续交付 jenkins Devops
WPF与DevOps的完美邂逅:从Jenkins配置到自动化部署,全流程解析持续集成与持续交付的最佳实践
【8月更文挑战第31天】WPF与DevOps的结合开启了软件生命周期管理的新篇章。通过Jenkins等CI/CD工具,实现从代码提交到自动构建、测试及部署的全流程自动化。本文详细介绍了如何配置Jenkins来管理WPF项目的构建任务,确保每次代码提交都能触发自动化流程,提升开发效率和代码质量。这一方法不仅简化了开发流程,还加强了团队协作,是WPF开发者拥抱DevOps文化的理想指南。
82 1
|
3月前
|
持续交付 jenkins C#
“WPF与DevOps深度融合:从Jenkins配置到自动化部署全流程解析,助你实现持续集成与持续交付的无缝衔接”
【8月更文挑战第31天】本文详细介绍如何在Windows Presentation Foundation(WPF)项目中应用DevOps实践,实现自动化部署与持续集成。通过具体代码示例和步骤指导,介绍选择Jenkins作为CI/CD工具,结合Git进行源码管理,配置构建任务、触发器、环境、构建步骤、测试及部署等环节,显著提升开发效率和代码质量。
73 0
|
3月前
|
Java Spring 开发者
解锁 Spring Boot 自动化配置的黑科技:带你走进一键配置的高效开发新时代,再也不怕繁琐设置!
【8月更文挑战第31天】Spring Boot 的自动化配置机制极大简化了开发流程,使开发者能专注业务逻辑。通过 `@SpringBootApplication` 注解组合,特别是 `@EnableAutoConfiguration`,Spring Boot 可自动激活所需配置。例如,添加 JPA 依赖后,只需在 `application.properties` 配置数据库信息,即可自动完成 JPA 和数据源设置。这一机制基于多种条件注解(如 `@ConditionalOnClass`)实现智能配置。深入理解该机制有助于提升开发效率并更好地解决问题。
70 0
|
3月前
|
前端开发 Java UED
JSF遇上Material Design:一场视觉革命,如何让传统Java Web应用焕发新生?
【8月更文挑战第31天】在当前的Web开发领域,用户体验和界面美观性至关重要。Google推出的Material Design凭借其独特的动画、鲜艳的颜色和简洁的布局广受好评。将其应用于JavaServer Faces(JSF)项目,能显著提升应用的现代感和用户交互体验。本文介绍如何通过PrimeFaces等组件库在JSF应用中实现Material Design风格,包括添加依赖、使用组件及响应式布局等步骤,为用户提供美观且功能丰富的界面。
45 0
|
3月前
|
前端开发 大数据 数据库
🔥大数据洪流下的决战:JSF 表格组件如何做到毫秒级响应?揭秘背后的性能魔法!💪
【8月更文挑战第31天】在 Web 应用中,表格组件常用于展示和操作数据,但在大数据量下性能会成瓶颈。本文介绍在 JavaServer Faces(JSF)中优化表格组件的方法,包括数据处理、分页及懒加载等技术。通过后端分页或懒加载按需加载数据,减少不必要的数据加载和优化数据库查询,并利用缓存机制减少数据库访问次数,从而提高表格组件的响应速度和整体性能。掌握这些最佳实践对开发高性能 JSF 应用至关重要。
68 0

热门文章

最新文章

相关产品

  • 函数计算