發布時間:2024-01-24閱讀(17)

我幾年來一直在推文中講話和怒吼,一次又一次地被問到同樣的問題:“如何成為 SRE?”
我的回答通常是漫無邊際的。這么久,有時候我甚至都沒有回信。可以說的太多了!太多的歷史、太多的內容、太多由于不同個人情況而產生的因素。
所以,在這里表達一些我關于如何成為 SRE 的正式的回應:我認為它是什么,我是如何成為 SRE 的,要成為 SRE 你應該做些什么。本文是一本指南,可用作書簽、參考和分享。它提供了一些見解,讀者可以根據具體情況進行映射,以幫助開始自己特定的路徑。
希望你在旅程中發現這些內容很有用。
目錄那么,什么是 SRE(網站可靠性工程)?根據 Google SRE 的書:“SRE 就是軟件工程師設計一個運維團隊的過程。”由于多種原因,這個定義有點爭議,尤其是它的含義是運維團隊無法進行合理的系統設計,而不是運維團隊經常資源不足。這個定義的爭議性還在于它暗含著所有的 SRE 都在日復一日地對后端系統進行編碼,而這在 Google 甚至都不正確。
雖然谷歌投入了相當多的資金來對外宣傳 SRE 的定義,但業內人士根據自己的情況開始實踐 SRE,這樣就導致了公司與公司之間有很大差異。而對它的定義,我看到的 SRE 指的是:
我想明確一點:本指南不是關于 Google SRE 的。Google SRE 有自身 SRE 的實踐風格,某種程度來說是一個完全不同的學科。其他大公司可能會采用 Google SRE 的一部分,但我不知道谷歌以外誰會完全這樣實施。如果你想成為 Google SRE,那完全沒問題,但是這篇文章并不想這樣引導。
那么,SRE 更廣泛的定義是什么呢?很難為所有公司確定一個定義,就像很難為所有公司定義軟件工程一樣。如果軟件工程師(SE)是由代碼定義的,那么 SRE 也是軟件工程師。那么,SRE 和需要 on-call 的軟件工程師之間有什么區別呢?
如果你非要讓我說,我會將網站可靠性工程定義為:“大規模構建和維護可靠的 SaaS 平臺的實踐。”我認為 SRE 適用于擁有大型 SaaS 產品的公司,他們通常有高流量的網站和相關服務。也就是說,我是按照“網站可靠性”的字面意思來下的定義。
(你可能認為大型的內部服務(例如數據庫)需要 SRE,但我的觀點是這樣的服務可能支持更大的面向客戶的平臺)。

一個需要 on-call 的軟件工程師知道代碼如何工作、破解和修復。網站可靠性工程師知道代碼要如何適應公司的架構,并且需要設置整個系統以保證服務成功運行。
那么根據這個定義,SRE 的一些關鍵技能覆蓋哪些領域?
有人會抱怨“太多了!”,確實如此。SRE 是一門廣泛的學科,因為運行大型分布式站點需要很多的技能。事實上,許多 SRE 傾向于專注上述的一種或兩種技能。你可能也發現了,有的公司通常有多個 SRE 團隊,支持平臺上的不同領域。也有的團隊可能正在實踐 SRE 但叫法不同,例如叫基礎設施工程或生產工程。你還會發現有些擁有 SRE 團隊的公司根本就沒有在實踐 SRE。我鼓勵大家把注意力集中在工作本身上,不用太糾結 SRE 的實際含義是什么。
現實每當有人問我如何成為 SRE 時,通常他們最后會問自己為什么要做 SRE。這樣說似乎不太禮貌,讓我們花點時間來解釋一些可能對該領域的誤解。根據 Google 的深度營銷與行業整體情況,期望與現實之間可能存在很大差異。
期望
現實
上述現實并非在每個地方都是如此,但還是比很多人期望的要真實。有時你要為新的花哨平臺構建工具,有時候需要與 Puppet(一個自動化部署工具)和 DNS 作斗爭。你需要具備靈活性并積累各種技能來完成工作。
SRE 的其他一些現實
有一個非常老套的說法:如果是為了權力和榮耀,可能會感到失望。成為 SRE,因為你對這個工作感興趣。
我自己的路有時人們會根據我職業生涯中的具體步驟來追問:書名,公司,會議等。他們希望得到盡可能多的信息,以便嘗試復制我的道路。問題是,我的道路不容易復制。
我普通的道路
如果回放,這就是一個電影學生成為科技工作者的故事。 只要努力工作,你也會實現自己的夢想! 但這條道路是他人無法復制的,例如,當我面試支持方面的工作時,我是一個年輕的、白人、純女性打扮的女人,由年長的、有家室的白種男性雇傭。 他們決定“給我個機會”,并說我讓他們想起了他們的女兒,其中有個人甚至基于他小女兒的學校作業面試了我! 做這種關聯的感覺并不好,雖然它確實對我有利,但我無法幫助你復制它。
我認為我的道路中可以而且應該復制的,是不斷學習。我的整個科技生涯就是我做的工作和我正在學習的工作。我不斷閱讀書籍,觀看講座,上課,學習新語言,與業界朋友交談。我不會滿足于現狀,如果對當前正在做的工作不感興趣,我會在晚上找到一些有趣的東西,然后會付諸行動。最終,這些新技能可以幫助我完成目前的工作或保證下一個工作。
我沒有做到,但是你應該去做的是利用你的社區。在開始一家科技公司的工作之前,我還不知道技術社區是怎么一回事,我一個人一直在抨擊 Python 問題,而不是參加聚會并獲得幫助。有一段時間我找不到工作,也不了解技術工作相關的情況。后來我終于找到了工作,但我認為這更多的是一些運氣的成分而不是我的能力。利用你的社區吧!它會幫助你找到一份工作。
你的道路我遇到過各種不同背景的人,他們都想要成為 SRE。有些人已經是開發人員,有些人還在訓練營,有些人在做 QA 或營銷,他們都想知道下一步應該是什么。
官方的答案是“看情況”,這是認真思考權衡所有情況后的答案!但我知道這個答案沒有什么用,所以讓我們以不同的方式來往下說。
如果我現在試圖成為 SRE,會做兩件事:
你可能不熟悉這個術語 - “跳躍”(hops)。它是一種網絡概念,指的是數據包在來源和目標之間發生的路由網絡設備(路由器、網橋等)的數量。在家用 wifi 上的筆記本電腦和朋友的筆記本電腦之間傳輸的數據包,可能比在筆記本電腦和另一個國家 / 地區的朋友的筆記本電腦之間傳輸的數據包少。同樣地,我認為與 SRE 團隊合作的開發人員,比學習電影畢業后想要成為 SRE 的人之間的跳躍會更少。

職業生涯中的跳躍就像是技能和網絡(人際網絡!)間的組合 。這是一個持續的過程,找到需要什么技能來進行下一跳,并找到能幫助你成功的人。你的下一跳很可能不是一個 SRE 工作,但它會讓你更接近 SRE!
與計算機網絡非常相似,社交網絡越大,道路就越有效率。這取決于誰幫助你、擁有的技能和時間,你的道路可能比同一個地方的其他人更長或更短。一個人的道路可能看起來像新兵訓練營 - 自由職業者 - 兼職開發人員 - 副業做做運維 - 系統管理員 - 運維 - SRE。而另一個人可能會在剛畢業就找到 SRE 團隊的實習機會。不同的人有不同的機會,你需要找到符合自己實際情況的機會。
因此,先找到 SRE 有哪些相關的技能然后縮小這些技能范圍。縮小到什么程度呢,就是如果你擁有了這部分技能,你就可以得到一份更接近 SRE 的新工作。然后重復。
例如,如果不知道如何編程:學會編程!去訓練營,參加在線課程,獲得計算機科學學位,做一切合適的事情。擴展人際網絡并找到招聘人員,或做自由職業。盡量讓你的簡歷上有開發經歷,然后在新職位中學習下一個技能,例如網絡或數據庫。參加更多的課程,找到更多的聚會,換新工作,一步步接近 SRE。
最難的部分,是如何讓你的腳踏進那道門檻。一旦有了開發人員或系統管理員的工作,一旦可以在簡歷上展示出某種形式的“工程師”,你就有空間來呼吸。堅持那份工作 1 到 2 年,獲得一些經驗,建立自己的網絡,并開始下一個支點。這需要時間,但會是你職業生涯剩余的時間中,成為 SRE 并超越它的一個方法。
面試無論你過程如何,最終都會碰到 SRE 工作的面試。恭喜!不同公司和團隊的 SRE 面試是不同的,具體取決于你的職責。因此,提前研究好工作崗位(無論如何你都應該這樣做),并準備好要涵蓋的主要主題。
除了在所有面試中常見的行為方面的問題之外,SRE 的面試還會包括編碼、故障排除和可靠性方面的問題。
編碼
故障排除
可靠性
對于入門級 SRE,我希望能夠使用一種靈活的編程語言,比如 Python。可以創建一個小的應用程序,編寫測試并處理異常。還希望看到像 Linux 這樣的操作系統方面的一些能力,可以在命令行上搜索文件系統,知道如何 grep 日志,可以 ping 一個域。希望看到大規模技能方面的一些預見,例如使用配置管理系統或 CI 工具。可能無法負擔運行 AWS 實例的費用,但也許已經使用免費的 Heroku 帳戶,并在免費的監控 add-ons 程序中檢出了你的應用程序指標。無論在 SRE 職業生涯中,無論是 Kubernetes 還是 MySQL 還是邊緣網絡,這些基礎的技能都將幫助你取得成功。
一個有趣的部分,每次面試結束時都應該留出時間讓你提問 ; 也就是說,你要面試公司。應該提前計劃出這些問題,并寫下來以供參考。要注意他們的答案。要從感覺上了解他們的工作文化、項目和團隊的健康狀況。
可能不會第一次得到你夢寐以求的工作,但是詢問其中的一些問題,可以幫你了解這項工作將如何為下一次求職提供幫助。
“過去六個月你做了哪些項目?”
“你最后一次被呼叫的時間是什么時候,是因為什么?”
“你所有的開發團隊都 on-call 嗎?”
問這些問題不是來確保呆在最好的公司,而是要清楚你想要的是什么。例如,如果喜歡未來的隊友和福利套餐,但是知道自己正在進行可怕的 on-call 輪換,那么你可以在薪資談判中提到這一點。重復一遍,可能不會第一次嘗試就得到夢寐以求的工作,所有的公司都有其優點和缺點。牢牢地記住哪些因素破壞了雙方的印象,并盡力去搞清楚哪些公司存在這個因素。
資源現在,你已經了解了什么是 SRE,并且有一條通向它的道路。下一步就是發展你的技能!
如上所述,通往 SRE 有很多道路,包括計算機科學學位和編碼訓練營。但那些要花錢,并且可能對你來說遙不可及。可以利用免費資源進入市場,我認為每個人都應該擁有同樣的機會。
以下是 SRE/Ops/Systems 社區提供的免費教育資源的合集,我還沒有親自把所有的都使用過,所以也沒有什么排名,但每一個都強烈推薦。這里提供了這些材料的不同類型,以便你根據自己的學習方式進行選擇。
你在這里的所有學習都不要停下來。選擇看起來很有趣的內容,如果不能解決問題,請選擇其它內容。使用以下列表作為學習指南,來作為填補你空白的備忘單,它甚至還是檢查你是否會享受 SRE 工作的一個好方法!
一般 / 多個主題
Architecture
Cloud
Databases
Git
Networking
Operating system internals
Programming
Puppet
Security
Unix / Linux operations
Vim
Copyright ? 2024 有趣生活 All Rights Reserve吉ICP備19000289號-5 TXT地圖HTML地圖XML地圖