發(fā)布時間:2024-01-24閱讀(12)

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

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

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