适应度函数

把架构特征写成可自动验证的检查:性能预算、依赖方向、模块耦合度、安全基线;在流水线持续执行,架构约束不再依赖口头约定。

示例接口 P99 预算检查、依赖方向检查、循环依赖检测
执行纳入流水线,违规即失败或告警
演进约束随架构目标调整,函数同步更新

检查示例与工具

检查项示例工具失败处置
依赖方向ArchUnit、dependency-cruiser构建失败
循环依赖deptrac、madge阻断合并
性能预算k6、JMeter 基线对比告警并排查
接口兼容openapi-diff、buf breaking按版本策略拒绝
  • 分层执行:提交级跑快检查,日构建跑慢检查
  • 阈值过渡:误报多的检查先告警,稳定后再改为阻断
  • 责任归属:失败通知到对应模块负责人
  • 定期复审:约束与架构目标偏离时更新或移除
  • 证据留存:失败时附检查日志与对照结果便于定位
适应度函数要控制数量:一次引入太多检查会被绕过,按风险优先级逐步添加。

易错点

  • 约束只写在文档里,实现无检查逐步漂移
  • 检查过多且强制执行,团队疲惫并绕过

数据来源与参考

  • 《Building Evolutionary Architectures》(Ford 等)
  • Neal Ford:Fitness Functions 演讲与文章
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌