在創投媒體工作,最大的感觸就是科技界的名詞創造力驚為天人。各路大神兢兢業業炒概念,創造出了一大堆“一解釋就懂,一問就不知,一討論就打架”的專業名詞,讓像筆者這樣的“相關行業工作者”體會了一把“霧里看花”。2016年,容器技術打得火熱,不少討論中出現了“DevOps”這一概念。好像很火,雖然傻傻分不清,但又不明覺厲。DevOps到底是個什么鬼?用一篇文章的時間好好聊聊。
從一個小故事開始。
二狗在一家互聯網公司做程序猿,每天抓破頭皮寫代碼,兢兢業業希望做出一款讓友商望塵莫及嘆為觀止的新產品。但二狗有個困擾,每次從完成開發到實現應用都會有幾周的時間差,用來交給運維部門進行測試等相關工作。這讓二狗很抓狂,因為友商很可能在這幾周的時間空檔里開發出更好的產品和功能,而且二狗在不斷地修改舊版本和開發新功能的過程中總覺得身體被掏空。二狗覺得這都是運維部門那幫傻叉的錯,明明在自己機子上跑得好好的軟件,到了運維手上就掛掉,還總是提零碎的需求,改版改到天荒地老。
而翠花就是二狗眼里那些傻叉中的一員。翠花要對維護產品運營,監控運行環境負責。但是隨著公司做大做強,越來越多的新產品被開發出來,被運用到越來越多的環境之中。翠花需要維護的服務器數量與日俱增,這給翠花帶來不少挑戰。傳統系統部署,安裝操作系統、裝應用、升級補丁、網絡配置……這些事情都是翠花的工作內容,一不留神就容易掉鏈子。對翠花來說,過去使用的運維工具已經跟不上節奏,這同時影響了新代碼運用到產品環境里的速率。
于是過得都不是太好的兩個人一見面就掐,一言不合就撕逼。剖析其中原因,問題在于他們倆人在兩個不同層面思考自己的工作。二狗活在開發環境,翠花生于生產環境,二狗的代碼在開發環境中看起來或許盡善盡美,但在現實狀況中應用程序的使用環境卻千差萬別,基礎環境的多元化牽扯到眾多組件、服務之間的配置、互聯、依賴。結果便是二狗只關心要寫多少代碼,產品不斷升級;翠花卻要疲于應對產品不斷更迭,適用更多環境。
我們能做些什么,讓二狗和翠花和平共處,停止互相傷害?
首先,必須要承認,不管撕得多厲害,他們的終極目標都是讓用戶開心,既然革命目標是一致的,一定有辦法可以讓彼此更好地合作,更加能換位思考,打破思想隔膜,最后共同承擔責任。這需要二狗和翠花冰釋前嫌,改變固有觀念,重新思考開發(Dev)和運營(Ops)應該怎樣工作。
所以,什么是DevOps?
字如其意,DevOps就是讓Dev和Ops放到同一張桌子上考慮。但它并不是簡單地將開發部門和運維部門合并,更是企業文化、組織結構的變革,是通過自動化的基礎設施、合理的流程規范以及智能的自動運行系統測試來加強開發部門和運維部門之間的協作和溝通。
DevOps是一種開發、測試、運營、維護部門之間溝通、協作與整合的軟件過程、方法論思想與系統。它并不能等同于一種工具或者軟件,其中涉及到更上層的方法和理念。這一理念指向“高度的自動化”,企圖用一種開發和運維間高效協作的模式,制定一條從開發到運行自動運行的流水線,最大程度地擺脫人工的束縛,達到企業生產力的升級。
簡而言之,如果二狗和翠花各自所在團隊想要更加地DevOps導向,他們需要更加著眼于“自動化”。
DevOps團隊希望能將所有環節自動化,擺脫人工束縛。市面上已經出現相關的產品,比如Daocloud,時速云、靈雀云、caicloud等創業品牌,以及阿里云(容器服務)、網易推出的“蜂巢”等大公司背景產品。在這里,以網易蜂巢為例,看一下其DevOps實踐如何從云的角度出發,幫助企業實現自動化:
·持續集成與開發:實現從開發測試、上線運維的一體化自動流程。而測試是DevOps中不可或缺的一環,在大規模應用系統中,必須有效地、智能地快速自動運行系統測試。
·智能預警:可以幫助用戶監控集群運行狀態,比如說,服務上線后可以通過設置一個告警通知,全天候監測服務的運轉情況,不再需要人工監控。
·智能故障定位:在智能預警發現問題之后,可以進行數據下鉆,快速定位到問題具體發生的位置,及時通知用戶以快速解決問題。 此外,網易蜂巢提供服務性能總覽、錯誤視圖、錯誤詳情拓撲圖等幫助開發者分析錯誤的詳情和具體原因。
由此可見,如果能采用DevOps,公司就能夠做更多的創新,縮短開發周期,將產品更加快速地推向市場;同時創造差別化的公司業務和價值,提高組織效率,而不是不停地修補舊問題。通過DevOps,企業擁有了持續開發生產優秀產品的能力,開發者開心,消費者滿意。
那么,既然DevOps優勢多多,前途大好,具體要怎樣才能實現DevOps?
首先,這涉及到觀念問題。DevOps的最終目的是加強開發部門和運維部門之間的協作和溝通,如何把現在的文化朝DevOps思維模式扭轉,并且在開發和運維之間找到共識?這需要強大的領導力來實現變革。
其次,團隊需要選擇最合適的工具。雖然DevOps是一個概念,但工具是實現DevOps的重要組成部分。近兩年來如日中天的Docker就是實現DevOps最合適的工具之一。比如上文提到的網易蜂巢、Daocloud,時速云、靈雀云等,均是基于Docker技術的容器云服務產品。作為一個分布式應用構建、遷移和運行的開放平臺,Docker允許開發或運維人員將應用和運行應用所依賴的文件打包到一個標準化的單元(容器)中運行,這保證軟件可以在任何環境下同樣地運行,急劇簡化了運維工作。
最后,好工具得有能人掌控才能發揮其威力。即使找到了好用的工具,也需要有熟悉這個工具鏈,擁有相應技能的IT人員來提供技術支持,才能完成實現自動化的使命。
總體而言,DevOps作為一種理念,推動開發和運維之間的合作,有效回應了當前的商業需求。它的實現是新觀念、新工具、新技能的三者疊加。雖然還存在各種問題,但DevOps是大勢所趨,作為在互聯網領域占坑打拼的企業、開發運維人員,對這樣的變革不能視而不見。