为 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的能力
- CLI 提供最通用的能力,不依赖任何组件,比如:s init、s config、s verify、--template、--debug
- 组件提供特定的功能,比如 s deploy、s build、s invoke 这些是fc组件的能力
从 env 命令的通用性以及要解决的问题上看,做到 CLI 内也是合适的。但从实现上看,因为需要一个服务端的控制平面来完成用户资源的部署,出于安全性考虑必须要特定的云服务来完成,所以才通过一个组件来完成。
使用 Serverless 1 分钟轻松搭建你的首个个人网站!
免费额度,轻松上手!小白也可极速建站:无需考虑服务器和网站源码,我们为你提供免费计算资源,运维管理服务器。活动期间完成场景体验,即有机会领取天猫超市 10 元代金券。
活动时间:2022年6月20日-7月1日(工作日期间领取)答疑群:钉钉搜索 “44700570”体验地址:点击阅读原文 or 浏览器访问(建议pc端体验)
https://developer.aliyun.com/adc/series/activity/serverless2022
为 Serverless Devs 插上 Terraform 的翅膀,实现企业级多环境部署(下)的更多相关文章
- 时序数据库(TSDB)-为万物互联插上一双翅膀
本文由 网易云发布. 时序数据库(TSDB)是一种特定类型的数据库,主要用来存储时序数据.随着5G技术的不断成熟,物联网技术将会使得万物互联.物联网时代之前只有手机.电脑可以联网,以后所有设备都会联 ...
- 为Spring Cloud Config插上管理的翅膀
最近一致在更新Spring Cloud Config的相关内容,主要也是为这篇埋个伏笔,相信不少调研过Spring Cloud Config的用户都会吐槽它的管理能力太弱.因此,就有了下面为讲推荐的这 ...
- 让Storm插上CEP的翅膀 - Siddhi调研和集成
什么是 Siddhi? Siddhi 是一种 lightweight, easy-to-use, open source CEP(Complex Event Processing)引擎,由wso2公司 ...
- 插上腾飞的翅膀:为asp.net core添加protobuf支持
没时间解释了,快上车. 通过NuGet获取Zaabee.AspNetCoreProtobuf Install-Package Zaabee.AspNetCoreProtobuf 在Startup.cs ...
- 给PLSQL插上飞翔的翅膀-PLSQL优化
60-80% of database performance issues are related to poorly performing SQL,60-80%的数据库性能问题要归结于生产中糟糕的S ...
- 让MEF插上AOP的翅膀
什么是MEF Git:https://github.com/MicrosoftArchive/mef MEF也是一款ioc框架,貌似历史比较悠久了. 这里有一篇.net阵容里面主流ioc比较. htt ...
- 插上翅膀,让Excel飞起来——xlwings(二)
在上一篇插上翅膀,让Excel飞起来——xlwings(一)中提到利用xlwings模块,用python操作Excel有如下的优点: xlwings能够非常方便的读写Excel文件中的数据,并且能够进 ...
- Spring Boot (六): 为 JPA 插上翅膀的 QueryDSL
在前面的文章中,我们介绍了 JPA 的基础使用方式,<Spring Boot (三): ORM 框架 JPA 与连接池 Hikari>,本篇文章,我们由入门至进阶的介绍一下为 JPA 插上 ...
- 暑期 2021 | Serverless Devs 最全项目申请攻略来啦!
Serverless 是近年来云计算领域热门话题,凭借极致弹性.按量付费.降本提效等众多优势受到很多人的追捧,各云厂商也在不断地布局 Serverless 领域.但是随着时间的发展,Serverles ...
- 重磅 | 阿里开源首个 Serverless 开发者平台 Serverless Devs
Serverless 从概念提出到应用,已经走过了 8 个年头,开发者对 Serverless 的使用热情不断高涨.为帮助开发者实现一键体验多云产品,极速部署 Serverless 项目,10 月 2 ...
随机推荐
- 安装libevent
1.在libevent官网(http://libevent.org/)上下载压缩包(我下载的是libevent-2.1.8-stable.tar.gz) 2.解压压缩包:tar -zxvf libev ...
- FFmpeg介绍与编译
目录 FFmpeg FFmpeg核心模块 FFmpeg编译 FFmpeg FFmpeg是一套可以用来记录.转换数字音频.视频,并能将其转化为流的开源计算机程序.采用LGPL或GPL许可证.它提供了录制 ...
- .Net Core 你必须知道的source-generators
源生成器是 C# 9 中引入的一项功能,允许在编译过程中动态生成代码. 它们直接与 C# 编译器集成(Roslyn)并在编译时运行,分析源代码并根据分析结果生成附加代码. 源生成器提供了一种简化的自动 ...
- 【732. 我的日程安排表 III】线段树求解
class MyCalendarThree { public static void main(String[] args) { MyCalendarThree myCalendarThree = n ...
- ubuntu无法安装lrzsz
ubuntu无法安装lrzsz root@ubuntu:/opt/test# apt install lrzsz Reading package lists... Done Building depe ...
- 【专访蓝景科技】5G+实时云渲染赋能数字孪生,共建元宇宙
2021年伊始,元宇宙 概念不断扩展探讨与深入,国内外科技巨头扎堆布局元宇宙. 元宇宙第一股------ROBLOX 上市.字节跳动 90亿收购国内TOP1VR厂商PICO.FACEBOOK改名为 ...
- 你是怎么理解ES6中Module的?使用场景?
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 一.介绍 模块,(Module),是能够单独命名并独立地完成一定功能的程序语句的集合(即程序代码和数据结构的集合体). 两个基本的特征:外 ...
- zynq之TF卡写入常见问题
zynq之TF卡写入常见问题 1.基本原理 前面做过zynq的TF读写实验,使用串口返回了实验所需的现象.那个时候也没有深究头文件"ff.h"里的几个常用的函数.这次需要使用TF卡 ...
- FPGA 原语之一位全加器
FPGA原语之一位全加器 1.实验原理 一位全加器,三个输入,两个输出.进位输出Cout=AB+BC+CA,本位输出S=A异或B异或C.实验中采用三个与门.一个三输入或门(另外一个是两个或门,功能一致 ...
- KingbaseES使用kbbench计算连接耗时
前言 本文讨论一下KingbaseES数据库中如何计算数据库连接耗时.有这样一个场景,不借助第三方工具,在数据库服务端计算1000个数据库连接的总耗时,并取得每个连接耗时的平均值.怎样实现呢?我们可以 ...