admin 發表於 2022-6-11 17:57:16

运维全球最大遊戲網站過程中积累的SRE經驗

作者 | Ian Miell

翻译 | 大愚若智

作者 Ian Miell 經由過程本文探究了本身在全世界最大在線遊戲網站的站點靠得住性运维事情中堆集的履历。本文最初公布于 的博客,經原作者授权由 InfoQ 中文站翻译并分享。

概述

多年来,我賣力辦理着不少全世界最大在線遊戲網站的站點靠得住性运维事情,經由過程一家不怎样知名的公司構建并运行着不少公司的後端在線软件,這些公司的營業在峰值時代可以轻松發生每小時数万万英镑的收入。几年前我從這家公司离任了,如今可以谈谈我在這段事情中堆集的履历。

從不少方面来看,咱们的事情雷同于一种 SRE 本能機能(就把咱们也称作 SRE 吧,不外那時并無如许的称号)。咱们必要随時待命,必要對各类事務做出相應,必要對重構供给建议,必要為開辟者和客户團队驅鼠方法,供给具體的反馈,必要辦理進级上报的事務和告急环境,必要运行监督體系,等等等等。

我地點團队有约莫 5 名工程师(都曾任開辟者和技能带领者脚色),但在我分開時,已增加為一個 50 人摆布的跨地區團队,大师在分歧范畴有着丰硕的履历。

本文将重點先容咱们的流程和文档,由于我感觉人们對這些内容的功效谈的還不敷深刻。

若是你還想進一步领會這個观點,建议浏览 。

流程

流程對 SRE 运维的顺遂举行和進级上报相當首要,這是咱们所有功效的焦點。在我参加阿谁團队時,那時大师的習气很糟:固然有一個工单體系,但對付解决法子的“一句话记實”环境极其常见(“網站宕機,修复,结单”)。

SRE 运维根基上雷同于一种处置信息,并酌情履行操作的工場。工場的正常运轉必要經由過程必定的流程實現貨品的运轉,同理,常識密集型的 SRE 运维也必要妥帖处置常識的流轉。

在流程方面,我听到至多的一個贰言是這类做法會“按捺立异”。現實上,有用的流程可以帮忙咱们經由過程更清楚的思绪實現立异(但未能妥帖實現的糟流程會搞砸一切!)。

關于這個主题有一本很不错的书:,咱们事情中的不少改良都遭到這本书的開导,團队成员都曾當真拜读。本书援用了航空業實現這一流程的法子作為典范,航空業曾經由過程智能的主動化例行操作在庞大的压力下實現了不凡立异。书中會商過的一個事務乃至被拍成為了 ,飞翔员称這重要归功于 帮忙本身經由過程快速思虑實現了立异,并在面對庞大压力的环境下從新得到了節制能力。現實上,咱们本身也利用了一种雷同的流程:告急环境下,由有履历的工程师賣力深刻研追究找解决方案,與此同時,資格浅的工程师则依照查抄清单举行逐項排查。

關于流程,另有此外一种见解認為,流程會按捺事情和协作的功效。若是将流程视作一种因其自己的存在,而非其他現實结果就認為公道的實體,這类见解固然是没错的。独一可以或许防备這类毛病熟悉的偏偏是企業文化。下文還将具體探究。

進程 – 东西的選擇

起首必要筹备一個符合的工单體系。與监督解决方案雷同,不少人常常纠结于到底哪一個工单體系才是最佳的。這类設法自己就是毛病的。在選擇工单體系時,终极的選擇将加倍偏重于認識與否。若是所選工单體系會發生或促成欠好的流程,那末如许的體系無疑是最糟的。但糟的流程到底甚麼样,這取决于營業自己。

更首要的是選擇一個功效不乱,而且能治療鼻塞,比其他選項更好地為流程供给支撑的工单體系。

這方面有個例子。在我任职時代,咱们從 RT 改换為 JIRA。比拟 RT,JIRA 供给了更多上风,凡是我城市建议選擇 JIRA 作為协作东西。但是咱们改换後碰到的最大問题在于,JIRA 缺乏咱们在 RT 中構建的某些功效,而這些功效是咱们必需的。RT 可讓咱们及時更新工单,這象征着咱们可以在谈天和分派工单的進程中直接针對详细事務举行协作。相干@记%5o85y%實對過%7w886%後@审查事情很是首要。RT 還使得咱们可以将某些内容對客户暗藏起来,如许的功效也是咱们很难舍弃的。固然降服了這些問题,但這些功效仍然很是首要,由于它们已融入到咱们的流程和文化中。

在選擇或改换工单體系時,必需斟酌對运维来讲甚麼才是真正首要的,而不要斟酌那种在功效清单上看起来很標致的详细功效。對你而言,到底甚麼最首要,這取决于各类身分,從看起来是不是標致(说真的,若是你的品牌更有設計感,客户也會更器重你)到报錶功效是不是足够壮大,各类缘由纷歧而同。

腳臭治療,文档

除流程,文档也是很首要的工具,這二者是紧密亲密相干的。

關于文档也足够写本书了,由于很多人存眷了毛病的標的目的。有一個重點必要明白:和其他内容同样,文档自己也是一种資產。與任何營業資產雷同,文档:

若能加以擅用,将供给多倍的投資回报

必要不竭的投入以举行保护(和举措措施或工場同样)

過期的文档若是继续利用将發生更高本錢(就像過期的库存清单)

若是質量或易用性欠安,将成為一种包袱而非資產

若能加以擅用,将供给多倍的投資回报

必要不竭的投入以举行保护(和举措措施或工場同样)

過期的文档若是继续利用将發生更高本錢(就像過期的库存清单)

若是質量或易用性欠安,将成為一种包袱而非資產

這些特色不存在任何争议,很少有人會感觉足够好的文档不克不及供给庞大的帮忙。重點在于:文档事情该若何举行?

文档 – 咱们本来处于怎麼的环境中

咱们本来处于如许的一种环境:咱们所得到的文档没甚麼用(比方開辟职员供给的文档说:“收集分區并未笼盖這里,由于這根基不成能實現”。你猜厥後怎麼!而就算如许的文档他们也写得不情不肯……),或咱们只能依靠之前记實下来的查询拜访成果(此次咱们终究具體记實了一切信息),借此肯定下次碰到雷同的問题以後该若何解决。

這类环境讓所有人感受懊丧,在决议自行撰写相干文档前,咱们還花了大量時候埋怨為啥没有田螺密斯来帮忙咱们。

文档 – 咱们做了甚麼

咱们做了這些事。

我花了两年@時%3t2gq%候對事%PW2Vx%務@划分優先级(比方所触發的事務,或本應触發的事務,或放工時候的事情德律风)并举行了细心钻研。各类事務的总数跨越 1700 条。

随後依照問题类型举行分类。

接下来细心检察每类問题,并总结领會决分歧問题,或對問题举行進级上报以前所需履行的步调。

我花了两年@時%3t2gq%候對事%PW2Vx%務@划分優先级(比方所触發的事務,或本應触發的事務,或放工時候的事情德律风)并举行了细心钻研。各类事務的总数跨越 1700 条。

随後依照問题类型举行分类。

接下来细心检察每类問题,并总结领會决分歧問题,或對問题举行進级上报以前所需履行的步调。

上述勾當花了我七個月的全职事情時候。我是資深员工,由我坐在那邊写這些工具,花费了公司不小的本錢。因為获得了老板的支撑,他從未質疑過如许做是不是值得。他很信赖我(仍然是文化的感化!)。此外我得说,完成這一切四個月後,我的尽力才得到了回报。如今想起来,那四個月時候真是不胜回顾,我本来必要用于运维的精神都被花在他人認為偶然义的事變上,無谓地挥霍了雇主發给我的工資,還遭受了為难的失败。

為甚麼不交给低级员工来做?有几個缘由。這件事過重要了,之前從未做過,是以我必要自行确認详细做法是妥帖無误的。我彻底清晰本身必要甚麼,是以亲身做這事最少可以确保能获得對我来讲最為有效的成果。我本人也是一個有履历的作者(艺術學院结業,曾担當记者),是以我感觉由本身来写是一种更妥帖的做法。

咱们依照 ITIL 将其称之為“事務模块”,但實在也能够叫做“运行手册”、“小抄”之类的。名字不首要,首要的是:

它们很是易于查找/搜刮

可以很轻易果断它们與本身碰到的环境是不是匹配

此中不包括反复的内容

所有内容都是可托的

它们很是易于查找/搜刮

可以很轻易果断它们與本身碰到的环境是不是匹配

此中不包括反复的内容

所有内容都是可托的

咱们将這些文档以纯文本情势保留在工单體系一個零丁的 JIRA 項目内。

文档團队领會到咱们的所作所為,但愿經由過程施压讓咱们轉為利用一個内部维基。他们的决议很快被咱们回绝,缘由也很公道:文档與工单體系的共存象征着文档的搜刮和更新不會碰到互相抵牾不匹配的环境。纯文本格局的内容可以用很是快速简略的方法更新,而且可以連结一切内容井井有理。他们所请求的流程會讓咱们那時但愿打造的东西夭折,咱们天然是回绝的。

文档和收拾事情的關头性

最起头咱们為這些事務模块設計了一种架構,那是一种很雅观的架構,涵盖了可能呈現的所有場景和环境。

但最後發明這彻底是挥霍時候。终极咱们利用的是一种很是愚笨的布局,此中包括:

對問题的描写

所需履行的 1-n 步操作

進一步/更深刻的會商,和相干条目

對問题的描写

所需履行的 1-n 步操作

進一步/更深刻的會商,和相干条目

就是如许。但愿完全改良布局的诡计彻底失败了,或许由于新的布局會讓新人感触狐疑,會给辦理职员造成太多包袱,或笼盖面還不敷廣。一些条目會跟着時候的流逝構成與详细使命更匹配的專有架構,新的分类(比方“跳轉”条目可以奉告你必要参阅哪些条目)也會跟着時候流逝逐步完美。咱们并未提早設計好這些工具,由于咱们不晓得到底甚麼是可行的,甚麼又是不成行的。

若是愿意,可以将其称之為“麻利文档”,麻利是今朝的热點(之前最热的是 ITIL)。固然,重點在于 简化和适用性赛過其他一切。

會写文档的田螺密斯其實不存在

在文档方面耗费那末多時候和精神後,自但是然就得出了如许的结論。

起首,咱们再也不寄但愿于接管其他團队供给的文档。若是他们给代码加了注释,這挺好;若是咱们能在维基中找到對本身有帮忙的信息,這也挺好。但在接辦分歧項目時,咱们已再也不“请求對方供给文档”,相反咱们會放置與賣力設計項目,而且有履历的 SRE 约個時候一块儿會商。

一般来讲(假如没有运维履历的话),開辟者常常更存眷本身開辟的工具及其事情道理,這些工具凡是會履历完全的测试,犯错的可能性是最低的。

與之相對于的,SRE 最存眷弱點,和可能犯错的工具。“若是為收集划分分區會怎麼?若是数据库磁盘空間不足會怎麼?可否經由過程日记果断用户為甚麼没有收到錢?”

随後咱们會自行编写本身的文档,并讓相干工程师举行签發,這是一种與傳统事情流截然分歧的法子!他们凡是會给出很是有效的定见,并针對全部流程為咱们供给更深刻的看法。

咱们注重到的第二件事是,咱们的工程师仍然不肯意更新文档,除非是他们本身會用到的文档。但是文档仍然必要交给他们处置。带领层只能不竭地夸大這也是工程师本身的文档,不是世代相傳的石碑,若是不举行延续不竭的保护,文档很快将變的毫無用場。

這實际上是一种文化方面的問题,必要耗费很长時候才能解决。解决這個問题還必止癢藥膏,要能經由過程流程强迫對文档举行修订。

最後我發明,咱们的平常事情中约有固定 10% 的事情時候被用来保护和编写文档。在最起头 7 個月的突击以後,這 10% 的時候重要被用于保护文档,而不是继续建立新的内容。

文档 – 收益

文档事情全数完成後,咱们所获的的收益远远跨越了那 10% 的事情時候。比方:

新员工更容易于上手

在施行如许的流程以前,咱们不肯意雇佣没履历的职员。但施行以後职员的上手進程加倍顺畅了。别的事務產生之落後行的培训也逐步培育了更多有履历的职员。新员工起首必要帮咱们保护文档,這一進程也有助于他们對本身的常識和技術举行查漏补缺。

更好的培训

文档為咱们供给了丰硕的資本,可以帮忙咱们肯定培训需求。進而咱们可觉得任何工程师供给完成事情所需把握的东西和技能。

简化的進级上报流程有助于削减压力

這個收益很是首要。在利用按部就班的事務模子前,什麼時候举行進级上报是一個压力重重的决议计划。一些工程师由于過早進级上报而著称,大师都没法自傲地肯定在非事情時候接洽賣力的技能主管前是不是“遗漏了某些不言而喻的状态”。SRE 也常常由于進级上报不敷實時而头疼!

事務模子解决了這個問题。很快,賣力处置進级上报後問题的技能职员起头起首扣問:“你是不是已依照事務模子举行過处置?”若是是,而且存在某些较着的忽略,那末問题就變的很是明白,可以快速解决。很快,非 SRE 职员在处置過進级上报的問题以後會起头忙着更新和保护文档,進而形成為了一种良性轮回。

更好的规律

對付團队来讲,文档最明白的價值在于可以帮忙團队改良其他方面的规律。有趣的是,之前 SRE 被誉為“最烦吵”的團队,他们常常會举行各类“争辩”,而且全部團队的社交属性十分强。這實在也挺公道,由于咱们究竟结果必要互相支撑着才能搞定各类大型的技能范畴,知足凡是不具有技能布景的客户预期,而常識和文化的分享很首要。

跟着流程的推行,這個團队變的愈来愈恬静,部門是由于有了專門的交换环節,逐步起头推廣长途事情,和團队逐步變的國际化,但同時也是由于大部門事情都酿成了一种例行使命:遵守事務模子的引导,使命完成後或有甚麼不睬解的处所時,可以進级上报给更資深的职员。

主動化

經由過程這类方法對查询拜访進程實現主動化,象征着還可以借助软件對實在現更高水平的主動化。

經由過程制订指標将分歧工单毗連到分歧的事務模子,這也象征着咱们晓得必要将本身的精神專注在那邊。咱们编写了在後台對日记文件举行梳理的剧本,借此更快速简略地找出與代码有關的問题,同時經由過程主動化方法相應客户的需求(“此問题是利用辦理员用户 XXX 所做的某項變動致使的”),别的還采纳了一系列其他辦法。

在這些主動化機制的支撑下,咱们基于 Pexpect 為本身構建了一個主動化东西:

回归流程自己

筹备好所有這些資產後,若何预防這些資本跟着時候流逝而贬值?此時流程自己很是首要。

為确保一切可以继续腻滑运轉,咱们制订了两個首要流程:驗伤(Triage),和過後审查。

流程 – 驗伤

咱们有 5%-10% 的時候花在驗伤流程中。此外,為了肯定最正确的流程,以前已支出了大量時候,不外這些支出得到了庞大的回报:

将必要采纳的操作数目精简為必需的起码步调

将尽量多的使命包括在驗伤流程中,這类做法對咱们有很大的吸引力,但更首要的是确保流程自己的價值而非完备性。任何不常履行的操作凡是會被跳過,并從驗伤流程中疏忽掉。

專注于經由過程流程節省本錢

經由過程查找反复美白牙粉,的内容,找到相干事務模子,更快速复兴客户的咨询,而且尽量早得举行進级上报,這些行動大幅低落了每一個工单的本錢。如许做還可以防止其他工程师在思虑其他問题時被打搅而發生不良後果。這些行動的現實收益很难权衡,但咱们可以用更少的人手,更易地处置更多事務。這些都被高管和客户看在眼里。

将所有事情的详情记實起来也能够帮咱们節省時候,(比方)當工程师接到驗伤工单後,可以看到在汗青事務中搜刮的驗伤成果,進而找出有待改良的处所。這也象征着可以由更有履历的职员随時核阅驗伤流程的質量。

驗伤流程的核阅

有履历的职员必要按期核阅驗伤流程,以确保流程得以有用地應用。

當我轉岗到另外一個运维團队(是一個我不太领會的范畴)後,經由過程得當利用這些技能,我用了约莫三天時候就将事務行列步队中积存的事務削减了一半。驗伤流程是現成的,但大师在履行時并未细心@思%ZSt12%虑或举%931w4%行@有用羁系,而且将這些责任交给了一個不克不及胜任的低级员工。大错特错。驗伤流程的@履%9917V%行或羁%3o568%系@,必需由具有纯熟履历的人賣力,固然看上去這是一种例行的乏味事情,但實在包括了大量首要决议计划,必需由履历供给支持。

没错,我就是新的賣力人,我决议将第一周的事情時候用于這类“没技能含量”的驗伤使命。究竟结果我感觉這個事情仍是很首要的。

轮值使命

没人但愿长時候賣力驗伤事情,是以咱们采纳了每周轮值的做法。借此可以實現必定水平的持续性和一致性,但也能够有用防止工程师频频在不异使命上耗费大量時候而抓狂。

流程 – 過後审查

與驗伤流程相對于的是“過後审查”。每一個工单城市由有履历的團队成员举行审查,這個進程约莫必要占用 5% 的事情時候,但一样是值得的。

為此必要填写一個尺度化的錶单,若是有任何定见建议,可添加到後续“改良”使命列錶中,并划分出優先级。這為咱们造成為了大量期待解决的技能/流程债務。

文化

上文曾屡次提到文化,只要筹算举行任何类型的變動,都不能不斟酌文化問题,究竟结果文化已根植于一系列观點框架中,而咱们的所有举措都必要遵守這些框架的划定。

此外我還提到過,人们凡是會纠结于“毛病的事變”。我曾屡次据说有人專注于东西和技能,而非專注于文化。没错,东西和技能很首要,但若不克不及有用應用,所酿成的後果乃至會比彻底没使历時更糟。你或许可以参加全世界最棒的高尔夫俱樂部,但你連挥杆都不會,只會打棒球,那末這個俱樂部對你而言有何意义?

文化所需的投入远远跨越技能自己(别忘了,单单為了写文档我就花了泰半年時候)。若是具有符合的文化,人们将能在必要時找到符合的东西和技能。

在决议将時候和款項花在哪里時,必定要以文化為第一選擇。固然必要花费大量预算,但可以强有力地剔除“無用”的團队成员,這是我在接收其他團队後做的最棒的事。那人分開後,其他團队成员錶示好了不少,再也不遭到他那過激举動的影响,不少之前做不到的事變都顺遂完成為了。

咱们還用很小的预算構建了一個高效能團队,预算小到甚麼水平呢,賣力招募的人乃至在德律风里冲我嚷嚷说我的方针是“不成能”的。但只要專注于得當的举動,针對找到的职员不惜支出時候,筹备好妥帖的流程,咱们實現了效能的大幅晋升,而且形成為了一個高虔诚度的團队,起头在公司内部和外部(實在重要仍是内部!)實現了更大范围,也更超卓的豪举。

辦公室政治

简略说说辦公室政治。你可能要随時投入“战役”。极可能你得不到所需的資本,以是搞不定的事情必要當令抛却。

没错,你必要监督解决方案,必要更好的文档,必要练習有素的超卓职员,必要更多测试……除非有印钞機,不然不成能获得本身想要的所有工具,是以仍是肯定最首要的事變,试着優先解决它们吧。若是试图同時在所有方面举行改良,终极极可能會失败。

除流程和文档,我還曾试着破解“可再現情况”的谜题。终极决议選擇 Docker,這是我职業生活的一次重大變化。我曾在 和 简略探究了這些問题。

作者:,英文原文:Things I Learned Managing Site Reliability for Some of the World’s Busiest Gambling Sites
頁: [1]
查看完整版本: 运维全球最大遊戲網站過程中积累的SRE經驗