Google 揭秘生产环境调试心法:SRE 与 SWE 的四大思维差异与实战路径

本文永久链接 – https://tonybai.com/2025/mm/dd/debugging-Incidents-in-google 大家好,我是Tony Bai。 尽管 Google 的 SRE 手册为我们描绘了理想的运维蓝图,但在“炮火连天”的生产事故现场,工程师的真实反应往往是另一番景象。 最近,一篇发表于 ACM Queue 的研究深入剖析了 Google 工程师(包括 SRE 和 SWE)在处理复杂分布式系统生产问题时的真实行为模式。这项研究通过对大量事后复盘(postmortem)的分析和深度访谈,揭示了不同角色工程师在思维模型、工具选择上的显著差异,并总结出了一套普遍适用的“调试构建块”。对于每一位构建和维护大规模服务的工程师来说,这些来自一线的洞察无疑是一份宝贵的实战指南。 ...

August 10, 2025 · 8 min · Tony Bai

Service Weaver:以单体形式编码,以微服务形式部署

本文永久链接 – https://tonybai.com/2023/10/09/service-weaver-coding-in-monolithic-deploy-in-microservices 分布式应用的主流架构模式演化为微服务架构已经有些年头了。微服务、DevOps、持续交付和容器技术(k8s)是构成最初云原生概念的核心要素。它们相生相拌,共同演进,并推动了云计算全面进入云原生时代。 云原生应用普遍采用微服务架构,遗留的单体应用程序会逐步演进并拆分为多个微服务,新应用则会直接采用微服务架构进行设计与实现。微服务的好处是显而易见的: ...

October 9, 2023 · 24 min · Tony Bai

聊聊Go应用输出日志的工程实践

配图改自网络 本文永久链接 – https://tonybai.com/2022/03/05/go-logging-practice Go隶属于后端语言,以开发各类服务、中间件和系统平台见长。日常学习Go语言时,日志不是不可或缺的,甚至是无需考虑的,但是一旦到真正的Go的工程实践中,输出日志便是我们绕不过去的、必须面对的问题。 ...

March 5, 2022 · 11 min · Tony Bai

Go函数调用链跟踪的一种实现思路

这篇文章的初衷是想解答知乎上的一位知友提出的问题。没想到完成一种实现后,这个问题居然被删除了。那么既然实现了,就分享出来吧。问题的原文找不到了,问题大致是这样的: 一个程序中存在多个函数调用链都调用了函数D: A1 -> B1 > C1 -> D A2 -> B2 > C2 -> D A3 -> B3 -> C3 -> D ... ... 那么,如果某次函数D被调用时出现了问题,那么怎么知道这个D是哪个函数调用链里的D呢? 有些gopher可能会说通过Delve在线调试打印函数调用栈可以知晓D的调用链,还有些gopher可能会说通过各个函数中输出的业务日志可以查明出问题的D归属的函数调用链,这些都是可行的思路。 ...

December 10, 2020 · 10 min · Tony Bai