“白痴指数”,用来计算某个制成品的成本比其基本材料的成本高多少。软件开发“白痴指数”,用来计算计算机软件总成本比功能相关成本高多少。
- 总成本(功能相关 + 非功能相关):设计、开发、测试、部署、配置
- 功能相关:设计、开发
测试、部署、配置等非功能相关的成本越高,项目水分越大。
为什么我突然想写《软件开发“白痴指数”》 ?
今天我负责 release 一个新版本,需要配置一个 connection token,我花了大约 3~4 个小时才完成,差点没把我累死。😭
就是一个环境变量啊,干嘛搞得这么复杂呢?
美其名曰:架构安全。但是软件系统的安全是木桶效应,瓶颈不在最高的那块板,而是在最低的那块板。DevOps 搞得这么复杂,复杂到 DevOps developers 都不能完全理解和 100% 保证正确。最低的那块板就变成了维护如此复杂 DevOps 的人了。这里推荐阅读《社会工程学》 😂
简单记录一下我今天干了什么:
- 使用 terraform 在 GCP 创建一个 Secret Manager,用来储存密钥。
- 在 k8s 中配置 secret-manager client,用来在读取密钥。
- 使用 terraform 为 k8s 配置 Secret Manager 权限,没有权限读不到密钥
- 更新 k8s container image tag,得到 k8s load-balancer 切换 pod。
- 使用 Postman 调用 health endpoint,并查看 container image tag 是否正确
- 查看 metabase 已确定 database migrations 正确执行
- 查看 datadog, Google Pub/Sub subscriptions, 等等周边服务
关键是上面这些操作全都要通过 gitlab MR 和 CICD,美其名曰 GitOps,😂
- 编写 yaml
- 提交 gitlab MR
- 请求 review
- 合并 MR,并等待 CICD
- 确认 CICD 结果
我累死了,也傻掉了,太麻烦了。反复在 gitlab repositories 间横跳、提交 code、等待 review、执行 merge、继续等待,啊啊啊啊啊啊
最后再说一遍
软件开发“白痴指数”,非功能相关的成本越高,项目水分越大。