有时候,你只需要写下你愿意做什么和不愿意做什么。我有一个简短的故事,讲述的是在工作中这样做,然后把同样的思路运用到我当前的担忧中。
我曾经在一个团队里,负责维护和维护大量的Linux机器,它们共同构成了一个大型社交网络的“网络层”。你知道的,就是那个满是猫咪图片的……后来还有整个种族灭绝事件和法西斯主义的事件。没错,就是它们。
无论如何,考虑到我们拥有六位数的机器数量,并且还在稳步增长,人们总是在机器上、机器下和机器上进行各种实验,因此有必要采取一些平衡措施,以防止设备频繁故障。“一切都坏了”和“什么都做不出来,生意就完了”之间只有一线之隔。
后来我意识到,如果我写一个维基页面,把我们愿意支持的东西记录下来,我可以等六个月左右,然后它就会像以前一样。因为那里的人流动率已经够高了,所以六个月的员工流动率就足以让它看起来像是另一家公司了。我只需要写好,等一会儿,然后在需要的时候引用它。
以前经常发生的事是,我们的“主机前缀”(也就是主机名的前几个字母)成了垃圾场。它就像是测试、尝试,或者在“完成”后放置机器的默认位置,无论这意味着什么。我们收集了各种各样尚未准备好处理生产流量的破损硬件。有时,这些硬件是开发阶段的,缺少我们依赖的某些关键功能,比如缺少几百GB的磁盘空间来支持几天的本地日志记录。
我的页面变成了一堆东西的清单,对于任何关注的人来说,这些都不会特别令人惊讶。它必须至少有这么多内存、这么多磁盘空间、这么多网络带宽、这个版本的 CentOS,并且安装并正常运行公司生产环境 Chef……等等,就这样一直持续下去。很明显,仅仅安装一个东西是不够的。它必须运行到完成。这意味着成功运行!
我真希望当时我保存了一份,因为十多年后再回头看看我当时都记了些什么,应该会很有意思。算了,算了。
总之,等它酝酿了一段时间后,我就能指点大家了,说“这是我们要做的,我们会拒绝的”。虽然它并非硬性规定,但它清晰地表达了我们的期望。或者,好吧,坦白说——我的期望。我对哪些东西值得支持,哪些东西完全是废纸篓、浪费时间,有着自己强烈的意见。
该页面有一节与“不合规主机处理”有关。我忘了具体细节了(再次强调,这里是操作内存……),但大概包含诸如“我们禁用了它,它就停止接收生产流量”、“它被重新安装以移除不合规的自定义设置”以及“它被从主机前缀中完全移除”之类的内容。最后一条主要是为了解决硬件不匹配的问题,因为无论怎么“重新安装以移除那些乱七八糟的东西”都无法解决磁盘空间不足(或其他问题)。
那个页面上有一段几乎被引用的内容确实流传到了外面。它与“不合规的主机”行为有关:
注意:为了保持场地健康,以上任何情况都可能*未经事先通知*,以实验业主。先排水,再调查。
此处的“Drain”实际上指的是我们可以运行一个命令来禁用负载均衡器中的主机,使其停止接收流量。当某台主机吞噬流量并给用户带来麻烦时,请先禁用它,然后再想办法解决。不要在讨论这台不听话的 Web 服务器会发生什么问题时,让用户受苦。
考虑到所有这些,我最终整理出一份 Feed 阅读器行为清单也就不足为奇了。我把它列成一堆你在大型科技公司绩效评估中可能会看到的条目。你知道那些像“$name 始终按时交付 foo 和 bar”这样的行为吗?想象一下,但针对的是 Feed 阅读器。
我的想法是,我可以指着它说:“就是那里,看,我不是任性,也不是专门针对你……这代表着一个在你出现之前就存在的常见问题。” 这些项目简短而实用,并具有唯一的标识符,因此可以指着其中一个说“就这样做”。
我已经和其他几个在这个领域工作、需要处理大量来自 Feed 阅读器软件流量的人分享了这篇文章。如果你也是其中之一,并且想看看,请给我留言。
在某个时候,我会向世界公开它,然后我们看看会发生什么。