做彩票网站需要什么服务器,wordpress slug,嘉兴建企业网站,wordpress微信机器人破解版在上篇中#xff0c;主要介绍了 Serverless Devs 多环境功能的使用#xff0c;用户读完可能会些疑问#xff0c;本文会就一些常见问题进行下回答。
1、Serverless Devs 和 Terraform 的关系
可能有些用户会问#xff0c;既然你们已经支持了 Terraform#xff0c;那 Serv…在上篇中主要介绍了 Serverless Devs 多环境功能的使用用户读完可能会些疑问本文会就一些常见问题进行下回答。
1、Serverless Devs 和 Terraform 的关系
可能有些用户会问既然你们已经支持了 Terraform那 Serverless Devs 还有什么作用是不是直接用 Terraform 就可以了
Serverless Devs 和 Terraform 的定位还是明显不同的。Serverless Devs 面向应用管理及 DevOpsTerraform 面向云资源是两个不同的领域但并不表示不能在某些层面有交集或者不能集成集成和被集成能力本来就是开源工具是否标准化的一个衡量标准。
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 内也是合适的。但从实现上看因为需要一个服务端的控制平面来完成用户资源的部署出于安全性考虑必须要特定的云服务来完成所以才通过一个组件来完成。
原文链接
本文为阿里云原创内容未经允许不得转载。