适应度函数是什么
架构适应度函数(Fitness Function)把架构要求写成可自动验证的检查,例如分层依赖规则、性能门槛、安全基线与接口契约,并在流水线或定期扫描中持续执行。它的价值在于把“架构约束”从文档里的一句话变成每次提交都会被检验的条件,防止架构在迭代中悄悄退化。
怎么设计
检查要少而准:每条检查都要有明确的失败动作(阻塞合并还是仅告警)和修复指引,否则会被当成噪声绕过。对存量系统可以用棘轮策略——先冻结现状,只禁止新增违规,再分批收敛。检查项本身也要版本化并指定维护人,随架构演进调整。
基本信息
| 检查类型 | 结构规则、性能门槛、可靠性验证、安全与合规检查 |
|---|---|
| 载体 | CI 检查、定期扫描、生产巡检 |
| 输出 | 通过、告警或阻塞,并给出修复指引 |
| 维护 | 检查项版本化,指定架构或平台团队负责 |
典型使用场景
- 分层架构:禁止 domain 层直接依赖 infrastructure 层
- 性能约束:核心接口在基准环境下的 P95 阈值
- 安全基线:禁止明文密钥入库、依赖漏洞高危及阻塞
- 接口契约:对外接口变更需通过兼容性检查
- 可运维性:新服务必须具备健康检查与日志规范
- 存量收敛:先冻结现状,再逐步降低违规数量
检查示例
检查示例
# 结构规则:分层依赖(架构测试或静态检查)
禁止:domain 层 import infrastructure 层
# 性能门槛:在基准环境用固定数据集压测
核心接口 P95 < 200ms,超出则阻塞合并
# 安全与合规
依赖漏洞高危 0 个、禁止硬编码密钥
# 可运维性
新服务必须注册健康检查端点并接入日志采集类型与失败动作
| 类型 | 检查示例 | 失败时动作 |
|---|---|---|
| 结构 | 分层依赖、模块边界 | 阻塞合并并要求重构 |
| 性能 | P95 门槛、慢查询数 | 阻塞或告警,视业务重要度 |
| 安全 | 漏洞等级、密钥扫描 | 阻塞合并,高危需限期修复 |
| 运维 | 健康检查、日志规范 | 告警并要求补齐后上线 |
阈值要基于可复现的基准环境和固定数据集,否则同样的代码在机器负载波动时结果不同,检查会被判定为不可信而失效。