百度高級架構師喬梁:DevOps=Culture+Tools
原創傳統的軟件交付過程是通過架構、業務、技術運維、保障等團隊之間一步一步把交付物交給下一個環節,最后產生交付軟件的價值。這種交付方式的一個明顯缺點是各角色僅關注于自己本身的工作,在中間的流通環節產生了很多不必要的浪費,如時間成本和溝通成本等;同時,這種階段性的交付通常時間較長,一旦產生問題造成的影響也較大。
敏捷開發是為解決這一問題而提出的解決方案。在這種方法里,業務人員也深入到開發當中,這樣需求、開發、測試前面三個環節被打通了,但是,到部署的時候仍會出現問題:因為項目是直到最后才交給運維人員部署到線上,部署時經常出現比如IP問題、機器資源問題、與線上已有程序的沖突等,要花費大量時間解決。出現這種結果是因為,雖然整個團隊共同的目標是項目的最終實施,但是作為兩個不同角色的部門,開發團隊和運維團隊對具體的目標仍有不同的追求。
那么如何解決開發團隊和運維團隊之間的這種隔閡?DevOps應運而生。
百度DevOps團隊:從三個月到三周
百度項目管理部高級架構師喬梁
10月22日,在 “QCon杭州2011全球企業開發者大會”上,來自百度項目管理部的高級架構師喬梁與大家分享了百度的一個交付團隊是如何利用DevOps,在半年的時間內讓交付周期從每三個月一次提升到每三周一次的。
“我改變了他們的工作方式”,喬梁說,新的制度的確影響到了團隊的日常工作,在開始的三個月,團隊的開發速度降了下來。不過這種代價是值得的:三個月之后,團隊的交付周期就變成了三周一次,并在接下來的三個月里一直保持這種頻率。
實際上,喬梁說,三周交付并不是該團隊的極限,還可以優化到兩周或更少,不過,在一種工作方式產生變革并取得成功的結果后,喬梁認為,應該把這種結果持續一段時間以使之固化下來,然后才可以進入下一個階段。
轉變的過程當然是痛苦的,喬梁說,“但是得到的收益也很大”——DevOps帶給團隊的“不僅是技術上的改變,還有行為上的改變”。
很多與會者都關心這種工作方式的可行性,在會后的提問中,大家的焦點也集中在這一塊:開發團隊和運維團隊真的能夠那么協調的工作嗎?他們是怎么解決一些工作和技術上的沖突的呢?
在會后的交流中,喬梁向51CTO記者表示,目前DevOps這種方式尚沒有在百度的整體技術團隊中應用,但是他所負責的high level的團隊使用這種方式取得了明顯的效果。而且,把交付周期變更為三周一次,是這個團隊的開發人員和運維人員共同提出的,對于KPI進行整體考核的要求,也是團隊成員提出的。
“你要培養一種文化,要建立一種機制。讓運維人員參與到更早——只要項目開始,啟動階段就要把運維人員引入進來,一起開個會,讓他們知道項目的進程”。同時,開發人員也需要了解到運維人員的工作狀態,因為一旦他們了解到運維人員每天要處理多少條告警,再開發的時候就會注意。據喬梁介紹,有些公司是通過輪崗的方式來促成這種相互理解的。“最后一點也是最關鍵的一點”,喬梁說“任何一種產品的成功,不只是你開發團隊的成功。我希望DevOps里能為同一件事請來鼓掌,來建立一種溝通協作的文化”。
DevOps首先是一種文化轉變
改變交付團隊各個環節各自為政的局面,建立一種全新的工作方式,這是DevOps的第一步。然后,我們需要檢視開發運維過程中的每一個環節,減少不必要的浪費。
這些浪費包括:一些容易造成高風險問題的不必要的多分支開發;問題被發現的時間推遲;基于流程平臺的溝通;浪費很多人工在常規的例行工作上等。
為減少浪費,DevOps團隊做了很多工作。首先,持續交付的一個前提是持續集成;其次,將大量的工作通過自動化手段來實現;部署腳本,所有的變更都走同樣地流程;所有的事情都要做版本控制。DevOps要求所有的人都要做主干開發。
提高工作效率,自動化是一個很重要的手段。喬梁在演講中也多次提到“自動化”這個特點,那么自動化是不是DevOps的一個前提呢?
在回答51CTO記者這個問題的時候,喬梁表示,“Devops本身第一Culture(文化)是最重要的,你得讓所有人都參與進來,至于自動化,它只是一種手段一種工具,因為當你用傳統交付的方法你的人力的消耗會很大,會對運維、測試等造成很大的壓力,如果你不解決這個問題的話,那你測試和運維都不會同意的”。
至于實現自動化腳本的手段,喬梁介紹百度是有自己的一套管理運維平臺,其他企業可能會通過puppet之類的工具去做。在不同的環節都有不同的自動化工具可以選擇。“你不用這些工具沒關系,但是比如環境準備,還有應用度等等你必然要有一套自己的方式。” 喬梁說。
針對目前DevOps在國內外的發展情況,喬梁說,DevOps本身還是比較新的東西,國內外并沒有很大的差距,“我覺得還是意識層面的差距。因為DevOps里面很多技術很多國內的公司也在用,但是他還是把我只把我自己運維的這一部分做了,他連不起來,大家還有隔離。”
正如喬梁在一張演講PPT中所寫道的:“DevOps=Culture+Tools”,它是工作思路的轉變輔以適當工具的結果,首要的還是文化轉變——“包括我們之前提到的敏捷開發,基本上也是一種文化的變化,而不是一種工具的變化。”喬梁說。
【編輯推薦】