當前位置: 妍妍網 > 碼農

​Netflix SRE之道:1億+會員,每天觀看超過1.25億小時,數百個微服務,成千上萬的例項,只有少於10個核心SRE。

2024-06-05碼農

這篇文章是釋出於6年前的,講述了Netflix模式下的SRE是怎樣的,至今讀來依舊受益匪淺

下面是文章 原文轉譯

在Netflix,「自由與責任」的原則已經深深地融入了我們的文化結構中,並由此產生了很多東西。

一方面,工程團隊可以自由地將新功能和服務推向生產,而無需任何批準或繁文縟節。另一方面,他們也有責任成為服務的所有者,這包括他們生產服務的營運責任。

這種方法賦予團隊能力,並允許靈活性和快速實作新功能的能力。但是這種方法如何在這樣的系統中擴充套件呢?

例項圖

在此視覺化中,每個圓圈表示由如上所述的工程團隊擁有的不同服務。許多服務每周都會更新多次。我們的服務之一,API服務,每天都會收到數十次更新。擁有能夠實作這一點的系統對於開發人員的速度來說是非常棒的。但在我們的尺度上,這也是「左手不知道右手在做什麽」的定義。公司裏沒有人能跟蹤我們所有系統的所有變化。此外,隨著我們增加新的產品功能和裝置以及擴大我們的會員基礎,我們的系統變得越來越復雜。

盡管存在這些挑戰,但整個系統需要協同工作,以提供出色的客戶體驗和非常高的可靠性。這是怎麽回事?

Netflix上的Core SRE

許多不同團隊的大量工作、工具和良好決策都有助於完成這項工作。但我們秘密的一部份是我們的核心SRE團隊,一個由經驗豐富的SRE和系統工程師組成的小團隊,我們可以稱之為服務的中樞神經系統。

Netflix的核心SRE團隊的工作是盡可能多地了解我們的系統,並利用這些知識使我們的系統更好,更可靠和可用。更具體地說,核心SRE:

  1. 了解事件

  1. 檢視事件模式和正常營運

  1. 將模式轉化為工具和最佳實踐,以最大限度地減少和防止未來的事件

了解事件

在事故發生時,SRE通常是第一反應者,但並不總是如此。然後,該人員將進行故障排除並深入研究事件,確定其嚴重性,並找出需要誰(如果有人)來緩解問題並找到導致問題的因素。這可能是上述視覺化中一個或多個服務的所有者,也可能是外部合作夥伴(例如,裝置夥伴)。核心SRE團隊將有助於確定在任何特定情況下(例如,將交通轉移到其他地區)。因為他們對整個系統了解最多,SRE通常能夠快速理解問題。有了這些知識,在許多情況下,我們可以在許多甚至任何客戶體驗不佳之前緩解事件。

在事故和健康營運中發現模式

當一個事件結束時,Netflix的SRE工作才剛剛開始。下一步是以批判的眼光看待事件,並提出許多問題,例如:

  • 是什麽導致了這一事件?

  • 是什麽阻止了這一事件?是否有未遵循的最佳實踐?當團隊遵循最佳實踐時,它是否具有預期的效果?

  • 團隊可以做哪些後續工作來防止類似事件發生?

  • 我們當時能有什麽樣的洞察力,讓我們更快地理解是什麽促成了這一事件的發生?

  • 什麽工具可以幫助我們使事件不那麽嚴重或更短?

  • 以前發生過這種事嗎?有規律嗎?

  • 參與這一事件的球隊是否在水下犯下了比我們通常期望的更多的「非受迫性錯誤」?那裏怎麽了?

  • 除了在每次事件發生後問自己這些問題外,我們還分析了所有事件的數據,無論這些事件多麽輕微,都可以看到隨著時間的推移而出現的模式。重要的是,我們還想了解當事情進展順利時會發生什麽,而不僅僅是當事情破裂時。這為我們提供了更豐富的數據集。

    將模式轉化為工具和最佳實踐,以最大限度地減少和防止未來的事件

    雖然我們的SRE沒有嵌入到擁有個人服務的工程團隊中,但我們執行著一個「管理」計劃。該計劃將關鍵工程團隊與SRE配對。與關鍵團隊保持緊密聯系,使核心SRE團隊能夠更好地了解痛點(這可以轉化為對工具和其他學習的改進),並直接與團隊倡導最佳實踐。除了管理計劃外,我們還以其他方式在整個組織中推動計劃,例如釋出最佳實踐,定期講座以及準備生產就緒服務的指導方針。

    當然,開發人員和營運工具和指標在所有這些方面都起著關鍵作用。我們的服務和裝置收集有關系統健康的各種指標:單個服務可能有數千個指標。尋找導致問題的因素組合往往感覺像大海撈針。因此,Netflix的團隊和Core SRE團隊強調了定義良好指標的重要性,保持它們的更新,並將它們轉化為直觀的儀表板(如下圖)和可操作的警報。

    此外,隨著我們系統的復雜性越來越高,我們在自動化分析方面的投資也越來越多。例如,我們自動尋找與趨勢的偏差,並執行演算法來關聯時間序列。所有這些努力的目標是減少SRE和開發人員的認知負荷,以便我們能夠更快地理解事件。

    除了不斷改進我們的工具和見解外,我們還希望最大限度地減少在事件發生期間和之後所做的手動工作。例如,我們希望能夠無縫地尋呼人員,讓合作夥伴保持在迴圈中,跟蹤受影響的裝置等等。

    在某些情況下,我們在團隊中構建工具。在其他方面,我們與整個Netflix的團隊合作。僅舉幾例,我們與Mantis團隊合作,給予我們對系統健康狀況的即時洞察,Spinnaker團隊推動我們的許多最佳實踐,Chaos團隊在系統故障變成事故之前了解它們。

    未來

    雖然多年來我們的可用性在許多方面都有所提高,我們的見解和工具也在不斷發展,但我們相信我們只是觸及了可能性的表面。

    我們可以更深入地分析更多的數據,更好地理解我們的模式。例如,我們希望了解更好的低訊號指標。

    如果我們有一個問題影響到極少數客戶,我們希望擁有所需的工具和洞察力,以快速找到這一小部份糟糕的客戶體驗,並能夠更快地緩解或解決問題。隨著我們客戶群的增長和地理位置的多樣化,我們將有更多的機會進入這些領域。