管理员是没有IT公司任何人员都无法工作的人。 有了一个快乐而富有成效的管理员,事情将会越来越好,因此舒适的工作环境成为公司的关注重点。 关于用什么工具使团队高效工作的是
Anton Turetsky (
banuchka )在Highload ++ 2017上的一份报告。
安东(Anton)喜欢基础架构任务和所有可以自动化的自动化,因此他的故事基于在数据中心和相关技术(Docker,Consul,Puppet ...)中设置基础架构的示例。 但是,影响质量工作以及如何解决质量问题的方面尽可能普遍,并且适合几乎所有执行团队。 因此,我们要求您对这份报告进行解码。
Badoo每年都在增长,以下是反映这一点的一些数字:每天3.5亿条消息,全球3.64亿注册用户,每天30万新用户。 但这远非最重要的事情,对于在Badoo工作的人来说,主要的事情首先是思维方式和团队合作。 Badoo是一个家庭,关乎人,很酷!
我想从某人可能不支持的挑衅开始:
管理员是公司的主要负责人!
我想您会同意我的观点:管理员是没有公司工作人员的人:设备来到他身边,他放入系统中,他再次分配新设备。 因此,我相信他是主要的。
我将以Badoo的个人实践为例。 自己判断这种情况:我们有一个名为ReThink的新项目。 我们更新了徽标:将字母的字体和颜色从多色更改为紫色,增添了一颗心-单调而酷。 但是管理员被警告说ReThink会发生-我们只是把它换下来-我们在回家前的最后一晚发出警告。 而且,其中一个集群的负载有些难以预测,开始受到打击。 感谢值班的人,他帮助团队的其他成员找到了更多服务器并完成了这些服务器。 该项目实际上是开枪的,我们没有倒下,正常展开,每个人都很高兴。
确认我的话,我想说,公司中快乐而富有成效的管理员对公司来说尤其有利可图。
我想请所有公司使他们的管理员满意 。 那你就好了!

让我们考虑
一下让管理员难过的原因 。 许多人会想到管理员因服务器崩溃和备份丢失而感到悲伤。 没错,但是如果管理员每次做错事时都会思考并陷入悲伤-并且他每天都会做错事-他就不会有足够的神经。
因此,我表示这个问题,这是一个人为因素,即上下文切换。
上下文切换
关于人被撕下后会发生什么以及为什么不好的研究有相当多的研究。 佐治亚理工大学研究员
克里斯·帕宁 (
Chris Parnin )的工作是最后一项好的研究。 他收集了有关该主题的大量不同数据,并得出了许多结论,主要结论是:
一个因工作而被撕裂的人需要10到15分钟的时间才能恢复工作。
这是一个平均值。 取决于切换,某人可能拥有更多,其他人可能更少。 通过简单的添加,您会发现,如果您在一小时内因某种事情而分心4-5次,则很可能会浪费整个一小时的工作时间,并且您不太可能完成工作。
这是一种理论-一个人调查后得出结论。 在实践中,您可能会遇到这样的情况:您上班,整整工作一天都喝酒-一整天都做着,没有时间吃午饭,没有回答即时通讯员和邮件。 在工作日结束时,您都受到了折磨,您似乎已经做了很多事情。 但最好的情况是,到了晚上,您意识到自己还
没有完成工作日计划的
一半 。 更糟糕的是,当经理或同事接近您并问:“您今天做了什么?” 并且您知道自己
已经跑步,跑步,跑步了-但是出口处什么也没有 。
在许多方面,这是由于切换我们的环境以及无法专心完成任务而来的。 对于管理员-一个简单的表演者-就是这样。
但是仍然有经理/团队负责人和另一面。 团队负责人的关键特征是,他们像疯子一样,这种上下文切换不是他们可以生存的东西,但即使他们有时也会增加它,以便以后减少它。 也就是说,他们将许多会议重点放在此会议上几个小时,然后在晚上休息,完成一项任务。 转换技能可以发展到只需要5分钟就能使自己沉浸在新任务中的程度。 这非常酷,对于他们知道如何做的事实,管理人员会受到赞赏和尊重。 但是对于管理员和表演者
来说,最好摆脱那些麻烦 。
流程不透明
第二个重要问题是过程的不透明性,可以将其分为两个区域:
- 团队内部流程的不透明性;
- 团队之外的过程不透明。
在团队内部,这是我们可以影响的:团队成员之间的缺陷或缺乏协调。 团队内部流程不透明可能导致的最糟糕的事情是
重复工作 。 从原则上讲,这很不错,除了您很可能失去一名员工的工作时间这一事实之外。
在这里您可以找到专业人士并说:“也许Vasya比Petya更好! 让我们做出他的决定。” 但是他们可以互相交谈,有人会做。 这很重要。
例如,如果非透明流程在团队外部,则整个公司内部发生的事情令人难以理解,在团队内部,这可能导致
错误的任务
优先级 。

例如,一个来自移动网络的开发人员来找我,说对他来说,选择一项能够为当今的新API带来帮助的服务很重要。 我还有许多其他任务,在我看来,他的任务根本不是优先事项。 他等待释放一周,他将再等待两天,我稍后再做。 对于企业而言,并非总是如此。 如果一个团队从上层来找我们,因为当前任务是下一个非常大的任务的一部分,那么当前任务具有较高的优先级,那么重要的是,管理者甚至不必传达这一点,而是团队中的每个成员都可以简单地理解这一点。
从表演者和管理员的角度来看,我今天想讲一个故事来解决团队中的这两个主要问题。 我将谈论如何找到几条规则,以
最大程度地减少上下文切换并使流程尽可能透明 。
如何解决上下文切换问题
管理员上班,喝了杯咖啡,读了邮件,备份了工作,什么都没有掉下来-坐下来,工作会干扰。
考虑通常情况。 这个人刚来,一切都很好,他打开工作工具,在聊天室和邮件中写信,然后电话响了-他们问晚上有什么事-他分心了。 然后,妻子或女孩发布了一张很酷的照片-您需要进出,Facebook也在移动。 在这里,朋友们来讨论昨天的足球会议,他们晚上打电话给我喝啤酒或现在喝茶。 这
一切都一点一点地
从各个方面传给一个人。

该问题该怎么办? 我们有一个人,有他的一般社交生活,有它的工作方面。 在这种情况下,我们只能考虑和优化与其
工作工具相关的零件。 我们不能禁止他下班后去喝啤酒或使用社交帐户,因为我们毕竟不在监狱中。
因此,我们决定研究管理员拥有什么样的工作工具,经常从何处来,以及我们可以采取哪些措施来减少这种情况。
第一个想法很奇怪,但是我们尝试了-
允许管理员根本不使用聊天 ,因为很多人都写聊天。 您正在完成一项任务,一个人写信给您,这对他很重要,另一个对您来说很重要。 而且,我们允许管理员不要使用聊天功能-不要在其中回答和写任何东西。
当然,这个想法没有成功,因为除了写您需要在聊天中阅读的内容之外,聊天是最快的交流方式。 您只需要在那儿写。 仅仅一周后,很明显,这个想法是乌托邦式的,我们决定放弃它,并且走得更远。

我们做出了一个部分奇怪的决定-我们选出一个团队成员并告诉他:“老兄,您将成为有条件的领导人! 这不是晋升,您只知道哪个同事在哪个领域比较好,您知道一般的任务流程,或多或少地了解优先事项。 因此,来吧,您将根据以下情况工作。 团队中的所有管理员都有一系列任务,您可以看到谁在忙什么,知道任务的截止日期是什么,您可以随时将其交给可以尽快处理的人。 或者,如果有很多执行时间,则可以将其分配给初级。 Junior需要讲一些基本的东西,但是您知道,如果他们帮助他,他将被抽空,一切都会变得很酷。” 原则上,这个想法是很可靠的。
她之所以不能完全参加的原因之一,是因为我们所有人都喜欢按照自己喜欢的方式工作。 我们可以在万事俱备的情况下执行任务,而我们必须这样做-我们不明白,我们接管和做,不管是谁。 另一件事是,您可以选择:“我目前正在执行一项任务,并且想在MySQL中配置复制,我不想碰Puppet-让其他人来做。”
人们开始偷窃,有些任务很少,有些任务很多,有些人变得无趣-这是令人难以理解和无法解释的事情。 也许这是我们的错误估计,但是这种方法没有用。
大约在同一时间,我们正在尝试为仲裁员加载另一项职责。 对于管理团队,其他团队的任务是做一些事情-备份,还原等。 具有这种应用程序的人实际上是客户,并且他总是在等待反馈。 设置任务后,当他发现任务已在总库中从“未分配”状态切换为“已分配”给特定执行者时,已经过了2-3个小时,一个工作日,另一个工作日,而且任务没有节拍,这一切都不清楚是否从事他的任务。

有些管理员不太喜欢以通信的形式执行任务。 因此,仲裁员现在需要与团队中的每个成员进行一对一的聚会,执行几乎每项任务,询问任务中是否有困难,如何提供帮助以及
汇总每1-2天
收集的信息 。
任务开始以某种方式执行。 但是一切都停滞了,因为我们现在的
裁判员只是埋藏了太多的知识 。 的确,为了为您总结一些内容,您需要了解每个主题领域,想一想员工达到了什么阶段,阻止了他的工作,然后写下来。 当有很多这样的任务时,裁判员只是停止写东西,而任务也不再以相同的方式进行。 因此,有必要继续前进并再次进行更改。
艾森豪威尔矩阵

您可能已经看过这个矩阵,只是不知道名字。 最重要的是,我们根据两个参数将任务表分为4部分:
- 紧急/非紧急
- 重要/不重要。
我们只需将所有任务投入这款出色的平板电脑即可开始工作。
立即值得注意的是,
对于表演者来说,效率最高 ,
最舒适的电池B是一项重要且并非紧迫的任务。 当您的任务对团队,项目或对您而言都很重要时,这对于一个人而言是一个很大的动力。 您了解到,您不仅在做些废话,而且还在研究人们将使用什么,这增加了激励。 非紧急情况的好处是您将自己留在自己的设备上。 您是否有时间阅读,测试并进行一些计算。
我们坐了下来,想出了主意,将所有进入运营部门的任务分离开来,格式化任务并不是很重要,也不是很紧急地要分离到一个单独的项目中,我们称之为
ITGROOVE 。 在这里,我们包含了一些任务,这些任务将来也许会真的变成一个问题,但是现在它们已经不成问题了,最好在可预见的将来(一两个星期)执行这些任务。
之后,我们介绍了
当值管理员的功能,其实质如下。 我们提供第一线支持和响应紧急行动以及触发,监视。 如果她无法解决问题并决定需要上报的问题,则白天在第一时间介入解决此问题的人就是值班管理员。
如果在此之前我告诉过您我们摆脱了上下文切换的影响,那么在这里,我们只是将一个人扔到了尴尬境地,并告诉所有人连续进行所有操作,请尽快进行切换。
实际上,这并不是完全正确的,因为白天值班的管理员会执行以下操作:将问题升级并传递给给定领域的最佳专家(目前可用),或者他几乎可以自动解决问题。 这不是精神活动-晚上唤醒一个人,他会去修复它。
作为额外的奖励,我们邀请了当日值班人员无事可做而感到无聊的时候来从事ITGROOVE项目。 该人员不仅可以
覆盖团队的其他成员 ,还可以完成不重要且不紧急的任务!
通过介绍日常值班人员的角色并将任务划分为完全不重要和项目任务,我们允许团队的其他成员在最紧急但不重要的任务下,在最舒适的B区工作。 人们刚从A点出来,环顾四周,在B点-我感到很舒服,每个人都很高兴-太酷了! 我们会努力的!
我不会忽略C点的任务。
这听起来有点错觉:“紧急,但不重要” -紧急或不重要。 在我们的情况下,通常不会在此段中工作。 具有“不重要但紧迫”标准的任务要么变为“不重要且不紧迫”,要么就消失了,我们不对其进行处理。

由于我提到了我们引入了白天值班管理员的事实,因此让我们简要介绍一下我们通常拥有的管理员:
- 管理员是普通的。 原则上,每个人都会做所有事情,但是普通管理员主要负责Jira中的任务。
- 白天值班管理员主要接听电话并从监视升级。
- 夜间值班管理员 (由普通管理员和白天管理员组成)在夜间接听电话和升级,并在白天作为普通管理员工作。
如何使流程透明
我们特定团队的复杂性在于,其中一部分在伦敦,另一部分在莫斯科,这是时区的一个相当大的转变。 在莫斯科,这些家伙开始工作的时间要早得多,在伦敦,他们只是来工作,他们已经做了一些工作。 反过来,我们在伦敦办公室的工作在晚上结束,他们正在做莫斯科人不知道何时回家的其他事情。 为了协调团队内部的流程,我们每周举行一次周一集会。

看起来像这样:
- 我们在莫斯科占据一间会议室,在伦敦占据一间会议室。
- 而且,时间已经定下来,以便他们在伦敦开始工作,在莫斯科,他们已经从午餐中回来了。 每个人需要大约40分钟的时间来调和一名工人。 因此,我们在电视上的非正式气氛中聚会,请经纪人开始讨论。
- 这是一个多对多的讨论。 我们彼此告诉我们已经完成的重要项目,期望的目标,计划要做的事情,彼此约会。
但是问题是,在星期二晚上或星期三早晨某个地方,
协调有些失落 。 例如,我开始从事一项工作,搁置一边,本周我有不同的任务,莫斯科的一位同事也遇到了类似的情况。 我们将一直保持同步,直到下周一,直到下一次拍卖-需要做些事情。
地位英雄
有一个很酷的工具,称为“
状态英雄” 。 其本质是,当您上班时,您要为自己计划一些任务。 状态英雄有3个字段需要填写。 而且,这不是强制性工具,我们无法填写和使用它。

诀窍是:我刚开始工作,我知道今天我想修复一些DNS,在Prometheus中配置重置的指标,了解新图表的工作方式,并可能关闭当前任务。 我将所有这些都纳入今天的计划中。
但是在今天的计划中,一行闪烁着我,说你答应自己昨天做,然后继续,首先写上你昨天所做的,然后再做。今天。

还有一个美妙的第三点。 该字段表示一些
阻止任务执行的外部事件 。 , - , — , , , — . - , , , .
, , .

. HipChat, , - , . , , . - , , . 太棒了!
Status Hero ?

- , . , , , , , . Status Hero : « — !» , , , .

- , . , , , , , , , - , : «, . , , , . ».

- , , - , , . , - , .
Status Hero
, Status Hero , . ,
, .
, , , , - .
, , , , , , — . , .
, , . Status Hero,
Wiki , , Confluence, , . , , , .
. , Status Hero .
Team Contribution
HighLoad++
Review Badoo . , , : , . , .
— —
. . Review , , . , , , - .
Review ,
snippets . , .

, , , , , , , . , , 3 . daily snippets — , , , — , , .
Status Hero. , . , , — , .

,
, : Status Hero , , , , . , , .
,
« , — »
.
, Status Hero , , Badoo. , .

, , . , . , , , . , -.
, , , , . , .

, , -, xCAT.

, , , Puppet — , Consul , Docker, glpi, . , .
- , .

—
, . -, . , , Raid, , .
xCAT ,
PXE dhcp . , dns , . , — — mac — IP , , .
, xCAT ,
. - Kernel Panic, . xCAT , -, , , , . - — 100 , -, . - , , SN . xCAT SN .
, , xCAT, -, , , dhcp , , , dhcp helper .
, , , , .
Docker
, Docker — . Docker , - .

Docker , ,
registry , , . , Docker , registry Badoo , . ,
Ceph Swift API .
, registry,
Redis . HTTP , Docker distribution , , , docker-registry Redis endpoint Ceph.
HTTP nginx, SSL, basic Auth. , registry , pull push.
Consul
在现代现实中,新数据中心肯定会需要Consul,目前,Consul并不是作为整个Badoo的服务发现而使用的,而是作为基础架构部分的服务发现的。演示Consul的基本安装在任何数据中心中的外观可能毫无意义。这通常是至少3个主服务器,并与所有可用数据中心同步。为什么选择基础设施,尤其是新的领事数据中心?up

让我们看一下我们出色的Puppet基础架构。
Consul的本质是,我们从上到下提升基础架构(如果您看一下上面的幻灯片):
- 首先,您需要PostgreSQL,而PuppetDB则需要PostgreSQL。
- 开发PostgreSQL,我们在Consul中注册它。 提起PuppetDB,我们从Consul那里获取有关PostgreSQL的信息,并连接到PostgreSQL,并将有关PuppetDB的信息传递回Consul。
- 接下来,我们提高Java中所需的Puppet服务器节点数。 我们从领事那里获取有关他们的信息,并将有关他们的信息放入领事中。
- 在最后阶段,我们将负载平衡提高到nginx,后者处理SSL终止,并提供3个端口:
- 直接人偶代理商的港口;
- Puppet DB的端口;
- 统计端口。
所有其他客户端都要进行负载平衡。
格里菲
我们有一个叫做glpi的东西,这对于任何数据中心都是必需的。 一切都非常笨拙和简单-这是
库存服务 。

其工作方式如下:
- 在每台服务器上,将启动一个简单的 FusionInventory 代理 ,该代理会收集有关硬件,软件,防病毒,文件系统的所有信息-所有这些都取决于设置。 我们通常会对各种“铁”指标感兴趣:多少内存,哪些磁盘,控制器,缓存等。
- 该信息将在特定的时间间隔(在我们的示例中是每天一次)发送到某个PHP端点,在该端点中处理数据并将其传输到glpi数据库。
使用GLPI和FusionInventory的另一个优势是,我们
不仅可以
盘点服务器硬件,而且可以
盘点网络设备,以便获得有关哪些端口可用以及它们处于何种速度的信息,最重要的是,可以找到位于哪个服务器以及哪个序列号的信息。在哪个机架中,连接到哪个网络节点和哪个端口。 所有这些操作的结果是一个网页,您可以在其中查看所有这些信息。
我们检查了Wiki中描述的5种工具,假设的管理员查看了它们,并为每个工具启动了不超过3-5个容器-基础架构已准备就绪。 我们有一间幸福的人,他们的工作富有成效:概述了一项任务,其他任务帮助了他,总的来说,我们熟悉,阅读并提出了这样的建议。

在Badoo,管理团队中有更多这类有球的人,但
我们的工作效率很高,在大多数情况下
肯定会感到高兴 。 我们能够组建友好的专业人员团队,因为我们能够发现三个问题并学会了如何处理它们。
因此,表演者需要什么(在我看来,不仅对于管理员而言):
- 减少上下文切换 。 让这个人工作-如果他是一个技术人员,请让他坐下来工作,不要把他撕掉!
- 使流程透明。 如果您正在按时完成任务,并且怀疑某项任务的优先级不高,请向团队提供有关为什么特定任务很重要的信息。 一个人必须看到他的监视器之外,并知道他参与该项目很重要。 然后他将进行不同的工作,他将了解工作的紧迫性和有用性。
- 编写好的文档。 此外,最好将此文档分为不同的部分。 如果您想结识和挖掘,它可以是详细而深入的。 但是同时,您应该有关于该服务或服务的摘录,该摘录放置在一页上,并且包含一组5-6个在升级之前必须执行的操作。 此外,文档对于保持最新非常重要。
当您提高部门的工作透明度时,更新文档的问题就可以自行解决,因为您可以看到正在发生的迭代,并且不断有人问您:“更新,更新,更新”。
参考文献
这些链接与有关上下文切换,如何胜任工作,如何分散注意力和做更多事情的各种研究的链接,以及与我所谈论的所有产品的链接,这些都是Badoo数据中心的基础和支持。
针对高负荷项目Highload ++ Siberia开发人员的会议的西伯利亚版本将于周一开始,并将于6月25日至26日举行 。 在此,安东将与Badoo运营团队讨论服务中工具和服务的发展,
另外30位公认的专家和行业领导者的代表将展示他们的最佳实践并分享他们的经验-参见该计划 。