實施輪班時要考慮什麼

《高效 DevOps》作者 Ryn Daniels 分享了任何人都可以用來創造更好、更少令人沮喪且更永續的 Oncall 輪換的策略。

實施輪班時要考慮什麼

隨著 DevOps 的出現,如今許多工程師都以這種或那種方式組織輪班,這曾經是系統管理員或營運工程師的唯一責任。 值班,尤其是在非工作時間,並不是大多數人喜歡的任務。 值班會擾亂我們的睡眠,幹擾我們白天想做的正常工作,並幹擾我們的整體生活。 隨著越來越多的團隊參與守夜活動,我們提出了這樣的問題:“作為個人、團隊和組織,我們可以做些什麼來使守夜活動更加人性化和可持續?”

節省睡眠

通常,當人們想到值班時,他們首先想到的就是這會對他們的睡眠產生負面影響; 沒有人希望半夜被警報吵醒。 如果您的組織或團隊規模足夠大,您可以使用「跟隨太陽」輪換,即多個時區的團隊參與同一輪換,輪班時間較短,因此每個時區僅在其業務期間值班(或至少醒來)小時。 建立這樣的輪調可以創造奇蹟,減少服務員所承擔的夜間工作量。

如果您沒有足夠的工程師和地理分佈來支持跟隨太陽輪換,您仍然可以採取一些措施來減少人們在半夜被不必要地吵醒的可能性。 畢竟,凌晨 4 點起床解決客戶面臨的緊迫問題是一回事; 醒來卻發現自己正在處理一場虛驚則是另一回事。 它可以幫助您檢查您設定的所有警報,並詢問您的團隊實際上需要哪些警報來在下班後叫醒某人,以及這些警報是否可以等到早上。 讓人們同意關閉一些非工作警報可能很困難,特別是如果過去錯過的問題已經導致了問題,但重要的是要記住,睡眠不足的工程師並不是最高效的工程師。 在真正重要的工作時間設定這些警報。 如今,大多數警報工具都允許您為下班後通知設定不同的規則,無論是 Nagios 通知週期還是在 PagerDuty 中設定不同的時間表。

睡眠、職責和團隊文化

睡眠中斷的其他解決方案涉及更大的文化變革。 解決此問題的一種方法是監控警報,特別注意警報何時到達以及它們是否可採取行動。 行動週刊 是由 Etsy 創建和發布的工具,允許團隊追蹤和分類他們收到的警報。 它可以產生圖表,顯示有多少警報喚醒了人們(使用健身追蹤器的睡眠數據),以及有多少警報實際上需要人類採取行動。 使用這些技術,您可以追蹤隨叫隨到的有效性及其對睡眠的影響。

團隊可以發揮作用,確保每個值班人員得到足夠的休息。 創造一種鼓勵人們照顧自己的文化:如果你因為晚上被叫而失眠,你可以在早上多睡一會兒,以彌補失去的睡眠時間。 團隊成員可以互相照顧:當團隊透過 Opsweekly 之類的工具相互分享睡眠數據時,他們可以去找值班的同事說:「嘿,看起來你昨晚與 PagerDuty 度過了一個艱難的夜晚。」 「今晚要不要我給你蓋被子,讓你好好休息一下?” 鼓勵人們以這種方式互相支持,並阻止人們將自己推向極限並避免尋求幫助的「英雄文化」。

減少上班時的影響

當工程師因為在值班時被吵醒而感到疲倦時,他們顯然不會以 100% 的能力工作,但即使不考慮睡眠不足,值班也會對工作產生其他影響。 執勤期間最嚴重的損失之一是由於幹擾因素、環境變化造成的:由於注意力不集中和環境切換,一次中斷可能會導致至少 20 分鐘的損失。 您的團隊可能會有其他幹擾來源,例如其他團隊產生的票證、透過聊天和/或電子郵件提出的請求或問題。 根據這些其他中斷的數量,您可以考慮將它們添加到值班時的現有輪換中,或設定第二個輪換來處理這些其他請求。

當您規劃團隊將要做的工作(長期和短期)時,考慮到這一點很重要。 如果您的團隊往往有相當密集的輪班,則需要在長期規劃中考慮到這一事實,因為您可能會遇到這樣的情況:全體員工在任何給定時間都有效地值班,而不是做其他工作。 在短期規劃中,您可能會發現待命人員由於其待命職責而無法按時完成任務 - 這應該是預料之中的,團隊的其他成員應該願意適應並幫助確保工作順利完成完成工作,並為待命人員的工作任務提供支援。 無論值班人員是否被叫來,值班人員輪班都會影響值班人員執行其他工作的能力——不要指望值班人員除了下班後值班。

團隊必須找到一種方法來應對值班時產生的額外工作。 這項工作可能是解決監控和警報系統檢測到的實際問題的實際工作,也可能是修復監控和警報以減少誤報警報數量的工作。 無論所創建的工作性質如何,在整個團隊中公平且可持續地分配工作非常重要。 並非所有待命輪班都是一樣的,有些輪班比其他輪班更複雜,因此,如果指定接收警報的人是負責處理該警報所有後果的人,可能會導致工作分配不均。 讓值班人員負責安排或分配工作可能更有意義,並期望團隊的其他成員願意協助完成所創建的工作。

創造並維持工作與生活的平衡

想想值班對您工作以外的生活有何影響。 當您值班時,您可能會感到與手機和筆記型電腦捆綁在一起,這意味著您總是隨身攜帶筆記型電腦和行動路由器(USB 數據機),或者乾脆不離開家/辦公室。 隨叫隨到通常意味著放棄輪班期間見朋友或家人等事情。 這意味著每次輪班的時間長短取決於團隊中的人數,而輪班的頻率會給人們帶來過度的負擔。 您可能需要嘗試輪班的長度和時間安排,以找到至少適合大多數相關人員的時間表,因為不同的團隊和人員會有不同的優先事項和偏好。

認識到值班對人們生活的影響至關重要,無論是在管理層面還是在個人層面。 應該指出的是,特權較少的人會不成比例地感受到這種影響。 例如,如果你必須花時間照顧孩子或其他家庭成員,或者如果你發現大部分家務落在你的肩上,那麼你已經比那些不承擔責任的人擁有更少的時間和精力。 這種「二班制」或「三班制」工作往往會對人員產生不成比例的影響,如果您建立的值班輪調時間表或強度假設參與者在辦公室之外沒有個人生活,那麼您就限制了參與工作的人員。可以加入你的團隊。

鼓勵人們盡量保持正常的作息時間。 您應該考慮為團隊提供行動路由器(USB 數據機),以便人們可以帶著筆記型電腦離開家,但仍然可以過上正常的生活。 如有必要,請鼓勵人們互相交換值班時間,以便人們可以在值班時去健身房或看醫生。 不要創造一種隨叫隨到的文化,即工程師除了隨叫隨到之外什麼都不做。 工作與生活的平衡是任何工作的重要組成部分,但特別是當您考慮下班時間時,團隊中的高級成員應該在工作與生活的平衡方面為其他人樹立榜樣,在值班期間盡可能做到這一點。

在個人層面上,不要忘記向你的朋友、家人、伴侶、寵物等解釋值班意味著什麼(你的貓可能不會在意,因為當你收到警報時,它們已經在凌晨 4 點起床了) ,儘管他們絕對不會想幫助你解決這個問題)。 確保在輪班結束後彌補損失的時間,例如,無論是去看朋友、家人或睡覺。 如果可以的話,請考慮設定一個無聲鬧鐘(例如智慧手錶),它可以透過手腕的嗡嗡聲喚醒您,這樣您就不會吵醒周圍的任何人。 當您值班期間和結束時,想辦法照顧好自己。 您可能想要準備一個「隨叫隨到的生存工具包」來幫助您放鬆:聽您最喜歡的音樂的播放列表,閱讀您最喜歡的書,或者花時間與您的寵物玩耍。 管理者應該鼓勵員工自我保健,在員工值班一週後休息一天,並確保員工在需要時尋求(並獲得)協助。

提升執勤體驗

總的來說,值班不應該只是被視為一項糟糕的工作:作為值班者,你有機會也有責任積極工作,讓未來值班的人過得更好,這意味著人們收到的消息會更少,而且會更準確。 同樣,使用 Opsweekly 之類的工具追蹤警報的價值可以幫助您找出是什麼讓您的 on-call 煩人並解決它。 對於不活動的警報,問問自己是否有辦法消除這些警報 - 也許這意味著它們只會在工作時間內響起,因為有些事情您不需要在半夜做出回應。 不要害怕刪除警報、更改警報或將發送方式從“發送到電話和電子郵件”更改為“僅電子郵件”。 實驗和迭代是隨著時間的推移提高職責的關鍵。

對於實際可操作的警報,您應該考慮工程師採取必要操作的難易度。 每個正在運行的警報都應該有一個與之配套的運行手冊 - 考慮使用 nagios-herald 等工具將運行手冊連結添加到警報中。 如果警報足夠簡單,不需要運行手冊,那麼它可能足夠簡單,您可以使用 Nagios 事件處理程序之類的東西自動響應,這樣人們就不必為了輕鬆自動化的任務而醒來或中斷自己。 Runbook 和 nagios-herald 都可以幫助您為警報添加有價值的上下文,這將有助於人們更有效地回應警報。 看看您是否可以回答常見問題,例如:此警報上次響起是什麼時候? 上次誰回答了這個問題,他們最終採取了哪些行動(如果有)? 同時出現的其他警報有哪些?它們是否相關? 這種類型的上下文資訊通常只存在於人們的大腦中,因此鼓勵記錄和共享上下文資訊的文化可以減少響應警報所需的開銷。

隨叫隨到帶來的疲勞很大一部分原因在於它們永遠不會結束——如果你的團隊有隨叫隨到,那麼在可預見的未來,它們不太可能隨時結束。 轉變永遠不會結束,我們可能會覺得它們總是很糟糕。 這種缺乏希望是一個很大的心理問題,可能會導致壓力和疲憊,因此解決責任永遠是可怕的觀念(除了現實之外)是開始長期思考你的責任的好地方。

為了讓人們看到值班情況不斷改善的希望,系統必須具有可觀察性(與我之前提到的值班追蹤和分類相同)。 追蹤您有多少警報、其中需要人工幹預的百分比、有多少警報喚醒人們,然後努力創造一種鼓勵人們做得更好的文化。 如果你有一個龐大的團隊,當你的值班時間結束時,你可能會很容易舉起雙手說“這是未來值班人員的問題”,而不是埋頭苦幹去解決問題——谁愿意花更多錢呢?執勤所付出的努力比他們所需付出的努力還要多嗎? 這就是同理心文化可以發揮巨大作用的地方,因為你不僅要關心自己在值班時的福祉,還要關心你的同事。

這都是關於同理心

同理心是我們提升績效、改善待命體驗的重要部分。 作為經理或會員,您可以積極評估甚至獎勵那些使轉變更好的行為。 營運支援是工程師經常覺得人們只在出現問題時才關注他們的領域之一:當網站崩潰時,人們會在那裡對他們大喊大叫,但他們很少了解營運支援的幕後工作工程師們致力於保持網站在其餘時間保持運作。 認可工作可以大有幫助,無論是在會議或一般電子郵件中感謝某人改進了特定警報、值班的技術方面,還是給某人時間代替另一位輪班工程師一段時間。

鼓勵人們花時間和精力來長期改善他們的待命狀況。 如果您的團隊有待命人員,您應該像路線圖上的任何其他工作一樣規劃這項工作並確定其優先順序。 On-call 是 90% 的熵,除非你積極努力改進它們,否則隨著時間的推移,它們會變得越來越糟。 與您的團隊合作找出最能激勵和獎勵人們的因素,然後利用它來鼓勵人們減少警報噪音、編寫操作手冊並創建解決隨叫隨到問題的工具。 無論你做什麼,都不要滿足於將可怕的責任作為事態的永久組成部分。

來源: www.habr.com

添加評論