为 Serverless Devs 插上 Terraform 的翅膀,实现企业级多环境部署(下)

简介: 在上篇中,主要介绍了 Serverless Devs 多环境功能的使用,用户读完可能会些疑问,本文会就一些常见问题进行下回答。

在上篇中,主要介绍了 Serverless Devs 多环境功能的使用,用户读完可能会些疑问,本文会就一些常见问题进行下回答。


1、Serverless Devs 和 Terraform 的关系

可能有些用户会问,既然你们已经支持了 Terraform,那 Serverless Devs 还有什么作用,是不是直接用 Terraform 就可以了?


Serverless Devs 和 Terraform 的定位还是明显不同的。Serverless Devs 面向应用管理及 DevOps,Terraform 面向云资源,是两个不同的领域,但并不表示不能在某些层面有交集或者不能集成,集成和被集成能力本来就是开源工具是否标准化的一个衡量标准。


Terraform 解决的是云资源的 Provisioning,这个领域是有非常清晰的方法论的。而 Serverless Devs 更应该强调如何使用好云资源,两者的关系可以用几个场景说明:


  • Serverless Devs 更多关注如何把代码或者安装依赖分片上传到NAS上,更少关注VPC/交换机/安全组/NAS挂载点如何创建出来;
  • Serverless Devs 更多关注如何把文件上传到 OSS,并且自动触发函数完成报表的生成,更少关注 OSS Bucket 如何创建;
  • Serverless Devs 更多关注如何构建代码/镜像、制作 Layer、部署代码、发布版本、灰度放量来构造完整的 CI/CD 体验,更少关注 FC 的网络、日志仓库、ACR 实例如何创建出来;
  • Serverless Devs 更多关注如何远程调试代码,如何登陆到线上实例,如何通过日志以及监控快速发现业务的异常;


可以看到 Serverless Devs 更加重点关注的是应用运行态以及运维态的操作,这也是 Serverless 架构的工具最重要的使命,但 Serverless Devs 负责的是 Serverless 应用全生命周期管理,必然少不了资源的管理,我们在实践过程中发现,无论是用云产品 SDK 还是 Pulumi 这类 GPLs 都需要投入很大精力在资源生命周期的对接上,这对于组件开发者对接更多云产品来说是非常低效的。


而 Terraform 在这方面是最专业的,无论是标准化程度、受认可程度以及资源的丰富度都能很好满足终端用户及开发者的需求,因此才触发 Serverless Devs 和 Terraform 结合这一想法。


Serverless Devs 没有和 Terraform 耦合,相反的是让 Terraform 的 HCL 语言自然的在 Serverless Devs 的组件规范里玩转起来,可以认为是 Serverless Devs 支持多语言的一种能力。对开发者的价值是可以比较低代码的完成基础设施的搭建,把精力投入到和 Serverless 应用生命周期管理相关的开发上,不然就得开发大量的资源CRUD代码,这个是非常低效的。


2、多环境功能和直接用Terraform有什么不同

既然多环境部署也走的是Terraform,那和我直接用Terraform部署资源有什么区别?


  • Terraform 是个人版的工具,需要本地管理ak/sk、本地安装 Provider;而多环境是个多租的服务,不需要用户自己来维护这些
  • 多环境功能重要的是"管理"的能力,比如模板有版本管理能力,当模板发布了新版本并且 IaC 的变更是不兼容的,此时用户如果更新环境会导致未知问题,这种情况下系统会自动识别并且保证存量环境的变更还使用旧版本,不受不兼容变更带来的影响
  • Terraform 是纯面向资源的编排工具,和应用的关联很弱;而环境和服务、流水线可以天然地形成连接关系,比如通过环境可以感知到资源被哪些服务所使用、服务可以通过环境的授权来获取访问资源的权限、可以在流水线中将服务一次性部署到所有环境上,而这些是 Terraform 做不了的
  • Terraform 只是多环境实现 IaC 的一个技术选型,未来还计划对接 ROS、Pulumi 等 IaC 项目

3、多环境和环境变量的关系

在 CI/CD 中使用环境变量,环境变量中配置VPC、NAS啥的,s.yaml中引用环境变量似乎就可以了,为什么还要造一个环境概念?


环境和环境变量从名字就能区分出定位的差异,环境变量就是一组静态配置,虽然可以将一些资源配置写到环境变量内并在 CI/CD 流水线中引用,但这种方式不具备资源纳管的能力。


而环境是个实体资源,具备基础设施的生命周期管理能力,通过环境可以完成基础设施的增删改查,并可以通过访问控制的方式授予用户的操作权限,更新环境时还可以对接一些安全检查的能力。


通过环境可以让基础设施受到保护,比如当多个服务共享环境时,如果发起环境删除,系统会自动发现环境被其他服务所依赖,此时删除会被拒绝。

4、只能企业用户使用么,个人开发者怎么用

我是个人开发者,不懂 Terraform,文章中各种模板定义看的有点晕,那我还适合用这个功能么?

个人开发者一样适用,但不应该让这部分用户承担写模板的工作,而是由平台提供各种业务场景化的模板,开发者开箱即用,这也是我们后续的主要工作。


对个人用户来说,上阿里云最复杂的某过于RAM、VPC、ECS、SLB、NAS这些复杂的概念,学习曲线太长。在 Serverless 架构下这个问题尤为明显,Serverless 宣称低门槛、低成本、低运维,但是上手Serverless需要了解一大堆概念,配置一大堆东西,很多用户在这过程中就被"劝退"了,而环境模板和环境可以极大地简化云产品的上手成本,同时又能很安全地操作。


举个例子,用户选择一个模板部署环境,就可以一键拉起所有云资源,这样才算是真正的 Serverless。


5、实现原理

  • 遵循 Serverless Devs 组件开发规范,通过实现一个组件来完成和后端服务的对接
  • 后端服务采用 Serverless + K8s 的架构,通过消息触发函数,来完成模板的渲染以及部署任务的执行
  • 采用 KubeVela 来完成 K8s 资源的管理以及 Terraform 任务的执行


6、多环境为什么是组件级的能力,而不是CLI的能力

Serverless Devs 分为 CLI组件

  • CLI 提供最通用的能力,不依赖任何组件,比如:s init、s config、s verify、--template、--debug
  • 组件提供特定的功能,比如 s deploy、s build、s invoke 这些是fc组件的能力


从 env 命令的通用性以及要解决的问题上看,做到 CLI 内也是合适的。但从实现上看,因为需要一个服务端的控制平面来完成用户资源的部署,出于安全性考虑必须要特定的云服务来完成,所以才通过一个组件来完成。


首焦.png
使用 Serverless 1 分钟轻松搭建你的首个个人网站!


免费额度,轻松上手!小白也可极速建站:无需考虑服务器和网站源码,我们为你提供免费计算资源,运维管理服务器。活动期间完成场景体验,即有机会领取天猫超市 10 元代金券


活动时间:2022年6月20日-7月1日(工作日期间领取)答疑群:钉钉搜索 “44700570”体验地址:点击阅读原文 or 浏览器访问(建议pc端体验)


https://developer.aliyun.com/adc/series/activity/serverless2022

相关实践学习
【AI破次元壁合照】少年白马醉春风,函数计算一键部署AI绘画平台
本次实验基于阿里云函数计算产品能力开发AI绘画平台,可让您实现“破次元壁”与角色合照,为角色换背景效果,用AI绘图技术绘出属于自己的少年江湖。
从 0 入门函数计算
在函数计算的架构中,开发者只需要编写业务代码,并监控业务运行情况就可以了。这将开发者从繁重的运维工作中解放出来,将精力投入到更有意义的开发任务上。
相关文章
|
5月前
|
存储 人工智能 安全
企业级 AI Agent 开发指南:基于函数计算 FC Sandbox 方案实现类 Chat Coding AI Agent
通过 Sandbox 与 Serverless 的深度融合,AI Agent 不再是“黑盒”实验,而是可被企业精准掌控的生产力工具。这种架构不仅适配当前 AI Agent 的动态交互特性,更为未来多模态 Agent、跨系统协作等复杂场景提供了可复用的技术底座。若您的企业正面临 AI Agent 规模化落地的挑战,不妨从 Sandbox 架构入手,结合函数计算 FC 的能力,快速验证并构建安全、高效、可扩展的 AI 应用系统。
|
5月前
|
存储 人工智能 Serverless
企业级 AI Agent 开发指南:基于函数计算 FC Sandbox 方案实现类 Chat Coding AI Agent
本文深入解析AI Agent系统架构,特别是以Sandbox为核心的落地实践。聚焦泛Chat模式下AI应用的挑战与解决方案,涵盖会话亲和性、隔离性、存储机制、会话恢复、资源弹性等关键技术点,阿里云函数计算(FC)为 AI Agent 系统在企业中的落地实践提供实际解决方案,展示了如何高效、安全地构建可扩展的 AI 应用系统。
|
12月前
|
机器学习/深度学习 人工智能 自然语言处理
企业级API集成方案:基于阿里云函数计算调用DeepSeek全解析
DeepSeek R1 是一款先进的大规模深度学习模型,专为自然语言处理等复杂任务设计。它具备高效的架构、强大的泛化能力和优化的参数管理,适用于文本生成、智能问答、代码生成和数据分析等领域。阿里云平台提供了高性能计算资源、合规与数据安全、低延迟覆盖和成本效益等优势,支持用户便捷部署和调用 DeepSeek R1 模型,确保快速响应和稳定服务。通过阿里云百炼模型服务,用户可以轻松体验满血版 DeepSeek R1,并享受免费试用和灵活的API调用方式。
694 12
|
11月前
|
人工智能 Cloud Native Serverless
Serverless Devs 官网全新升级,Serverless+AI 重磅来袭
Serverless Devs 官网全新升级,Serverless+AI 重磅来袭
202 3
|
运维 安全 IDE
加速阿里云部署:Terraform在甄云科技的深度应用
甄云科技是一家领先的数字化采购平台服务商,通过Terraform实现全球云基础设施的高效管理与快速部署。公司成立于2017年,已服务全球30多个行业的中大型企业,客户遍布20多个国家和地区。利用IaC(基础架构即代码)理念和Terraform工具,甄云科技显著提升了开发与运维效率,减少了人为错误,加快了迭代速度,并支持业务快速扩展,为全球化战略提供了稳固的云基础架构支持。未来,公司将持续优化技术框架,回馈社区,助力更多企业的数字化转型。
|
人工智能 Cloud Native Serverless
Serverless Devs 官网全新升级,Serverless+AI 重磅来袭
Serverless Devs 官网迎来全新升级,主站以 AI 应用开发的叙事透出项目特性和解决方案。应用中心(Registry)将各类热门 AI 应用模版、实用 AI 工具以及 AI 工作流等呈现给用户。本次升级主题为“一站式 AI/函数/应用开发”,希望为开发者提供更加便利的应用模版搜索和展示服务,本文将对本次升级的三大看点进行整理,欢迎您来体验!
|
弹性计算 持续交付 API
基于 ROS 的Terraform托管服务轻松部署ChatGLM-6B
文章介绍了如何利用ROS和Terraform模板轻松自动化部署基于GLM架构、优化中文对话的ChatGLM-6B模型至阿里云,提高了部署效率与便捷性,适用于多种应用场景,且模型部署过程详细,彰显了基础设施即代码(IaC)的优势。
基于 ROS 的Terraform托管服务轻松部署ChatGLM-6B
|
弹性计算 人工智能 持续交付
基于 ROS 的Terraform托管服务轻松部署Qwen-7B-Chat
文章介绍了如何利用ROS和Terraform模板轻松自动化部署阿里云的Qwen-7B-Chat大语言模型服务,提高了部署效率与便捷性,是实现云资源和服务快速上线的最佳实践。
基于 ROS 的Terraform托管服务轻松部署Qwen-7B-Chat
|
Serverless 对象存储
现代化 Web 应用构建问题之配置Serverless Devs的秘钥信息如何解决
现代化 Web 应用构建问题之配置Serverless Devs的秘钥信息如何解决
192 1
|
缓存 JavaScript Serverless
阿里云云效产品使用合集之如何在Serverless Devs阶段指定Node.js版本
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。

热门文章

最新文章

相关产品

  • 函数计算
  • 推荐镜像

    更多