做運維的感悟(做運維需要考慮事,運維組織結構,運維學習地圖....)

youmen發表於2020-12-21

做運維需要考慮的事

簡介
/*
  運維是在於一個量
      最少的人,最多的事 並且保證業務
      比如說google的一個資料中心,只有幾個人在維護
      運維不能直接的創造價值,而是可以變相的節約成本
      你節約的成本x你的意識x你的覺悟=你的價值
      ———-來自 98素辭
*/
服務來說

1.對服務版本選擇,要和開發溝通,如果開發用的php語言,那就問他寫的程式碼是哪個版本的,不同版本可能不相容一些語法,會導致出錯

要選擇穩定版,太新的可能會導致一些bug,從而崩潰或服務出錯。選擇新版本唯一的目的應該是需要新的功能,否則老的版本最穩定

服務部署後要進行簡單測試,讓服務可以照常執行才可以,不能裝完就算了。對於java這種替換版本,1.7升級到1.8可能導致某些依賴1.7的JDK,這都要去考慮清楚。

當服務執行後要注意他的啟動使用者是什麼,可能使用者不對造成無法讀取檔案。比如nginx啟動時www使用者,他就沒法讀取/data裡找html傳送給使用者。

資料庫如果要和庫,要考慮是否有表名字重複。如果公用一個redis進行快取,要考慮寫入的資料是否衝突。

2.根據業務進行結構分析,是使用nginx還是apache,選擇前填寫調研文件,進行測試,寫測試文件和部署,使用文件

3.根據業務量進行機器的數量選擇還有配置選擇,最好將配置做成套餐,比如將tomcat機器,每個都是8核16G記憶體,硬碟100基礎,這個作為一個套餐來建立虛擬機器或者雲機器選購。

4.根據需求進行主從,或者負載均衡選擇,可能還要選擇備份容災,cdn等等

5.對服務的日誌進行分析,比如ip來源地址,pv,uv

6.對服務和系統進行優化,優化前和優化後差別很大,效能可以差一倍。

7.安全防護,不只有ddos,還有登陸問題。多關注軟體可能暴露的一些安全問題,或者linux本身的系統問題

說不定謀個nginx版本突然說有問題,你還沒關注到,那就很容易被黑掉

8.網路問題,很多時候都是這樣,某個地方訪問慢,但其他人訪問不慢,很頭疼,需要抓包再逐步排查

9.效能問題,可能最初還好。隨著壓力來臨,資料庫可能有慢查詢,需要進行排查和解決。網站可能有部分使用者訪問不了,或者訪問緩慢,都需要去排查

這塊是最難得,需要各方面知識,如果遇到突然訪問不了,那就回想之前做了哪些操作,再針對性排查

10.關注版本問題,像nginx1.9將支援tcp的4層代理,而不僅僅是之前的7層了,這樣效能會提高很多,對公司業務很有幫助

11.優化,不僅是系統的核心方面優化,還有服務的配置檔案優化,這點需要長久深刻的理解才行。預設的都是最標準的,但是可以根據情況捨棄一部分的東西,來加強另一部分,達到適合業務。

比如nginx做反向代理,可以優化核心引數,快速釋放連結,超時時間配置短一些,這樣可以處理更高的併發。但是如果提供php等服務的話,就要配置長一些,來達到穩定的效果

12.要考慮整體結構情況。比如nginx做負載均衡,可能抗壓能力很出色,但是後面的資料庫只有3臺,導致資料庫頻寬被打滿,也會造成訪問不了的問題

釋出來說

1.如何釋出,是手動還是自動,如果機器多了,需要jenkins之類進行自動釋出

2.容災問題,程式碼如果釋出失敗,需要迅速回滾,不影響問題,釋出的時候也不要所有節點一起釋出,挨個節點發布

3.還要對老的程式碼進行備份,防止未來可能突然發生的問題,需要回滾

整體來說

1.運維並不是成天都是忙著去排錯,大部分時間都是空閒的,這時候就需要自制力去學習東西了

2.運維的價值=你節約的成本 x 你的意識 x 你的覺悟

運維並不能直接搞出價值,但是可以優化,調整結構來省錢,不出事就是最好的價值。同時分析日誌能創造隱形的價值給公司。

3.優化現有的方式,公司在成長中,肯定會有很多隱患,比如最初是用一個指令碼來批量操作10-20臺機器,後面公司擴充有100臺機器,就要用ansible來批量操作了。這些都需要自動化,後面還要自動釋出,壓力大來自動擴容,報警cpu不夠自動調節緩解當前機器壓力等待

4.服務也不是照著百度吧配置檔案放上即可,像負載均衡,可能排程演算法填寫的不對,造成一臺壓力大,一臺壓力小。還可能服務佔用一個cpu壓力大,其他都閒著,這些都是不行的。

5.文件要多寫,比如資產文件,那些機器的配置,還有密碼錶,服務連線文件,部署文件,維護文件都要寫,文件的作用一個是自己用,另一個是等你離職或者新員工加入,他們可以快速來維護。

6.部署一個新服務,必須要測試過後才上線,而測試不是安裝即可,需要找資料進行深度測試,模擬線上環境。

7.謹慎甚微,任何操作琢磨幾遍再打,不要隨意就打了,比如重啟線上nignx用reload,否則當前業務中斷了。

8.監控很重要,可以檢視流量,某些服務使用記憶體是否超標,沒有監控出了事都不知道,監控不僅要監控服務的埠防止掛掉,還要他深度的使用,比如mysql的慢查詢,命中率,主從狀態等等。

9.體系,運維最好制定一些釋出流程,虛擬機器申請流程,巡檢流程等等。巡檢也是很重要的,雲伺服器也要定時看看是否磁碟滿了,是否要續費等等。否則哪天出問題,問題就大了。

10.對業務進行機器規劃,當壓力大時擴容,不大時逐步關閉

11.測試也很重要,一個服務從多方面進行測試,比如nginx從靜態頁面,動態頁面,提交資料,模擬多個線上使用者登入訪問等等。

12.修改檔案前必須備份,方便回滾,操作日誌最好有審計

(1)提前積累技術,可能明白了謀個東西,優化後讓伺服器效能提高2個點
(2)提前預防問題,防範於未然
(3)想多些可能性,當前結構可能穩當,但必定不是最好的

運維組織結構

簡介

運維的工作方向比較多,隨著業務規模的不斷髮展,越成熟的網際網路公司,運維崗位會劃分得越細。當前很多大型的網際網路公司,在初創時期只有系統運維,隨著業務規模、服務質量的要求,也逐漸進行了工作細分。一般情況下運維團隊的工作分類(見圖1-1)和職責如下。

系統運維

系統運維負責IDC、網路、CDN和基礎服務的建設(LVS、NTP、DNS);負責資產管理,伺服器選型、交付和維修。詳細的工作職責如下:

(1)IDC資料中心建設
收集業務需求,預估未來資料中心的發展規模,從骨幹網的分佈,資料中心建築,以及Internet接入、網路攻擊防禦能力、擴容能力、空間預留、外接專線能力、現場服務支撐能力等多個方面評估選型資料中心。負責資料中心的建設、現場維護工作。

(2)網路建設
設計及規劃生產網路架構,這裡麵包括:資料中心網路架構、傳輸網架構、CDN網路架構等,以及網路調優等日常運維工作。

(3)LVS負載均衡和SNAT建設
LVS是整個站點架構中的流量入口,根據網路規模和業務需求,構建負載均衡叢集;完成網路與業務伺服器的銜接,提供高效能、高可用的負載排程能力,以及統一的網路層防攻擊能力;SNAT集中提供資料中心的公網訪問服務,通過叢集化部署,保證出網服務的高效能與高可用。

(4)CDN規劃和建設
CDN工作劃分為第三方和自建兩部分。建立第三方CDN的選型和排程控制;根據業務發展趨勢,規劃CDN新節點建設佈局;完善CDN業務及監控,保障CDN系統穩定、高效執行;分析業務加速頻道的檔案特性和數量,制定最優的加速策略和資源匹配;負責使用者劫持等CDN日常故障排查工作。

(5)伺服器選型、交付和維護
負責伺服器的測試選型,包含伺服器整機、部件的基礎性測試和業務測試,降低整機功率,提升機架部署密度等。結合對公司業務的瞭解,推廣新硬體、新方案減少業務的伺服器投入規模。負責伺服器硬體故障的診斷定位,伺服器硬體監控、健康檢查工具的開發和維護。

(6)OS、核心選型和OS相關維護工作
負責整體平臺的OS選型、定製和核心優化,以及Patch的更新和內部版本釋出;建立基礎的YUM包管理和分發中心,提供常用包版本庫;跟進日常各類OS相關故障;針對不同的業務型別,提供定向的優化支援。

(7)資產管理
記錄和管理運維相關的基礎物理資訊,包括資料中心、網路、機櫃、伺服器、ACL、IP等各種資源資訊,制定有效的流程,確保資訊的準確性;開放API介面,為自動化運維提供資料支援。

(8)基礎服務建設
業務對DNS、NTP、SYSLOG等基礎服務的依賴非常高,需要設計高可用架構避免單點,提供穩定的基礎服務。

應用運維

應用運維負責線上服務的變更、服務狀態監控、服務容災和資料備份等工作,對服務進行例行排查、故障應急處理等工作。詳細的工作職責如下所述。

(1)設計評審
在產品研發階段,參與產品設計評審,從運維的角度提出評審意見,使服務滿足運維准入的高可用要求。

(2)服務管理
負責制定線上業務升級變更及回滾方案,並進行變更實施。掌握所負責的服務及服務間關聯關係、服務依賴的各種資源。能夠發現服務上的缺陷,及時通報並推進解決。制定服務穩定性指標及准入標準,同時不斷完善和優化程式和系統的功能、效率,提高執行質量。完善監控內容,提高報警準確度。線上上服務出現故障時,第一時間響應,對已知線上故障能按流程進行通報並按預案執行,未知故障組織相關人員聯合排障。

(3)資源管理
對各服務的伺服器資產進行管理,梳理伺服器資源狀況、資料中心分佈情況、網路專線及頻寬情況,能夠合理使用伺服器資源,根據不同服務的需求,分配不同配置的伺服器,確保伺服器資源的充分利用。

(4)例行檢查
制定服務例行排查點,並不斷完善。根據制定的服務排查點,對服務進行定期檢查。對排查過程中發現的問題,及時進行追查,排除可能存在的隱患。

(5)預案管理
確定服務所需的各項監控、系統指標的閾值或臨界點,以及出現該情況後的處理預案。建立和更新服務預案文件,並根據日常故障情況不斷補充完善,提高預案完備性。能夠制定和評審各類預案,週期性進行預案演練,確保預案的可執行性。

(6)資料備份
制定資料備份策略,按規範進行資料備份工作。保證資料備份的可用性和完整性,定期開展資料恢復性測試。

資料庫運維

資料庫運維負責資料儲存方案設計、資料庫表設計、索引設計和SQL優化,對資料庫進行變更、監控、備份、高可用設計等工作。詳細的工作職責如下所述。

(1)設計評審
在產品研發初始階段,參與設計方案評審,從DBA的角度提出資料儲存方案、庫表設計方案、SQL開發標準、索引設計方案等,使服務滿足資料庫使用的高可用、高效能要求。

(2)容量規劃
掌握所負責服務的資料庫的容量上限,清楚地瞭解當前瓶頸點,當服務還未到達容量上限時,及時進行優化、分拆或者擴容。

(3)資料備份與災備
制定資料備份與災備策略,定期完成資料恢復性測試,保證資料備份的可用性和完整性。

(4)資料庫監控
完善資料庫存活和效能監控,及時瞭解資料庫執行狀態及故障。

(5)資料庫安全
建設資料庫賬號體系,嚴格控制賬號許可權與開放範圍,降低誤操作和資料洩露的風險;加強離線備份資料的管理,降低資料洩露的風險。

(6)資料庫高可用和效能優化
對資料庫單點風險和故障設計相應的切換方案,降低故障對資料庫服務的影響;不斷對資料庫整體效能進行優化,包括新儲存方案引進、硬體優化、檔案系統優化、資料庫優化、SQL優化等,在保障成本不增加或者少量增加的情況下,資料庫可以支撐更多的業務請求。

(7)自動化系統建設
設計開發資料庫自動化運維繫統,包括資料庫部署、自動擴容、分庫分表、許可權管理、備份恢復、SQL稽核和上線、故障切換等功能。

運維研發

運維研發負責通用的運維平臺設計和研發工作,如:資產管理、監控系統、運維平臺、資料許可權管理系統等。提供各種API供運維或研發人員使用,封裝更高層的自動化運維繫統。詳細的工作職責如下所述。

(1)運維平臺
記錄和管理服務及其關聯關係,協助運維人員自動化、流程化地完成日常運維操作,包括機器管理、重啟、改名、初始化、域名管理、流量切換和故障預案實施等。

(2)監控系統
負責監控系統的設計、開發工作,完成公司伺服器和各種網路裝置的資源指標、線上業務執行指標的收集、告警、儲存、分析、展示和資料探勘等工作,持續提高告警的及時性、準確性和智慧性,促進公司伺服器資源的合理化調配。

(3)自動化部署系統
參與部署自動化系統的開發,負責自動化部署系統所需要的基礎資料和資訊,負責許可權管理、API開發、Web端開發。結合雲端計算,研發和提供PaaS相關高可用平臺,進一步提高服務的部署速度和使用者體驗,提升資源利用率。

運維安全

運維安全負責網路、系統和業務等方面的安全加固工作,進行常規的安全掃描、滲透測試,進行安全工具和系統研發以及安全事件應急處理。詳細的工作職責如下所述。

(1)安全制度建立
根據公司內部的具體流程,制定切實可行,且行之有效的安全制度。

(2)安全培訓
定期向員工提供具有針對性的安全培訓和考核,在全公司內建立安全負責人制度。

(3)風險評估
通過黑白盒測試和檢查機制,定期產生對物理網路、伺服器、業務應用、使用者資料等方面的總體風險評估結果。

(4)安全建設
根據風險評估結果,加固最薄弱的環節,包括設計安全防線、部署安全裝置、及時更新補丁、防禦病毒、原始碼自動掃描和業務產品安全諮詢等。為了降低可能洩露資料的價值,通過加密、匿名化、混淆資料,乃至定期刪除等技術手段和流程來達到目的。

(5)安全合規
為了滿足例如支付牌照等合規性要求,安全團隊承擔著安全合規的對外介面人工作。

(6)應急響應
建立安全報警系統,通過安全中心收集第三方發現的安全問題,組織各部門對已經發現的安全問題進行修復、影響面評估、事後安全原因追查。

從月薪5K到50k

簡介

這是一個熱門運維問題,也是很多剛進入運維工作的同學面臨的心境。

確實,【 運維 】可能是分水嶺最明顯的職位之一:有的人畢業6年,月薪從3K漲到到50K;有的人工作4年,依然做著重啟伺服器、檢查機房的機械工作,這都是知乎上能看到的真實事例。

今天,我們就通過拉勾上,薪資 5K 到 100K 的運維招聘要求,來看看運維從搬磚到大神,都要學習些什麼。

階段一(3k-5k)

“昨天又搬了65臺伺服器……”
——本階段工作描述

一張圖概括:

招聘崗位和要求

/*
	崗位一:
  崗位職責:
  公司電腦多媒體以及網路日常維護,以及桌面運維支援
  任職資格:
  1、能熟練更換PC硬體
  2、熟悉辦公常用軟體以及郵箱
  3、對網路運維方面有一定了解,並能夠熟練配置交換機防火牆以及路由器。
  (4K—6K 百度文學)

  崗位二:
  崗位職責:
  1、負責公司內、外網路平臺的搭建、實施及網路(含無線網路技術、裝置)的具體維護工作;
  2、針對公司開展的網路技術方案的定型與實施工作提出建議;
  3、網路及安全技術實施方案中安裝、除錯、維護工作;
  4、負責公司辦公網路及IDC網路日常維護工作;
  5、負責集團網路裝置及廣域線路的統計工作。

  任職資格:
  1、2018屆畢業生,專科及以上學歷、計算機相關專業;
  2、誠實守信,性格開朗,無不良歷史記錄;
  3、善於學習,善於溝通,文件功底好,勇於面對挑戰,敢於承擔工作壓力;
  4、學生幹部或有相關網路工程師認證(Cisco認證、Juniper認證、Huawei認證等)者優先考慮;
  5、熟悉Linux作業系統和虛擬化技術的優先。
  (JD)
*/

技術關鍵字

Linux、伺服器、環境部署

運維工程師 —— “Operations Engineer”,字面意思可理解為管理系統、伺服器的工程師。初級運維最常見的工作就是熟悉和維護伺服器——所以檢查機房、搬伺服器是90%的運維都會經歷的。

進階一點的,就要開始學習搭建伺服器、搭建網路、配置環境等工作了。絕大多數伺服器都使用Linux系統,所以熟練使用Linux是硬性要求;伺服器需要配置網路,所以對路由協議、網路協議等網路原理也要掌握;產品開發完成後,還需要運維部署環境,安裝相應的軟體;安裝完成後就可以上線嗎?不,有時你還需要部署一套測試環境……

在這個階段中,運維的大部分工作都是簡單和機械性的,對技術水平的要求很少,以至於薪資也較低。所以剛畢業的程式設計師往往有一個錯覺:運維崗不如開發崗。他們會感到「迷茫」,甚至「焦慮」

“感覺自己就是個網管……”
“每天的工作就是維護、重啟伺服器,看不到希望……”

但其實,運維是一場真正的馬拉松。同樣是第一個階段,你只跑了1%,開發的同學已經跑了20%,你的提升空間遠遠超過他們。

階段二(6-15k)

從刪庫到跑路

一張圖概括

or

招聘崗位和要求

/*
	【崗位職責】:
  1,負責伺服器的配置、維護、監控、調優,故障排除等;
  2,運維自動化及運維指令碼開發;
  3,大使用者量下高效能伺服器系統部署方案的制定及實施與監控;
  4,及時響應並處理線上故障。

  【任職要求】:
  1,計算機相關專業大學本科以上學歷,具有紮實的計算機基礎理論知識;
  2,熟悉mysql、mongodb、redis、mq、elk、nginx、tomcat的安裝部署及優化;
  3,具有良好的故障排查能力,良好的邏輯分析能力及技術敏感度;
  4,熟悉掌握使用shell、python指令碼語言,能熟練進行指令碼/工具開發,對自動化運維有較深入的理解或者經驗者優先;
  5,高度的責任感,較強的故障分析及排查能力,善於在工作中學習,能承受工作壓力。
  (10-20K —— 樂視)
*/

技術關鍵字

故障排查、優化、Shell、Python、監控

隨著自身技術的積累,運維的薪資在突飛猛漲。這時,你已經可以在公司或某專案裡獨當一面(du zi bei guo)。要達到這個階段的要求,你需要掌握這些技能:

1.排錯和調優
上線沒多久,服務就502了,還不被老闆罵死。儘管你有一肚子的委屈,我只是個運維,程式碼不是我寫的,為什麼要我來背這鍋?!委屈歸委屈,服務訪問不了了,就是運維的事。儘快定位問題,解決問題才是王道。怎麼來定位問題呢?最簡單直接的辦法就是看日誌,看系統日誌,看軟體相關的日誌,結合故障現象和經驗,快速的進行定位和恢復。然後就是總結經驗,吸取教訓,寫事故報告。OK,現在你知道,需要對系統環境需要進行一定的調優操作,不再做背鍋俠。

相關技術: top, vmstat, iftop, awk, sed, sar, iostat, strace, …

2.備份
之前的Gitlab刪庫事件的教訓猶在眼前,丟失了幾小時的資料,雖然大部分的備份策略都失效了,但還是挽救了幾小時前的一個備份,才沒有造成更大的資料丟失和公司損失。我們需要對裝置進行備份冗餘,需要對資料庫進行備份及離線備份,需要對網站靜態進行備份冗餘,需要對機房進行備用,能做到雙活,那是更好的啦。

相關技術: rsync, crontab, lvm快照, mysqldump, extrabackup, 完全備份, 差異備份, 增量備份, 離線異地備份, …

3.高可用叢集
沒有永垂不朽,我們不能保證硬體24小時線上,但需要保障服務24小時線上。

出現故障後,如果做好高可用和冗餘,故障自動切換,移除故障節點,那樣也就保障了服務的實時線上。在老闆和使用者不知情的情況下,悄麼的把故障處理好的,KPI算是保住了,獎金也許就會有的吧。

相關技術: F5, Nginx, LVS, HA-proxy, MHA, Zookeeper, 各種其他分散式叢集方案, …

4.監控和警報
時刻擔心網站掛掉,一年365天、每週7天、每天24小時,時刻保持精神高度緊張,就算你是神仙都會撐不住的。我們需要一個機器來監督其他的機器工作,我們需要解放我們自己。當有故障發生的時候,通過簡訊、微信、釘釘、郵件等等通知對應的運維工程師來處理,甚至是自動切換或摘除故障節點,然後我們離線對故障節點進行問題排查。

相關技術:Zabbix, Nagios, Cacti, Prometheus, open-falcon, Ganglia, sar, …

階段三(20-45k)

Linux運維真的為所欲為

一張圖概括

招聘崗位和要求

/*
	職位一
  【崗位職責】:
  1、制定和優化運維解決方案,包括但不限於柔性容災、智慧排程、彈性擴容與防攻擊;
  2、推動及開發高效的自動化運維、管理工具,提升運維工作效率;
  3、探索、研究新的運維技術方向。
  【崗位要求】:
  1、本科及以上學歷,3年以上的Linux系統使用和管理經驗;
  2、熟悉 Linux 作業系統原理、TCP/IP 以及常用RPC協議;
  3、熟悉指令碼語言Bash/Python等指令碼語言的一種並有相關開發經驗;
  4、熟悉Docker、Kubernetes等開源軟體;
  5、熟悉常見應用配置及優化,如Nginx/Haproxy/MySQL/DNS/Redis/MongoDB等;
  6、熟悉常用的監控系統,如 Zabbix、Nagios 和 Ganglia 等;
  7、熟悉systemtap、perf、oprofile 等分析除錯工具;很強的Troubleshooting能力、且能夠推動業務問題改善和解決;
  8、具有良好的的溝通、執行能力和強烈的責任心;
  9、耐心、細緻、學習能力強,較強的工作計劃;
  10、在開源社群活躍並有積極貢獻者優先,
  ( 22-40K —— 陌陌 )
  
 職位二
 【 工作職責 】
    負責京東內部資訊保安平臺的基礎運維工作,處理值班問題,確保系統服務穩定性;
    負責運維自動化/標準化方案設計,自動化工具及平臺研發,提升運維效率;
    負責生產、測試、灰度多套環境的部署和維護,配合研發、測試團隊進行應用部署;
    制定資訊保安叢集監控和報警方案,處理報警問題;
    定位與分析運維問題,給出解決方案。
    【 職位要求 】
    計算機相關專業,本科及以上學歷,至少2年以上的大規模系統運維經驗,2年以上運維開發經驗,有deveops開發經驗或有中大型網際網路公司運維自動化經驗者優先;
    具備openstack或docker叢集運維經驗;
    掌握shell/python/perl/php其中一種指令碼語言,有Python實際專案經驗,熟練掌握Django、Tornado等任一Web開發框架者優先;
    掌握網際網路常用的中介軟體維護、管理,例如redis、mongodb、kafka、memcached、dubbo等;
    掌握tomcat、nginx等常見應用的搭建、配置、優化;
    掌握zabbix、nagios、elk等系統的搭建、配置、優化;
    掌握一種大規模自動化運維工具(saltstack、ansible、puppet),有二次開發經驗優先;
    熟悉linux/uinx,windows作業系統基礎原理及常用操作;
    熟悉常見運維配置及優化,如Svn/git/Ansible/Nginx/Tomcat/salt等;
    熟悉TCP/IP、HTTP等協議,有良好的網路、資料傳輸、安全、計算機體系結構方面的知識;
    認同DevOps文化,重視自動化方式處理各種問題;
    具備良好的專案規劃、推進能力;
    具有良好的溝通協調能力、較強的團隊合作精神、優秀的執行能力;
    有很強的分析和解決問題的能力。
    ( 30 - 50K 京東 )
*/

技術關鍵詞

自動化、DevOps、雲服務、Docker、kubernetes、安全……

deveops、openstack、docker、叢集運維、shell/python/perl/php、Django、Tornado、redis、mongodb、kafka、memcached、dubbo、omcat、nginx、zabbix、nagios、elk、saltstack、ansible、puppet、linux/uinx系統基礎原理、Svn/git/Ansible/Nginx/Tomcat/salt、TCP/IP、HTTP……

看到這些技術名詞,相信你一定會明白,高階運維為何配得上這麼高的薪資。

雖然以上這些技術並不是全部需要掌握的,同一型別掌握一樣即可,但仍可以看出,這個階段的運維已經是集大成者 —— 在中型公司可以勝任CTO的位置,在大型公司可以擔任專案的技術負責人。想達到這個階段,你需要掌握這些技能:

1.安全和審計
不安全的網路環境和伺服器配置,無異於在網路世界裸奔,任何人都可以窺探你的隱私。你的應用是否做了SQL防注入?你的防火牆是否開啟?是否還在用root+密碼的方式登入伺服器?網站開啟了https麼?是否對系統操作進行審計?

相關技術: iptables, firewalld, waf, auditd, 各服務的正確配置, …

2.DevOps 與自動化
偷懶是社會進步的第一動力。聰明的我們怎麼會讓自己一直在重複枯燥的事情上浪費時間,裝系統、部署環境、發版本、批量操作,把這一切交給程式去實現吧,我們需要的是享受生活。

相關技術: shell, python, go, rundeck, ansible, saltstack, puppet, chef, cobbler, fabric, …

3.虛擬化和雲端計算
雲端計算革命的發起人是賣書的亞馬遜,這傢伙希望賣一切可以賣的東西,包括自己閒置的伺服器資源。現在國內的阿里雲和騰訊雲也發展得如日中天,他們幾乎提供了運維所需要的一切,甚至可以讓一個公司不再需要運維的崗位。你需要伺服器,只需要幾秒鐘,就可以建立一臺。你需要資料庫叢集,只需要滑鼠點選幾下,就可以開通。

相關技術:docker, Moby, kubernetes, Xen, CoreOS, Hyper-V, KVM, …

階段四(50k-???)

一張圖概括本階段:

招聘崗位和要求

/*
	80K—100K
	【崗位職責】
    1.作為公有云SRE軟體技術專家,負責自動化運維平臺的系統分析和架構設計,指導研發團隊實現設計,規劃未來平臺技術架構方向;
    2.負責全域性性和前瞻性的架構設計,以及關鍵技術細節的實現,解決業務發展遇到的架構問題,持續提升系統平臺穩定性;
    3.負責持續關注業務技術發展和最佳實踐,並結合華為雲運維產品業務特點推進新技術及實現方案的落地;
    【崗位要求】
    1.本科及以上學歷,6年以上大型業務應用系統的架構設計和落地的實際能力,熟悉分散式、快取、訊息等機制,能對分散式常用技術進行合理應用,解決實際架構問題;
    2.海量資料處理和架構能力及經驗,熟悉SOA並具有系統的架構設計經驗;
    3.精通Java/Python/Go/C/C++其中至少1種程式語言;
    4.精通作業系統,資料庫,IO、多執行緒程式設計原理、集合等基礎框架,對JVM原理有深入的瞭解;
    5.精通分散式事務處理框架原理和實現,精通多執行緒及高效能的應用的設計,編碼及效能調優經驗;
*/

技術關鍵詞

???

這個級別的大佬要麼是有極強的管理能力,要麼是對某技術有底層的深入研究,已無法歸納具體的技術要求,您:

愛學什麼學什麼吧……

/*
	總之……
    運維是個需要不斷學習的職位
    100K 還遠遠不是天花板
    (銀行、BAT、華為了解一下……)
    如果你確定了要努力的方向,那就學起來吧!
*/

運維學習地圖

行囊

新手在學習的時候,通常遇到的問題是沒有一整套學習計劃,不知道具體學哪些才會對工作有幫助,遇到問題也沒人解答,而這2點也是培訓機構的賣點。

這種情況,最好的方法是加個技術群,看看誰在裡面老回答問題,可以加好友具體問問,然後請他喝杯咖啡。

資料方面不要看很多,在豆瓣中搜尋相關書籍,評分高都看一本就行了,畢竟技術都是積累的,沒有一下子就學圓滿的。

有下面的知識,運維才能邁出第一步,不然就是比較殘缺的,無法形成大局觀。例如某些使用者訪問網站有問題,報錯505,你只會linux方面的,對網路不清楚,那如果問題出在運營商身上,或者伺服器之間的網路通訊上,就會抓瞎。

  • 計算機基礎知識(瞭解計算機哪幾個部分組成,如何裝系統,上下架等等)
  • 網路基礎知識(不用太深入,知道協議有哪些,什麼意思,路由器交換機工作原理)
  • 安全基礎知識(知道什麼叫ddos,知道基本防禦方法)
  • 測試基礎知識(知道效能測試和web測試用什麼工具,不然你優化完怎麼證明它效能提高了?)
  • 開發基礎知識(基本的構建,打包知道什麼意思,非同步非阻塞之類的)
  • linux基礎知識(這部分就是對linux的瞭解了,linux啟動順序,命令等等)

不過大公司會專門做某一部分,例如應用運維不需要關注測試和安全等方面,但建議都學學,觸類旁通有好處。

有這些基礎,進到公司就可以去完成基礎的建設工作了。比如會安排你搭建服務,整理資產報表,清理一些日誌,這些基本工作可以幫助你瞭解公司當前有哪些服務,各種服務之間是如何運作的,之後再慢慢參與到業務中,薪資一線城市可以達到6-10k左右。

大路

當進入公司一年以上後,就是衝刺階段,這個階段會學習到大量知識,因為剛工作,會明白很多書本上和模擬遇不到的東西,每天都會有大量進步。

會知道一個專案從建立到上線的過程,會發現公司有大量東西需要改善,例如部署服務還在使用手工部署,當一個新專案上線,需要花很多時間部署,你就可以嘗試用指令碼來自動部署。

公司需要監控,你可以參與選擇軟體,用zabbix還是cacti,或者不是你選擇,你也可以對原有監控項進行優化和完善。這些都是實際應用的,你會明白比原先學習的更多東西。

這塊是公司有需求或者用到什麼,就去學習什麼。不要看什麼運維必須掌握的命令和工具大全之類的文章,你都用不到學了有啥用。若你業務都掌握明白了,有空餘時間,可以搞搞docker之類熱門應用,在此之前,還是把精力花在手頭事情上。

同時要建立好的學習方法,不然在熟悉工作後,很容易懈怠,然後在群裡划水,學習激情會減退。我的方法是帶著目的學習,然後寫文章讓大家看,獲得激勵後就有動力繼續學習了。

這段衝刺期會維持3-5年,會讓人感覺每天都有進步,明白的東西越來越多。算是中級運維了,薪資一線城市可以達到10-20k左右。

岔道

再往前就會分出很多個岔道,開發、安全、DBA、測試、應用運維、基礎運維等等。

時間有限,需要從中挑選適合的。只有選定方向才能不迷路,也才能更快的到達目的地。到了這時,就已經邁步向高階運維了。需要選擇一個方向去努力,不然運維的東西太雜,很難面面俱到。

如何要做運維開發,就需要去學習python,html,各種框架,也可以學go。

要做DBA,就要專門研究資料庫,搞清楚資料庫的原理結構,每個詳細點。

每一門往後都有大量的東西要學習的,專精才能錢多,並且有成長。

不過當前都在往運維開發方向靠攏,未來的運維都要會一些開發才行。以前是shell,當今是python,需要的技術越來越深入,緊跟潮流才不會被落下。

高階運維,一般5-10年經驗,薪資15-35k左右

終點

技術是沒有終點的,當然可以有你自己的終點。當工作10年,技術已經很厲害了,就需要靠攏一些別的東西了。

可以根據你掌握的技術,去搞部落格,出售一些視訊,寫付費文章或者付費問答。甚至可以看準機會後,去做產品的。像寶塔皮膚,cdn,都是一大批運維或者開發看準機會後從技術轉型成創業者。

購買基金彩票和增值物品也可以,區塊鏈就算了,不得到國家承認和保護的東西,終究沒有大的發展的。有些股票或者基金還是很穩當,很不錯的,雖然進步慢,但是很穩定不會虧。

就像《教父》小說中說的,不要把雞蛋放在一個籠子裡,可以愛好技術,但也要搞副業,來應對來為可能造成的衝擊。

相關文章