IaC:简洁 or 灵活

最近在搞devops,有一点对Infrastructure as code代码风格的感悟

直接从一个例子展开吧

假如需要将原来单账号下以下多网络分别创建到单独的账号下

1
2
3
4
5
6
7
8
9
10
11
12
# network.auto.tfvars
vpcs = {
network1 = {
name = "vpc-1"
}
network2 = {
name = "vpc-2"
}
network3 = {
name = "vpc-3"
}
}

为了网络创建复用自然需要使用module去按账号构建

(别想动态指定providerterraform不支持!)

那问题是怎么将vpc的配置按账号分组传递给对应的module

来看两种方案

Read More

FLT空投:2023年参与过web3的开发能领

偶然发现一个参与过web3开发能领的空投:FLT-DROP,目前价值600刀左右。

这个可能在web3开发里不算啥新鲜事,对于一个只是玩票过web3的开发还是比较有意思的(之前研究ICP时写过一个web3投票的github repo,算是浅浅的参与了下web3)。

那就记录下如何领到空投吧(毕竟第一次弄web3钱包,转错了网络还是很折腾的)

Read More

Rust工具集之arc-swap

Rust中常有配置读写的操作,一般可以用Arc<RwLock<T>>来实现,也可以用arc-swap来。有什么不同?

下面拿一个例子来说明下

假设有个配置,会有一个read thread不断获取配置,配置更新时要实时反映出来。

Read More

Rust设计模式:typestate

今天聊聊typestate模式。

新版oauth2-rs使用这个模式是想解决一个问题。

Oauth2中,一般需要提前配置好auth_url, token_url, introspect_url等,才能调用后续的鉴权相关功能。比如没有token_url配置好,你就无法成功拿授权码(code)获取token

但如果用户忘了配置,那就会在调用获取token时才得到运行时错误。

能不能在编译时就把错误暴露出来,让用户提前感知问题?

这就是typestate模式能很好解决的问题。

Read More

如何用Rust快速构建AWS Lambda Function

AWS Lambda Function是轻量级的计算服务。优势是按需付费,专注于功能,服务本身如何构建暴露都有AWS都不需要自己操心。

而按需付费基本就是服务使用时长和内存占用了,这个优化的话那妥妥的是Rust的拿手好戏, 所以现在有好多Serverless服务都用Rust构建的Lambda Function来搞。

今天简单看下如何用Rust快速构建Lambda Function(别担心没aws环境,往下看,有本地沙箱可尝试)

Read More

tokio之如何观测Rust异步任务的调度

我们知道Rust的异步是以task的调度来构建的。task作为抽象在语言层面的调度单元。

那如果想要观测其的调度执行有没有办法呢?。

有的!异步runtimetokio就有个tokio-console可以实现对异步调度的观测和分析,其对了解调度的机制和性能分析都很有帮助。

Read More