70
王者榮耀
運維=平台+數據
運維會比開發更加重要運維的發展日新月異,曾幾何時,運維僅僅是被認知為跑機房,裝係統,設計網絡,給開發擦屁股。但是現在運維變得極度重要,運維職責也更加細化,譬如稍大點的公司就將運維劃分為基礎運維,網絡運維,DBA, 應用運維,架構師。其實我個人認為係統架構師應該都安排在運維裏,開發團隊應該率屬於運維團隊才好。
進入雲時代後,中等層次的運維慢慢會被淘汰,底層次的運維會越來越少,高水平的運維需求量則日益增長。為什麼這麼說呢?雲時代背景下,低層次的運維主要按章循幹活即可,而高層次的運維則需考慮係統架構設計,以及構建自動化的係統。這其實是反應對運維的要求會越來越高,不但要掌控產品的穩定性,做好服務保障的最後一公裏,還要具有係統設計的能力。
運維現有發展方向的問題
運維也越來越朝著平台化,自動化,自助化方向發展。這種發展方式雖然可以解決問題,但是會導致碎片化以及難以標準化,不可複製,對生態也是不利的。
所謂碎片化指的是針對性的開發工具套件解決問題,比如為了解決配置問題,開發了個配置係統,比如為了部署,開發了部署係統,為了管理應用,針對不同類型的應用開發管理係統。所有這些係統都是為了解決特定一類問題而開發的,係統孤島,很難讓他們產生關聯。
導致這種現象的原因在於,開發人的能力本身不足,缺乏全局觀,或者各個係統本身的屬性特質就導致他們難以關聯。每個係統就像一個碎片,所以我們說這事碎片化。
標準化指的是,我開發的配置係統很可能跑到另外一家公司,就不能用了,因為我隻是針對我的環境開發好配置係統就行,這裏就帶來的另外一個問題就是不可複製,也就是我開發的係統沒辦法很容易移植到別的地方去。
對生態不利,則是指,因為無法標準化,難以複製,每家公司各自開發自己的,無法形成社區,大家致力於統一的運維工具,則必然影響運維生態的發展。
這些問題總結起來,其實就是缺乏一個具有一定規範的容器,將所有的需求框起來東西。
之前我寫過一篇文章,談及如何用大數據思維做運維,當然這篇文章有他自己的局限性,隻是談及了運維監控,灌輸一種 data based 的理念。
前麵我們提及了運維發展現狀,以及現有的發展模式帶來的問題,解決的方式就是 Distributed OS + Data Based::
- 使用 Distributed OS 抽象出應用的部署/管理/生命周期監控/自動化體係
- 使用 Data-Based 思想inspect 應用內部狀態,當然也包括Distributed OS,做好監控,報警,容量規劃等。
隨著分布式相關應用慢慢成熟,尤其是大數據的崛起,對服務器有了更多的需求,以資源為粒度的管理需求也變得更加迫切,於是有了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之上的應用可以是非常複雜的,應用的關聯也是非常複雜的,微服務的興起導致鏈路非常長,所以我們有了全鏈路追蹤的需求。一切服務都是為了幫助數據進行流轉和變換,服務的狀態也都反應在數據流上,這種瞬態和終態的量是非常大的,所以我們需要借助大數據的思維去做處理。
到這裏就可以參考大數據思維做運維灌輸的概念了。
所以未來運維可以完全依托一個固定的分布式操作係統,在其上開發各種運維工具,利用大數據相關的理念和工具,監控,追蹤,分析服務的狀態,解決現有的運維工具碎片化,難以複製,難於貢獻生態的問題。
最後更新:2017-04-01 17:13:51