workaround带来的技术债务

今天读《SRE·Google运维解密》中关于监控一节的时候,有一段内容讲到了workaround
或者说临时解决办法可能会带来难以偿还的技术债务的问题,在我自己的工作经历中确实有
过这样的经历,值得思考。

人其实是有惰性的,一旦在发生的问题的时候通过某种简单的方法绕过了根因通过打补
丁的方式“解决”了这个问题,那么在没有明确的激励机制的情况,很多时候就不会愿
意再花时间和精力去从根本上解决这个问题。

以下是书中原文

当时,Gmail的监控系统会在某个任务被Workqueue系统干掉时发出警报。即使是在当时,
这种配置也很差劲:Gmail有几千个任务,每个任务都代表了百分之几的用户。虽然我们
非常关注Gmail用户的体验,但是这样的警报规则是不可持续的。

为了解决这个问题,Gmail SRE构建了一个工具来操作调度器尽量减小对用户的影响。整
个团队就这个问题进行了多次讨论:是否应该自动化整个方案?但是一些团队成员坚持认
为开发这样的自动化方案会影响对真实问题的最终修复。

团队中出现的这种冲突是合理的,这反映出团队自我约束方面的信任危机:一些团队成员
想要实现某种“hack”从而为真正的修复方案争取时间,而另外一些成员则担心实现这个
“hack”会使得真正的修复优先级无限降低。这种担心是正确的,确实这种打补丁的形
式会造成无法维护的系统债务。管理者和技术领导者在这个过程中应该起到直接作用,在
紧急警报带来的压力减轻之后应该继续支持和优先处理那些长期修复问题的工作。

任何一个可以死记硬背,或者基于某种公式的紧急警报的响应都应该引起注意。团队中一
部分人不愿意打补丁的原因是因为他们不相信未来能够处理这些技术债务。这是一个值
得与上级讨论的问题。