運維工程師的主要工作和前景發展
運維,這裡指網際網路運維,通常屬於技術部門,與研發、測試、系統管理同為網際網路產品技術支撐的4大部門,這個劃分在國內和國外以及大小公司間都會多少有一些不同。
運維工程師,集合網路、系統、資料庫、開發、安全工作於一身的“複合性人才”。負責維護並確保整個服務的高可用性,同時不斷優化系統架構、提升部署效率、優化資源利用率提高整體的ROI.
一、 職責
無論做什麼運維,運維工程師最基本的職責都是負責服務的穩定性,確保服務可7*24H不間斷地為使用者提供服務。在此之上運維工程師的主要工作職責如下:
- 質量:保障並不斷提升服務的可用性,確保使用者資料安全,提升使用者體驗。
- 效率:用自動化的工具/平臺提升軟體在研發生命週期中的工程效率。
- 成本:通過技術手段優化服務架構、效能調優;通過資源優化組合降低成本、提升ROI。
網路運維工程師的工作目標就是確保網路系統的高效、穩定執行,具體內容如下:
1.時刻監控執行狀況,分析網路執行資料,形成網路健康檢測報告。
2.分析網路執行日誌,掌握網路執行規律,發現潛在的網路執行風險。
3.基於公司業務發展,除錯網路裝置效能,滿足公司業務穩定的需求。
4.基於業務提升需要,擴大網路架構規模,或重設公司網路的架構。
5.基於公司專案需求,構思編寫技術方案,並且進行技術方案的實施。
linux運維工程師的主要工作是:
1.每天登陸系統檢視系統執行的負荷如何,有無報錯日誌或報警日誌。
2.作業系統故障排除
依據作業系統故障日誌分析出現該報警或報錯的原因,從而解決問題,保證作業系統的高可用性。
3.伺服器狀態確認
伺服器上除了跑著作業系統,必然會安裝一些應用程式或資料庫,運維工程師每天需要檢視linux系統上執行著的應用程式或資料庫狀態是否正常。
4.備份
運維工程師的看家本事,資料庫備份和恢復,一般來說只要給資料庫制定了備份策略它會自己備份,你只需要監控備份任務是否執行了就可以。
5.伺服器調優
這個要求就比較高了,linux隨著使用時間的增長,狀態會有所下降,運維工程師有能力的可以對作業系統及資料庫進行效能調優,保證系統處於一個最佳狀態。
一般來說,運維工程師的工作以監控為主,出現問題的時候才會進行處理,平時來說還是很輕鬆的。
二、 工作內容
在軟體產品的整個生命週期中運維工程師都需要適時地參與併發揮不同得作用,因此運維工程師的工作內容和方向非常多:
事件管理:目標是在服務出現異常時儘可能快速的恢復服務,從而保障服務的可用性;同時深入分析故障產生的原因,推動並修復服務存在的問題,同時設計並開發相關的預案以確保服務出現故障時可以高效的止損。在這方面主要工作內容有:
問題發現:設計並開發高效的監控平臺和告警平臺,使用機器學習、大資料分析等方法對系統中的大量監控資料進行彙總分析,以期在系統出現異常的時候可以快速的發現問題和判斷故障的影響。
問題處理:設計並開發高效的問題處理平臺和工具,在系統出現異常的時候可以快速/自動決策並觸發相關止損預案,快速恢復服務。
問題跟蹤:通過分析問題發生時系統的各種表現(日誌、變更、監控)確定問題發生的根本原因,制定並開發預案工具。
變更管理:以可控的方式,儘可能高效的完成產品功能的迭代的變更工作。在這方面運主要工作內容有:
配置管理:通過配置管理平臺(自研、開源)管理服務涉及到的多個模組、多個版本的關係以及配置的準確性。
釋出管理:通過構建自動化的平臺確保每一次版本變更可以安全可控地釋出到生產環境。
容量管理:在服務執行維護階段,為了確保服務架構部署的合理性同時掌握服務整體的冗餘,需要不斷評估系統的承載能力,並不斷優化之。在這方面主要工作內容有:
容量評估:通過技術手段模擬實際的使用者請求,測試整個系統所能承擔的最大吞吐;通過建立容量評估模型分析壓力測試過程中的資料以評估整個服務的容量。
容量優化:基於容量評估資料,判斷系統的瓶頸並提供容量優化的解決方案。比如通過調整系統引數、優化服務部署架構等方法來高效的提升系統容量。
架構優化:為了支援產品的不斷迭代,需要不斷的進行架構優化調整。以確保整個產品能夠在功能不斷豐富和複雜的條件下,同時保持高可用性。
三、 能力要求
運維以技術為基礎,通過技術保障產品提供更高質量的服務。運維工作的職責及在業務中的位置決定了運維工程師需要具備更加廣博的知識和深入的技術能力:
- 紮實的計算機基礎知識,包括計算機系統架構,作業系統,網路技術等;
- 通用應用方面需要了解作業系統、網路、安全,儲存,CDN,DB等,知道其相關原理;
- 程式設計能力,小到運維工具的開發大到大型運維繫統/平臺的開發都需要有良好的程式設計能力;
- 資料分析能力:能夠整理、分析系統執行的各項資料,從中發現問題及找到解決方向;
- 豐富的系統知識,包括系統工具、典型系統架構、常見的平臺選型等;
- 綜合利用工具和平臺的能力;
運維工作的複雜性對這個崗位的運維工程師們的軟素質也提出了要求:
- 時間管理能力,特別是碎片化時間的處理能力;
- 沉穩的心態,面對緊急情況時需要處變不驚;
- 溝通能力、團隊協作,運維工作跨部門、跨工種工作很多,需善於溝通、並且團隊協作能力要強;
- 工作中需膽大心細:膽大才能創新、不走尋常路,特別對於運維這種新的工種,更需創新才能促進發展;心細,運維工程師是最高線上許可權者,需要謹慎心細;
基礎技能:
加分技能:
- 熟悉開源的監控平臺工具,比如:Ganglia、Nagios等
- 熟練掌握Shell指令碼熟悉Awk、Sed等基礎工具
- 熟悉分散式計算或者儲存系統,比如Hadoop/Hbase/Storm等
- 熟悉機器學習原理能付諸實踐者更佳
- 熟悉TCP/IP、HTTP等網路協議,精通socket網路程式設計
四、 運維工程師使用的運維平臺和工具
- Web伺服器:apache、tomcat、nginx、lighttpd
- 監控:nagios、ganglia、cacti、zabbix
- 自動部署:ansible、sshpt、salt
- 配置管理:puppet、cfengine
- 負載均衡:lvs、haproxy、nginx
- 傳輸工具:scribe、flume
- 備份工具:rsync、wget
- 資料庫:mysql、oracle、sqlserver
- 分散式平臺:hdfs、mapreduce、spark、storm、hive
- 分散式資料庫:hbase、cassandra、redis、MongoDB
- 容器:lxc、docker
- 虛擬化:openstack、xen、kvm
- 安全:kerberos、selinux、acl、iptables
- 問題追查:netstat、top、tcpdump、last
廣義上所有開源的軟體都是運維工程師會使用到的平臺和工具,同時也包括運維各個技術方向上自行研發的各類平臺。
五、 運維工程師的待遇
關於運維工程師的工資待遇問題,根據曾經做過或現在在做運維工程師工作的人員的說法看:運維的工資上不封頂,工資是與自身的能力和實力相關,並沒有具體的數額,同時也和地區有關,還有經驗不一樣,待遇也就不一樣了。
根據相關資料顯示,運維工程師的工資大多是在4500到8000之間,如果你的能力很強又有很多工作經驗的話,待遇也能夠達到10000到15000之間。
下面以上海地區的運維工程師的招聘資訊為例,看看他們的工資待遇吧。
六、 職業發展
運維人員的要求特別嚴苛,因為運維人員針對不同的問題,需要不斷的補充擴大自己的知識和研究範疇。
在初級階段,優秀運維人員會體現出格外出眾的主動性和責任心,面對陌生的業務會主動學習和拓展自己對業務對認識和相應的知識範疇,以能夠足夠的勝任業務的獨立維護。
在逐步的發展階段中,注重總結反省的工程師會逐漸成長為高階運維人員,通常他們會有比較體系化的服務運維理解。也有一部分工程師由於出色的專案管理規劃能力,逐漸成為專案經理。
再進一步的發展,高階的運維人員對於產品的理解將非常的透徹,因而在這種情況下,高階運維人員甚至可以成為產品的產品經理、產品研發的諮詢顧問,在產品功能的設計與開發中起到至關重要的角色。
七、 前景
- 從行業角度來看,隨著中國網際網路的高速發展、網站規模越來越來大、架構越來越複雜,對專職網站運維工程師、網站架構師的要求會越來越急迫,特別是對有經驗的優秀運維人才需求量大,而且是越老越值錢。
- 從個人角度,運維工程師技術含量及要求會越來越高,同時也是對公司應用、架構最瞭解最熟悉的人、越來越得到重視。
- 網際網路運維是一個融合多學科(網路、系統、開發、安全、應用架構、儲存等)的綜合性技術崗位,給運維工程師提供了一個很好的個人能力與技術的發展空間。
- 運維工作的相關經驗將會變得非常重要,而且也將成為個人的核心競爭力,優秀的運維工程師具備很好的各層面問題的解決能力及方案提供、全域性思考的能力等。
- 由於運維崗位所接觸的知識面非常廣闊,更容易培養或發揮出個人某些方面的特長或愛好,如核心、網路、開發、資料庫等方面,可以做得非常深入精通、成為這方面的專家。
- 當前國內外對運維人才的需求非常迫切,運維工程師的薪資也水漲船高,與研發、測試等技術部門持平,甚至超出。
運維所涉及的知識面、專業點非常廣,對從業人員素質也要求非常高,運維工作在大型網際網路公司也越來越重要。隨著網際網路的高速發展、網站規模越來越大、架構越來越複雜,對網站運維工程師的需求也會越來越急迫,特別是對有經驗的運維人才需求量大,而且是越老越值錢。