有效的 DevOps 作者 Ryn Daniels 分享了任何人都可以使用的策略,以創建更高品質、更少煩惱和更可持續的 Oncall 輪換。

隨著 Devops 的出現,如今許多工程師都在執行某種形式的隨叫隨到的職責,而這曾經是系統管理員或營運工程師的唯一職責。值班,特別是在下班時間,並不是大多數人喜歡的任務。值班可能會擾亂我們的睡眠,幹擾我們白天所做的正常工作,並幹擾我們的日常生活。隨著越來越多的團隊參與到隨叫隨到的工作中,我們問自己:“作為個人、團隊和組織,我們可以做些什麼來讓隨叫隨到的工作更加人性化和可持續?”
保持睡眠
通常,當人們想到隨叫隨到時,首先想到的就是它會對他們的睡眠產生負面影響;沒有人希望在半夜被警報吵醒。如果您的組織或團隊足夠大,您可以使用「跟隨太陽」輪換,其中多個時區的團隊參與相同的輪換,但待命輪班時間較短,以便每個時區僅在其工作時間(或至少是醒著的時間)待命。建立這樣的輪調制度可以大幅減少值班人員的夜班工作量。
如果您沒有足夠的工程師和地理分佈來支持跟隨太陽的旋轉,您仍然可以採取一些措施來減少人們在半夜被不必要地喚醒的可能性。畢竟,凌晨 4 點起床去解決緊迫的、面向客戶的問題是一回事;而當你醒來時卻發現這只是一場虛驚,那又是另一回事了。檢查您設定的所有警報並詢問您的團隊哪些警報真正需要在下班時間喚醒某人,以及這些警報是否可以等到早上,這可能會有所幫助。讓人們同意關閉一些不起作用的警報可能會很困難,特別是如果錯過的問題在過去造成了問題,但重要的是要記住,睡眠不足的工程師不是最有效的工程師。在真正重要的工作時間設定這些警報。如今,大多數警報工具都允許您在工作時間以外設定不同的通知規則,無論是 Nagios 通知期還是在 PagerDuty 中設定不同的時間表。
睡眠、職責和團隊文化
解決睡眠問題的其他方法涉及更重要的文化變革。解決此問題的一種方法是監控警報,特別注意警報發生的時間以及是否可操作。 — 是由 Etsy 創建和發布的工具,允許團隊追蹤和分類他們收到的警報。它可以產生圖表,顯示有多少警報喚醒了人們(使用健身追蹤器的「睡眠」數據),以及有多少警報實際上需要人工操作。利用這些技術,您可以追蹤值班輪換的有效性及其對睡眠的影響。
團隊可以發揮作用,確保每位值班人員得到充分的休息。創造一種鼓勵人們照顧自己的文化:如果你因為晚上被叫去上班而失眠,你可能會在早上多睡一會兒,以彌補失去的睡眠。團隊成員可以互相照顧:當團隊通過 Opsweekly 之類的方式相互分享睡眠數據時,他們可以去找值班的隊友說:“嘿,看起來你昨晚在 PagerDuty 上度過了一個艱難的夜晚 - 你想讓我今晚替你休息一下嗎?”鼓勵人們以這種方式互相支持,並竭盡全力阻止人們竭盡全力而避免尋求幫助的“英雄文化”。
減少值班工作的影響
當工程師因值班時被喚醒而感到疲倦時,他們顯然不會在白天以 100% 的效率工作,但即使不考慮睡眠不足,值班也會對工作表現產生其他影響。在值班期間最重大的損失之一是由於中斷因素、上下文切換:一次中斷就可能因失去注意力和上下文切換而導致至少 20 分鐘的損失。您的團隊可能會遇到其他幹擾來源,例如其他團隊產生的票據、請求或透過聊天和/或電子郵件發送的問題。根據這些其他中斷的數量,您可能需要考慮將它們添加到現有的輪班中,或設定第二個輪班來處理這些其他請求。
在規劃團隊將要執行的工作(無論是長期還是短期)時,考慮到這一點很重要。如果您的團隊傾向於進行相當密集的待命輪班,則需要將其納入您的長期規劃中,因為您可能會遇到所有員工在任何特定時間都處於待命狀態,而不是從事其他工作的情況。在短期規劃中,您可能會發現值班人員由於其值班職責而無法按時完成任務 - 這是可以預料到的,團隊的其他成員應該準備好適應並幫助確保工作完成,並且值班人員在工作任務中得到支援。無論值班人員是否被叫去,值班輪班都會影響他們執行其他工作的能力——不要指望值班人員除了在下班時間值班外,還要在晚上工作以完成預定的項目。
團隊需要找到一種方法來應對值班輪班產生的額外工作。這項工作可能是修復監控和警報系統檢測到的實際問題的實際工作,也可能是修復監控和警報以減少誤報數量的工作。無論所創造的工作性質如何,在團隊中公平、永續地分配工作非常重要。並非所有值班都是平等的,有些值班比其他值班更複雜,因此規定接收警報的人是負責處理該警報所有後果的人可能會導致工作分配不均。值班人員負責規劃或分配工作可能更有意義,並期望團隊其他成員能夠幫助完成所創建的工作。
創造並維持工作與生活的平衡
想想隨叫隨到對你工作以外的生活的影響。當您值班時,您可能會感覺被手機和筆記型電腦束縛著,這意味著您總是隨身攜帶筆記型電腦和行動路由器(USB 數據機)或根本不離開家/辦公室。值班通常意味著放棄在值班期間與朋友或家人見面等活動。這意味著每次輪班的時間長短取決於團隊的人數,而輪班的頻率可能會給人們帶來過重的負擔。您可能需要嘗試輪班的長度和時間表,以找到適合至少大多數相關人員的時間表,因為不同的團隊和人員會有不同的優先事項和偏好。
認識到值班對管理階層和個人層面人們生活的影響至關重要。值得注意的是,那些特權較少的人會感受到更大的影響。例如,如果您必須花時間照顧孩子或其他家庭成員,或者您發現大部分家務都落在您的肩上,那麼您的時間和精力就已經比沒有這些責任的人少了。這種「第二班」或「第三班」的工作往往會對人們產生不成比例的影響,如果你設定的輪班時間表或強度假設參與者在辦公室外沒有個人生活,那麼你就會限制能夠為你的團隊做出貢獻的人員。
鼓勵人們盡量保持正常的作息時間。您應該考慮為團隊提供行動路由器(USB 數據機),以便人們可以帶著筆記型電腦離開家,同時仍能享受生活。鼓勵人們在需要短時間交換值班時間,以便人們可以在值班期間去健身房或看醫生。不要創造一種隨叫隨到的文化,即工程師除了隨叫隨到之外什麼都不做。工作與生活的平衡是任何工作的重要組成部分,但尤其是當你考慮到下班時間時,團隊中較資深的成員應該在工作與生活平衡方面盡可能為其他人樹立榜樣。
在個人層面上,一定要向你的朋友、家人、伴侶、寵物等解釋手錶的意義(你的貓可能不會在意,因為當你收到警報時它們已經在凌晨 4 點起床了,儘管它們不想幫助你解決這個問題)。確保在輪班結束後彌補失去的時間,無論是與朋友、家人見面或睡覺。如果可以的話,可以考慮設定一個靜音鬧鐘(例如智慧手錶),透過震動你的手腕來喚醒你,這樣就不會吵醒你周圍的任何人。在輪班期間和輪班結束後,想辦法照顧好自己。您可能需要準備一個「生存工具包」來幫助您放鬆:聽您最喜歡的音樂的播放列表,閱讀一本喜歡的書,或者花時間與您的寵物玩耍。管理人員應鼓勵員工自我照顧,在值班一週後給予他們一天的休息時間,並確保員工在需要時尋求(並獲得)協助。
改善值班體驗
總的來說,值班不應該被視為一份糟糕的工作:作為值班人員,你有機會和責任積極努力,為未來值班人員提供更好的服務,這意味著人們將收到更少的消息,而且消息會更準確。再次,使用 Opsweekly 之類的工具追蹤警報的價值可以幫助您找出導致警報煩人的原因並進行修復。對於非活動警報,問問自己是否有辦法擺脫這些警報 - 也許這意味著只在工作時間觸發它們,因為有些事情你不需要在半夜回應。不要害怕刪除通知、更改通知或將發送方式從“發送到手機和電子郵件”更改為“僅電子郵件”。實驗和迭代是隨著時間的推移改善值班職責的關鍵。
對於真正可操作的警報,您需要考慮工程師採取必要行動的難易程度。每個有效的警報都應該有一個與之相配的運行手冊 - 考慮使用 nagios-herald 之類的工具將運行手冊引用添加到您的警報中。如果警報足夠簡單,不需要運行手冊,那麼它可能足夠簡單,您可以使用 Nagios 事件處理程序之類的工具來自動執行響應,這可以避免人們為了輕鬆的自動化任務而醒來或被打斷。 Runbooks 和 nagios-herald 都可以幫助您為警報添加有價值的上下文,從而幫助人們更有效地回應警報。看看您是否可以回答常見問題,例如:上次觸發此警報是什麼時候?上次是誰對此作出回應的,他們最終採取了什麼行動(如果有的話)?同時還出現了哪些其他警報?它們之間有關聯嗎?這種上下文資訊通常只存在於人們的大腦中,因此鼓勵記錄和共享上下文資訊的文化可以減少響應警報所需的開銷。
值班帶來的疲勞很大一部分在於它永遠不會結束——如果你的團隊中有值班人員,那麼在可預見的未來,它不太可能在任何時候結束。這種轉變永遠不會結束,我們可能會覺得它們永遠都是可怕的。缺乏希望是一個很大的心理問題,可能會導致壓力和倦怠,因此,當您考慮長期的待命經歷時,解決待命總是很糟糕的看法(除了現實之外)是一個很好的開始。
為了讓人們對值班情況的改善抱持希望,系統需要具有可觀察性(與我之前提到的值班追蹤和分類相同)。追蹤您有多少個警報,其中有多少百分比需要服務員的干預,有多少警報喚醒了人們,然後努力創造一種鼓勵人們做得更好的文化。如果您擁有一個龐大的團隊,那麼一旦您的輪班結束,您可能會舉手說“這是下一個輪班人員的問題”,而不是深入研究以解決問題 - 誰願意在輪班上投入比必須投入的更多的精力?這時同理心文化就能發揮巨大作用,因為你不僅要關注自己在工作上的福祉,也要關注同事的福祉。
一切都關乎同理心
同理心對於我們推動改善值班體驗的工作至關重要。作為經理或參與者,您可以積極評價甚至獎勵那些使值班工作變得更好行為的員工。營運是工程師經常感覺人們只有在出現問題時才會關注的領域之一:當網站癱瘓時,人們會在場對他們大喊大叫,但他們很少知道運營工程師在其餘時間裡為保持網站運行所做的“幕後”努力。對工作的認可可以起到很大的作用,無論是在會議上還是在一般電子郵件中感謝某人改進了特定警報、值班的技術方面,還是給予某人時間暫時代替另一位工程師值班。
鼓勵人們花時間和精力長期改善待命情況。如果您的團隊有待命工作,您應該像路線圖上的任何其他工作一樣規劃和確定該工作的優先順序。值班的 90% 都是熵,除非你積極努力改善它們,否則隨著時間的推移,它們會變得越來越糟。與您的團隊合作,找出最能激勵和獎勵員工的方法,然後利用它來鼓勵人們減少警報噪音、編寫運作手冊並創建解決值班問題的工具。無論你做什麼,都不要讓可怕的轉變變成永久的局面。
來源: www.habr.com
