写点什么

运维团队能从橄榄球教练身上学到什么?

  • 2013-08-02
  • 本文字数:2382 字

    阅读完需:约 8 分钟

不久前看到一条微博,说的是一个团队去黄山集体旅游,但是为了防止网站出现突发问题,负责运维的同学还要背着沉重的笔记本电脑上山下山。

运维人员确实总是要面对巨大的压力,但是是否有一些方法可以缓解这些压力呢?Quora 的工程师 Edmond Lau 提出了一些解决方法。

Edmond Lau 是 Quora 的元老级工程师,他曾带领工程团队应对用户的高速增长,开发核心组件,并为新入职的工程师提供指导和入职说明,同时协调工程实习计划。此前,他曾服务于 Ooyala 的视频分析团队和 Google 的搜索质量团队。不久前,他在自己的博客上发布了一篇文章《成功剧本——关于工程,我们从橄榄球教练身上能学到什么》。

文章开头,他假设了一个场景:作为一名工程师,在凌晨 3 点收到网站的自动提醒,原来是主数据库出了问题。接下来,他说道:

传呼式职责轮换,就是说工程师轮流承担一线运维职责,应对当周所有与网站相关的警告,这是互联网产品增长阶段要应对的最具压力的经验之一。随时听从召唤,意味着你不论去哪里,都必须让笔记本电脑放在手边,而且随时都可能处理问题,有时处理的是小问题,但有些时候,面对十分严重的问题,而且需要尽快解决。

但他提出一个问题:

即使这种分担职责的方式十分重要,我们能做些什么改善这种情形吗?还有那些必须要在压力和不理想环境下处理完善的情形呢?

接下来,他认为可以从橄榄球教练身上吸取一些经验。

Edmond 引述了旧金山 49 人队前任教练 Bill Walsh 的一个策略“成功剧本”,应用这种策略,Walsh 会针对各种比赛中可能发生的情况,写下应急计划。

在他看来,Walsh 认识到一点:在面对比赛关键时刻时,可能有成千上万球队的粉丝朝你狂吼,对手的球迷也在朝你扔热狗和塑料啤酒杯,宝贵的时间在一分一秒地过去,这时的你很难保持清醒头脑,做出有效决策。Walsh 认为:在面对高度紧张、精神难以集中的比赛时刻,写下剧本有助于去掉制定决策过程。

当时没有其他队伍这么做,这种做法让我们占有了令人惊叹的战术先机。不管境况优劣,写剧本都是最有效的领导工具。这种精明的方式,让我在比赛还没有开始前就已经掌控了比赛。我发现这种方法后,其他球队用了好多年才完全推广开这个理念。

Walsh 最终带领 49 人队获得 3 次超级碗胜利,并两次获得 NFL 年度教练称号。

Edmond 认为:我们可以采纳 Walsh 的写剧本策略,将决策制定过程从高压或是高风险情形转移到更受控的环境中。以此,就可减少感情蒙蔽我们的判断,或是时间重压在我们头上之类的状况。作为工程师,我们甚至可以编写程序剧本,模拟我们的响应,还要测试,以保证剧本足够健壮。

在 Edmond 看来:

这在大型工程组织中尤为重要,因为任何可能出问题的基础设施都会出问题。

接下来,Edmond 列举了一些大型技术公司的例子,说明他们如何在正常时期模拟系统失败和灾难,以应对非常情况:

  • 2006 年时,我还在 Google 工作。Google 每年都有持续多日的“灾难恢复测试(Diaster Recovery Testing - DiRT)”活动。在 DiRT 演练中,公司会模拟诸如地震、飓风之类的灾难,并验证在断电或者整个数据中心或办公室出现故障中,团队、沟通和关键系统能否保持正常运转。这个演练会发现单点故障、不可靠的故障切换、过时的应急计划、或是其他没有预料到的错误,还能帮助团队在受控环境下处理这些问题,同时没有在真正的紧急时刻面对的恐慌和压力。
  • Netflix 构建了 Chaos Monkey 系统,可以随机关闭自己基础设施中的服务。直接宕掉自己系统中的服务,这看起来好像有违常理,但是他们的配置可以在平时的正常工作时间杀掉服务,工程师因此可以在办公室里面直接发现架构上的问题,而不是在半夜被叫起来。他们在博客上这么说:“应对重大未知失败的最佳防守,就是经常失败。”
  • Dropbox 的工程团队常常为自己的系统增加额外模拟负载。如果他们发现某些系统达到极限、出现问题,他们就能关闭模拟负载,解决问题。相比面对真实的生产环境再去救火,这样的压力要小得多,毕竟生产环境的流量无法直接关闭。

Edmond 对上述例子做了总结:

工程组织会假设不可预期和不希望的事情总会发生,他们的策略是:在正常时期,最好先针对这些情况做规划、写剧本,而不是等到事情不可控制时再去处理。

即使与基础设施不相干,在我们的职业生涯中,也会遇到其他高风险、高压力的事情,比如面试、工资协商等等,没那么频繁,但是充满压力,而且影响深远。针对这些情形,写剧本、做准备,是事半功倍之事。

在文末,Edmond 列出了一些参考文章,包括: * Google 的 Kripa Krishan 在 ACM 期刊上发表的《经受不可预期的考验》↩ * Netflix 的John Ciancutti 在Netflix 技术团队博客上发表的《我们使用AWS 得到的5 个教训》 * Netflix 的Cory Bennett 和Ariel Tseitlin 在Netflix 技术团队博客上发表的《放到野外的Chaos Monkey 》 * Dropbox 的Rajiv Eranki 发表的《在Dropbox 学到的扩展经验,第一部分》。↩

Edmond Lau 还在撰写一本《高效工程师手册》,感兴趣的同学可以去这里下载样章

InfoQ 中文站此前发布过两篇新闻,介绍了豆瓣和下厨房遇到的真实问题:

如果他们事先能够写写剧本,也许就可以避免遇到的严重问题,那个背着笔记本电脑上山的苦逼运维也许就可以放下电脑、放下压力、放下心情,放心轻松了。

如果你是一个运维人员,也欢迎给《那些年我们犯过的错》话题投稿,只要你:

  • 回答以下问题:
    • 介绍一下你印象深刻的、你犯过的一个错误。
    • 你是如何发现 / 捕捉到这个错误的?
    • 发生了错误之后,你尝试做了哪些事情?
    • 你是如何从错误的症状跟踪到错误诞生的原因的?
    • 之后,你做了哪些工作防止此类错误再次发生?
  • 撰写一段你的个人介绍。
  • 发信给 editors@cn.infoq.com ,邮件标题注明《那些年我们犯过的错》投稿,将上述内容粘贴入邮件正文当中。

期待你的来信!

2013-08-02 21:292740
用户头像

发布了 479 篇内容, 共 174.6 次阅读, 收获喜欢 52 次。

关注

评论

发布
暂无评论
发现更多内容

有关 TiDB 升级的二三事——教你如何快乐升级

TiDB 社区干货传送门

版本升级

DM 分库分表 DDL “乐观协调”模式介绍

TiDB 社区干货传送门

迁移 TiDB 底层架构

Dumpling 导出表内并发优化

TiDB 社区干货传送门

性能调优 TiDB 底层架构 备份 & 恢复

大量 SET autocommit 导致的 TiDB Server CPU 高案例

TiDB 社区干货传送门

故障排查/诊断

x86和ARM混合部署下的两地三中心方案验证

TiDB 社区干货传送门

实践案例

5分钟搞定 MySQL 到 TiDB 的数据同步

TiDB 社区干货传送门

实践案例

TiDB学习之路

TiDB 社区干货传送门

实践案例

使用DM迁移MySQL数据到TIDB小测试

TiDB 社区干货传送门

TiKV源码略读-Config

TiDB 社区干货传送门

PlacementRules in SQL 初试

TiDB 社区干货传送门

TIDB调优小结

TiDB 社区干货传送门

TiDB 社区专栏:让技术人员成为更好的读者/作家

TiDB 社区干货传送门

新版本/特性发布 新版本/特性解读

关于我作为前端报名 TiDB Hackthon 2021 然后被毫无悬念地淘汰这档事

TiDB 社区干货传送门

TiDB BR 备份至 MinIO S3 实战

TiDB 社区干货传送门

管理与运维

备份的 “算子下推”:TiDB BR 简介

TiDB 社区干货传送门

TiDB 底层架构 备份 & 恢复

分布式数据库TiDB在百融云创的探索与实践

TiDB 社区干货传送门

实践案例

在TiDB中实现一个关键字——Parser篇

TiDB 社区干货传送门

TiDB 底层架构

关于TiDB数据脱敏的一些想法

TiDB 社区干货传送门

实践案例

使用 KubeSphere 快速部署 Chaos Mesh

TiDB 社区干货传送门

集群管理 安装 & 部署

DBA之伤-truncate/drop

TiDB 社区干货传送门

DM 分库分表 DDL “悲观协调” 模式介绍

TiDB 社区干货传送门

迁移 TiDB 底层架构

带着问题读 TiDB 源码:Power BI Desktop 以 MySQL 驱动连接 TiDB 报错

TiDB 社区干货传送门

故障排查/诊断 TiDB 源码解读

Ti-Click:通过浏览器快速搭建 TiDB 在线实验室 | Ti-可立刻团队访谈

TiDB 社区干货传送门

TiDB4PG 之兼容 Gitlab

TiDB 社区干货传送门

TiDB架构浅析

TiDB 社区干货传送门

TiDB 底层架构

回顾下Hackathon中的TiCheck

TiDB 社区干货传送门

实践案例

TiDB监控Prometheus磁盘内存问题

TiDB 社区干货传送门

故障排查/诊断

TiDB如何修改alter-primary-key参数

TiDB 社区干货传送门

发生即看见,一切可回溯 | TiDB 故障诊断与性能排查探讨

TiDB 社区干货传送门

监控 故障排查/诊断

专栏技术文章发布指南&奖励

TiDB 社区干货传送门

社区活动

伴鱼数据库之MongoDB数据在线迁移到TiDB

TiDB 社区干货传送门

运维团队能从橄榄球教练身上学到什么?_Google_郑柯_InfoQ精选文章