運維會比開發更加重要
運維的發展日新月異,曾幾何時,運維僅僅是被認知為跑機房,裝系統,設計網絡,給開發擦屁股。但是現在運維變得極度重要,運維職責也更加細化,譬如稍大點的公司就將運維劃分為基礎運維,網絡運維,DBA, 應用運維,架構師。其實我個人認為系統架構師應該都安排在運維里,開發團隊應該率屬于運維團隊才好。
進入云時代后,中等層次的運維慢慢會被淘汰,底層次的運維會越來越少,高水平的運維需求量則日益增長。為什么這么說呢?云時代背景下,低層次的運維主要按章循干活即可,而高層次的運維則需考慮系統架構設計,以及構建自動化的系統。這其實是反應對運維的要求會越來越高,不但要掌控產品的穩定性,做好服務保障的最后一公里,還要具有系統設計的能力。
運維現有發展方向的問題
運維也越來越朝著平臺化,自動化,自助化方向發展。這種發展方式雖然可以解決問題,但是會導致碎片化以及難以標準化,不可復制,對生態也是不利的。
所謂碎片化指的是針對性的開發工具套件解決問題,比如為了解決配置問題,開發了個配置系統,比如為了部署,開發了部署系統,為了管理應用,針對不同類型的應用開發管理系統。所有這些系統都是為了解決特定一類問題而開發的,系統孤島,很難讓他們產生關聯。
導致這種現象的原因在于,開發人的能力本身不足,缺乏全局觀,或者各個系統本身的屬性特質就導致他們難以關聯。每個系統就像一個碎片,所以我們說這事碎片化。
標準化指的是,我開發的配置系統很可能跑到另外一家公司,就不能用了,因為我只是針對我的環境開發好配置系統就行,這里就帶來的另外一個問題就是不可復制,也就是我開發的系統沒辦法很容易移植到別的地方去。
對生態不利,則是指,因為無法標準化,難以復制,每家公司各自開發自己的,無法形成社區,大家致力于統一的運維工具,則必然影響運維生態的發展。
這些問題總結起來,其實就是缺乏一個具有一定規范的容器,將所有的需求框起來東西。
運維發展新方向
之前我寫過一篇文章,談及如何用大數據思維做運維,當然這篇文章有他自己的局限性,只是談及了運維監控,灌輸一種 data based 的理念。
前面我們提及了運維發展現狀,以及現有的發展模式帶來的問題,解決的方式就是 Distributed OS + Data Based::
- 使用 Distributed OS 抽象出應用的部署/管理/生命周期監控/自動化體系
- 使用 Data-Based 思想inspect 應用內部狀態,當然也包括Distributed OS,做好監控,報警,容量規劃等。
如果有這么一個框,能把所有的運維需求給支撐起來,規范起來,這個框就是分布式操作系統(Distributed OS )。想想我們的單機系統,所謂應用的安裝,運行,卸載,交互都是那么簡單和隨意。然而到分布式領域后,單機OS 退化后,導致缺乏這么一個統一底層系統。運維在這個層面自己也想了很多辦法,通過puppet,通過shell,通過各種開發出來的系統。但這是運維缺乏規范和混論的時期,嚴重依賴于運維團隊的自身的能力。
隨著分布式相關應用慢慢成熟,尤其是大數據的崛起,對服務器有了更多的需求,以資源為粒度的管理需求也變得更加迫切,于是有了Google Borg,開源的則有Mesos,Yarn等。Google Borg 是個典型的。我們所有的運維需求都應該基于Borg去做。開發的服務交給Borg,后續的服務生命周期(擴容、縮容、調度)都由Borg統一接管,服務被Borg部署到哪個IDC、哪個服務器,研發人員不用關心。這個是系統層面的。當然類似Borg的 Mesos,Yarn等,都是追求一個動態調度的過程,我們也可以完全利用Borg,指定將應用安裝在哪些單元(服務器群組)上,從而能夠接管所有的服務。
這樣,所謂前面我們提及的配置系統,部署系統,服務器監控都是在Borg提供的基礎服務。就好比單機系統,你通過它安裝,運行,關閉,卸載應用,你可以看服務器的資源使用情況。Borg 也是完全一樣的。
也有人會說,很多應用的安裝部署是很復雜的,而且如果使用了Borg其實就使得應用必須去適配Borg才能被管理。經過我們的實際實踐,大部分應用都不需要對應用進行更改,也不需要對Borg進行更改,就可以部署和管理起來。復雜的比如Hadoop體系的安裝,則需要Borg進行一定程度的支持,我們抽象出了一套應用的部署方案,只要簡單的寫一些描述文件,Borg拿到Hadoop的發型包,就知道如何安裝和管理他們了。如果你需要對Hadoop做更細致的增強或者管理,你可以開發一個第三方應用,然后通過Borg安裝去管理。Borg提供了交互的API,你可以通過這些API去管理Hadoop如果生命周期,而無需知道Hadoop安裝在哪。
現在很流行的容器技術,也被廣泛的被Mesos/Borg調度,對Borg來說這是以資源為粒度的應用,我們前面提及的,則是以服務器為粒度的應用。
前面講的是基礎平臺層面的,我們其實更多的是要對應用進行更細致的觀察。在Borg之上的應用可以是非常復雜的,應用的關聯也是非常復雜的,微服務的興起導致鏈路非常長,所以我們有了全鏈路追蹤的需求。一切服務都是為了幫助數據進行流轉和變換,服務的狀態也都反應在數據流上,這種瞬態和終態的量是非常大的,所以我們需要借助大數據的思維去做處理。
到這里就可以參考大數據思維做運維灌輸的概念了。
所以未來運維可以完全依托一個固定的分布式操作系統,在其上開發各種運維工具,利用大數據相關的理念和工具,監控,追蹤,分析服務的狀態,解決現有的運維工具碎片化,難以復制,難于貢獻生態的問題。