前言#

从一次线上排查说起#

做过后端开发的人,大概都有过类似的经历:线上出了问题,日志里没有明显的错误, CPU 和内存看起来都正常,但用户就是在抱怨。你在各个服务之间来回跳转, 翻日志、加临时打印、重启服务碰运气……折腾半天,才发现问题出在一个不起眼的地方—— 也许是连接池耗尽,也许是某个下游服务的 P99 延迟悄悄翻了倍。

这种排查过程,本质上是在为缺失的度量买单。

在日常工作中,我们维护着大量的微服务,处理音视频通信中的各种复杂场景。 这些年的实践让我越来越确信一件事:代码写得再好,如果没有度量,你就是在盲人摸象。 一个完善的度量体系,能让你在问题发生的第一时间看到异常, 而不是等用户投诉了才开始排查。

度量驱动开发(Metrics Driven Development, MDD)就是这个理念的系统化实践: 每一个新服务上线前,度量代码和业务代码同等重要;每一次故障复盘, 第一个问题永远是"我们的度量为什么没有提前发现这个问题?"

这本书,就是这些年实践经验的总结。

为什么要写这本书#

2020 年,我和好朋友傅健合著了初版《微服务之道:度量驱动开发》,以 Java(Spring Boot) 为主要技术栈,聚焦微服务场景。六年过去了,技术格局发生了翻天覆地的变化:

  • 多语言并行: Go、Python、C++、Rust 各有其生态中的度量方案

  • 云原生崛起: Kubernetes、Service Mesh、Serverless 改变了部署和运维方式

  • 可观测性统一: OpenTelemetry 成为 CNCF 的统一标准

  • AI 辅助编程: Claude、Copilot、ChatGPT 让代码生成速度提升了 10 倍

  • AI 应用爆发: LLM、RAG、AI Agent 带来了全新的度量挑战

尤其是最后两点。AI 能让你写代码快 10 倍,但如果没有度量护法加持, 你可能在以 10 倍速度制造技术债。而 AI 应用本身——你的 RAG 系统回答了 1000 个问题, 但你知道其中多少个答案是对的吗?你的 Agent 完成了一个任务, 但你知道它花了多少 Token、走了多少弯路吗?

这些问题,传统的 HTTP 状态码和响应时间已经无法回答。 我们需要一套全新的度量体系。

这就是本书修订的初衷:在保留 MDD 核心理念的基础上, 全面拥抱多语言、云原生和 AI 时代的度量实践。

AI 时代的三大护法#

在 AI 辅助编程时代,要驯服 AI 这匹烈马,你需要三大护法:

护法

核心问题

实现方法

AI 时代的价值

可验证性

AI 写对了吗?

TDD(测试驱动开发)

让 AI 先写测试,再写实现

可观测性

代码跑得怎样?

MDD(度量驱动开发)

代码上线即自带监控能力

可理解性

人能看懂吗?

活文档(Living Documentation)

架构图、注释、运维手册

三者不是孤立的,它们相互支撑:

          可验证性(TDD)
         "确保写对了"
               ▲
              / \
             /   \
            /     \
           /  质量  \
          /   保障   \
         ▼           ▼
 可观测性(MDD)    可理解性(活文档)
"确保跑得好"       "确保看得懂"

警告

缺少任何一个护法的后果:

  • 缺可验证性:不知道对不对,线上出问题才发现

  • 缺可观测性:出了问题定位不了,只能瞪眼

  • 缺可理解性:改不动,越改越乱,最后只能重写

谁应该读这本书#

本书适合以下读者:

  • 后端开发工程师 (3-8 年经验):正在或即将负责系统可观测性建设

  • SRE / DevOps 工程师:需要构建和维护度量体系

  • AI 应用开发者:需要监控 LLM、RAG、Agent 的性能和质量

  • 技术管理者:需要通过度量数据做出技术决策

前置知识:熟悉至少一种编程语言(Go/Python/Java/C++ 均可), 了解微服务基本概念,有一定的 Linux 和 Docker 使用经验。

如何阅读本书#

本书分为五个部分,你可以根据自己的背景选择阅读路径:

第一部分:基础篇(第 1-3 章)
"为什么需要度量,度量什么,怎么设计"
→ 所有读者建议阅读

第二部分:实现篇(第 4-6 章)
"如何用代码实现度量、聚合、展示和告警"
→ 开发者重点阅读

第三部分:运维篇(第 7-8 章)
"度量驱动的运维和全程可观测性"
→ SRE/DevOps 重点阅读

第四部分:AI 篇(第 9-11 章)
"LLM、RAG、Agent 的度量体系和评估驱动开发"
→ AI 应用开发者必读

第五部分:实践篇(第 12 章)
"最佳实践、检查清单和未来趋势"
→ 所有读者建议阅读

快速路径:如果你时间有限,建议至少阅读第 1、2、8、9、12 章, 这五章涵盖了 MDD 的核心理念和 AI 时代的新实践。

本书约定#

  • 代码示例:本书代码涵盖 Go、Python、Java、C++ 四种语言, 每章会标注代码所用语言。完整代码请访问 GitHub 仓库。

  • 专栏标记

    • 💡 "避坑指南":常见错误和解决方案

    • 🔬 "动手实验":可以在 15 分钟内完成的小实验

    • 📝 "思考题":章末的开放性问题

  • 配套资源:所有源代码、Docker Compose 配置、Grafana 面板模板 均放在 walterfan/mdd 中,以供下载参考。

致谢#

感谢合著者傅健在初版中的贡献,他的实战经验为本书奠定了坚实的基础。

感谢朋友和同事们,在日常工作中对度量驱动开发的实践和反馈, 让本书的内容不断得到验证和完善。

感谢每一位读者。如果这本书能帮助你在下一次线上故障时更快地定位问题, 少走一些弯路,那它就实现了自己的价值。

备注

关于作者

Walter Fan,资深软件工程师,从事音视频,中间件等服务的开发和度量体系建设工作。 拥有十余年分布式系统开发经验,专注于微服务架构、可观测性工程和 AI 应用开发。 技术博客:https://www.fanyamin.com