如何優雅的打造DevOps團隊

最近越來越多的IT公司發現要在人才市場上找到一個合格的運維人員實在是太難,於是紛紛跑去互聯網各大論壇求助:「如何月薪3000招聘到一個7*24小時待命的高效運維,要求至少懂市面上所有的腳本語言、精通Linux並製作過發行版、精通計算機網路、主流存儲系統的調優以及雲服務購買搞價能力?「。在苦苦求助無果之後,偶然路過地攤品味軟體管理奧義的時候發現一了一個新的概念---DevOps。這是一個可以讓那般閑置開發人員更晚下班的一個新生事物,不僅解決了運維人員的短缺,還能在不加工資的基礎上延長開發時間,真是21世紀最偉大的發明。於是乎紛紛採用,並創造了軟體開發史上的奇蹟。本文就是讓你一探DevOps的真諦,並且幫助你打造一個DevOps團隊,跟上時代的潮流。

首先讓我們了解一下什麼是DevOps,維基上給的解釋是「DevOps(Development和Operations的組合詞)是一種重視「軟體開發人員(Dev)」和「IT運維技術人員(Ops)」之間溝通合作的文化、運動或慣例「。仔細看看這句話,晦澀難懂,我來粗淺的翻譯一下大概就是一個又干開發又干運維。當我們了解了這個基礎概念以後就可以開始準備實踐了,但是任何實踐都有一個前提,請牢記以下這段話,它將貫穿你DevOps實踐的每一個角落。

無論是開發還是運維,所有的學習過程都是不需要成本的,而且任何人一學就會。

看到這裡是不是突然覺得醍醐灌頂,感覺很簡單?沒錯,事實就是這麼簡單,所以你眼前這個團隊現在已經是DevOps團隊了,是不是很酷?所以第一件事一定要宣布這是一個DevOps團隊,讓全公司以及投資人都要知道。所以打造DevOps團隊的第一件事,就是把你們郵件組的名字給改了。

把郵件組加上DevOps字樣

再此之前你們郵件組的名字可能是 eshop_dev@somesbco.com,etrading_dev@somesbco.com, 這顯然無法突出你們是一個高效DevOps團隊,所以最重要的一定要先改郵件組的名字。如果將以上名稱改為 eshopdevops@somesbco.com 和etrading_devops@somesbco.com 就會給人一種你們很diao的感覺。

在公司內部的論壇或者Blog宣傳你們完成了DevOps團隊的建設

當團隊建設完成後,需要給公司的其他部門樹立一個榜樣,使之紛紛效仿從而達到共同進步的目的。Blog內容首先要把團隊所有成員高亮顯示一下,之後重點標註領導,再之後說某某團隊完成了DevOps團隊的建設,引入了現代最先進的軟體開發方法,提升了開發人員技能並為企業有效節約了用人成本。最後叫團隊所有成員點贊,並在下方互吹評論,從而達到宣傳以及溝通交流的目的。

信奉敏捷開發,並打造成一種信仰

身為一個成功的DevOps團隊怎能少了敏捷開發,而且敏捷開發這種更快的迭代周期、更注重的交流方式,更快的產品交付已經基本成了現代軟體開發的標杆。然而DevOps團隊區別於傳統的敏捷團隊往往需要敏捷中的敏捷,比敏捷更敏捷,我們稱之為Cult Agile。

這種敏捷比起一般的敏捷開發更注重團隊之間人員的溝通,所以一天3到5個standup meeting是可以方便團隊人員隨時交流進度,互相學習的。因為在DevOps模式下開發人員也會是技術支持人員以及運維人員,所以會議一定要保證每個人都到場,這樣方便於團隊成員在不同領域可以相互學習。

當然,更短的迭代周期以及發布周期也是必要的。俗話說的好,一行代碼只有到生產環境上才有它的價值。因此我們需要更注重於開發到生產的發布,所以一切都需要自動化,CI/CD已經是這個團隊的必須品,小到一個Tab改為空格,大到方法之間加了幾個空行,這些東西都要第一時間發布到生產環境,為我們的團隊創造價值。

監控一切,並畫成美麗的圖表

當我們的微服務上線運行後,如何能體現我們團隊優秀的運維水平呢?答案就是監控,當然有監控還是不夠的,必須要「可視化」!這幾個字說起來看似逗逼實則傻逼,但這往往就是內行人員與外行人員的分水嶺。對於系統的cpu個數,磁碟使用天數,cg次數以及日誌中「NullPointException「,「IndexOutOfBoundsException「,」F**kWhatAreYouDoingException「出現的次數進行嚴格統計。繪製成色彩斑斕的柱狀圖,餅狀圖以及不知道什麼隨便挑一個圖。讓這些DashBoard儘可能多的出現在公司的監控電視上,茶水間以及衛生間的小屏幕上。這將有助於DevOps團隊實時跟蹤系統信息,最快解決那些看了圖也不知道的什麼問題。

收集數據,智能分析

當然,作為一個21世紀的DevOps夢幻團隊,怎麼沒有人工智慧在裡面。這個時候團隊就要藉助ELK以及splunk之類的工具對我們的程序數據以及監控數據做一個智能分析。當我們看到Jvm虛擬機堆內存不斷增長且無法被gc回收的時候,這時候就需要藉助機器學習演算法。在堆內存增長率以及公司可掏錢購買的最大內存之間求出下一次重啟服務可能出現的時間點,做到智能運維,智能預測。

用可量化的指標衡量團隊績效

當我們打造好了這樣一個先進的DevOps團隊,我們就只需要完成軟體開發中最難的一部分---衡量團隊的績效。曾經有一些公司會用代碼行數,測試用例個數,發布的版本數去衡量一個團隊的績效。這對於先進的DevOps團隊未免有失公正,DevOps團隊的工作成果更像是一個時間序列函數,因此我們最好借鑒金融學上的一些術語來衡量DevOps團隊的績效。

我們知道很多各種基金啊各種包總喜歡拿收益率說事兒,當收益率不能說事兒的時候就開始用一個年化收益率說事兒,比如7日年化啊之類的。這一點很科學嘛,各種performance一目了然,所以DevOps團隊也需要採用這種先進的計量方式,比如7人年化release數,或者release/issue ratio,最好拿一直傳統犧牲隊伍做benchmark。並將結果繪製成美麗的圖表用郵件抄送給全公司人員,讓大家感受到實實在在的進步以及先進。

好了,說了這麼多,我想你已經知道如何優雅的打造一個DevOps團隊了,祝你開心~

推薦閱讀:

用43p140實現最簡單的hacmp環境(二)
MySQL 之多實例編譯安裝
網路喚醒全攻略(Wake On LAN)
高德地圖基於阿里雲MaxCompute的最佳實踐

TAG:DevOps | 軟體開發 | 運維 |