淺談自動化運維

關於這篇文章,源自於很久之前學習產品時的一個認知。

大家都知道"自動化運維"其實是一個很廣泛的概念,其概念的不確定性在於"自動化",有爭議的地方在於"自動化"到什麼程度,才能稱之爲"自動化運維"。



運維工程師:

         運維工程師(Operations)在國內又稱爲運維開發工程師(Devops),在國外稱爲 SRE(Site Reliability Engineering)。負責維護並確保整個服務的高可用性,同時不斷優化系統架構、提升部署效率、優化資源利用率提高整體的ROI.

        運維工程師面對的最大挑戰是大規模集羣的管理問題,如何管理好幾十萬臺服務器上的服務,同時保障服務的高可用性,是運維工程師面臨的最大挑戰。

        在一些規模較大的公司(比如:Google、FaceBook、百度、阿里、騰訊等),運維工程師和系統管理員是有一定的區別:

        系統管理員:主要負責機房網絡、服務器等硬件基礎設施的運行和維護。

        運維工程師:主要負責管理並維護在運行在海量服務器上的軟件服務。



以上說明源自於百度百科詞條,從該詞條所描述的運維工程師的主要工作爲:  在成千上萬甚至幾十萬臺的服務器集羣中,保障服務器的高可用性。



自動化:

           自動化(Automation)是指機器設備、系統或過程(生產、管理過程)在沒有人或較少人的直接參與下,按照人的要求,經過自動檢測、信息處理、分析判斷、操縱控制,實現預期的目標的過程。自動化技術廣泛用於工業、農業、軍事、科學研究、交通運輸、商業、醫療、服務和家庭等方面。採用自動化技術不僅可以把人從繁重的體力勞動、部分腦力勞動以及惡劣、危險的工作環境中解放出來,而且能擴展人的器官功能,極大地提高勞動生產率,增強人類認識世界和改造世界的能力。因此,自動化是工業、農業、國防和科學技術現代化的重要條件和顯著標志。



以上說明源自於百度百科詞條,從該詞條所描述的自動化的概念爲: 自動化是指在沒有人或者較少人的直接參與下,完成一系列的工作要求。



那麼,將運維與自動化結合起來看的結果是什麼? 自動化運維: 即將運維工程師的工作在不需要或者只需要少量工程師的干預下,能夠完成工作要求,保障服務器的高可用性。



怎樣進行自動化運維?



關於運維的狀態(即演變過程):



一、人工化操作: 

       當互聯網剛剛興起的時候,企業的規模並不大。一個很明顯狀態是: 瀏覽互聯網的網民少、企業的規模不大、服務器數量稀少(1~20)、可用於(瀏覽/交互)的(網站/BBS)數量稀少,從而導致了企業中通常是一人身擔多職,可能同時擔任(軟件工程師/運維工程師/網絡管理員)等職位。由於用戶羣體的稀少,服務器數量的低量,大部分工作都通過人工來完成,也不會有太大的工作量耗費大量的人力來完成。



二、操作腳本化: 

        當互聯網漸漸興起,用戶羣體增大,企業所需要服務的用戶羣體也會隨之變多。此時由於服務器數量的增多(50~200),負責服務器維護的工作量便大量上升。由於工作量的成倍增長,這時候擔任維護服務器的管理員會發現大量的工作佔用了非常多的時間,甚至於會讓工作時間之外的私人時間也被佔用,每天需要處理大量重複性的問題。此時已經嚴重影響到了私人生活,於是爲了將自身從無止境的重複性勞動中解脫出來,開始爲一些重複性的工作制定一個標準的處理方案,然後將這種標準的處理方案分解成一步一步執行的步驟,然後使用技術手段(shell/python/php/perl/)將這些步驟一步一步的實現,然後集合到一起成爲可用於處理重複性工作的腳本。通過腳本可以便捷的處理之前需要花費大量時間來處理的重複性工作。這裏實現了 "腳本自動化",即某些問題不需要人工或者只需要少量人工干預即可完成。



三、腳本工具化: 

       此時,互聯網的發展開始走入正軌、用戶羣體開始膨脹。此時,企業需要服務的用戶羣體也會進一步增大。相對的,服務器數量又會增多(200~500),此時採用腳本來解決問題已經陷入了瓶頸,每天可能會有大量的服務器出現這樣那樣的問題。工程師開始疲於奔命,在一臺又一臺機器上運行腳本,修復系統業務環境。這時候放佛又回到以前,每天需要大量的時間來處理大量重複問題(ex: disk full),這些問題往往都有一個共同點: 出現次數相對頻繁,並且處理方法大同小異。這時候,將這些出現的問題也分門別類歸結成大同小異的處理腳本。當出現對應問題時,登陸到對應的服務器上執行處理對應的處理腳本即可解決問題,但是由於服務器數量的日益增多,同時出現問題的服務器的數量也會直線上升。此時如果繼續重複以前的做法,手動 登陸到每一臺服務器上去執行腳本,也會產生很大的工作量。此時,如果能在一臺服務器上控制所有的服務器,然後通過該服務器對相同症狀的服務器羣批量執行修復腳本,就能節約出大量的時間。這時候就出現各種能夠批量操作服務器的工具,如expect、sshpass、puppet、cchef、saltstack等,藉助這些工具來批量執行腳本來完成工作。此時,通過批量管理工具實現了只需要少量人工干預就能完成工作,即將腳本集成到工具中,實現腳本工具化,從而達到工具自動化。



四、工具平臺化: 

      什麼是平臺?

             平臺將平時複雜的事情簡單化,手動的工作自動化,無序的工作規範化,提高運維的質量和運維的效率,以此來提高整個企業的IT服務水平、服務質量,擁有極強的可維護性、可擴展性、可伸縮性等優秀特點。

      使用平臺能做什麼?

            平臺可以集成大量的工具、可以應對大部分的業務場景、可以讓沒有技術能力/專業知識的人員進行專業操作等。

      爲什麼要將工具平臺化? 

            平臺擁有可視化操作,將工具集成到平臺中,可以在可視化的平臺中通過說明來完成一系列需要專業知識支撐的複雜操作,可以通過描述讓沒有專業知識/專業知識不夠的人員進行標準的專業化操作、可以解放大量的人工操作、可以降低學習成本、可以提高運維效率、可以提升系統安全性/穩定性等。

     

五、平臺產品化

       什麼是產品?

            產品是指能夠提供給市場,被人們使用和消費,並能滿足人們某種需求的任何東西,包括有形的物品、無形的服務、組織、觀念或它們的組合。產品一般可以分爲五個層次,即核產品、基本產品、期望產品、附件產品、潛在產品。核心產品是指整體產品提供給購買者的直接利益和效用;基本產品即使核心產品的宏觀化;期望產品是指顧客在購買產品時,一般會期望得到的一組特性或條件;附件產品是指超過顧客期望的產品;潛在產品指產品或開發物在未來可能產生的改進和變革。

        爲什麼要將平臺產品化?

           產品是“一組將輸入轉化爲輸出的相互關聯或相互作用的活動”的結果,平臺是作爲技術的衍生,爲了滿足相對應的業務場景而創造出來。

           平臺的核心需求是將"複雜的事情簡單化,手動的工作自動化,無序的工作規範化."

           產品的核心要素是"給購買者帶來基本利益和效用",即 "滿足使用者的購買期望,豐富使用者的期望價值"

           爲什麼要將平臺產品化?:

                  平臺是一種解決方案,我們需要給這種解決方案附加上一系列的價值,或使用一系列的思想來修飾解決方法,使大部分人接受這種解決方案、認同我們的方法思想,從而完成平臺的自我價值的提升,即平臺產品化。

                      爲什麼要將平臺產品化? 

                              古人云: 達則兼濟天下,窮則獨善其身。 

                           產品是一種自我期望,產品期望可用於提升自我價值、可用於輸出企業文化、可用於提升企業價值。

                       產品是一種經濟期望,可用於換取利益、可用於創造價值、可用於增加附加價值

六、產品生態化   

      ?


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章