DevOps實施的五個關鍵點
DevOps正在被越來越多的企業認可和採用,它的原則和實踐不但適用於創業公司,對大型軟件企業或軟件開發部門也同樣適用,至少在當前階段有廣泛的適用性。面對一個IT創業公司或是傳統的軟件開發企業,如何開展DevOps轉型工作呢?
在實施DevOps之前,必須明確目標和思路、確定要解決的問題。一般而言,實施DevOps是為了加快研發流程,實現企業價值,增加企業在行業中的競爭力。DevOps解決的是一整套的流程和協作的問題,要以全局性的視角和系統化的思維來審視開發和運維過程中的問題,加快研發流程、打造高質量的、可靠的、安全的產品,從而實現價值的快速流動和交付。在具體的實施過程中,大體的流程和思路如下:
低效的工作團隊,必然有其根本的衝突或矛盾,致使團隊無法完成既定目標,不能如期的交付產品或交付的產品無法滿足可用性和穩定性的要求。從具體的工作中,以下原因會導致團隊的低效:
綜上各種因素,我覺得人員技能和團隊文化是需慢慢培養和影響的,架構是需要根據需求和目標逐步演進和調整的。唯有研發流程和技術債務的問題需要迫切解決,否則團隊將會繼續走向惡性循環。所以,實施DevOps的切入點應該是分析研發流程中的瓶頸和解決技術債務問題。換句話説,應該關注敏捷過程以及持續交付的相關實踐在執行過程中存在哪些問題。
確定了目標和問題,就需要科學的方法來改進問題。三步工作法是DevOps實施的基礎原則。實施過程中的核心關注點是促使價值流從需求到交付的快速流動、構建持續快速的反饋機制、建立高可信度和持續學習的企業文化。讓價值快速流動、讓反饋快速呈現才是打破團隊惡性循環的法寶。
實施DevOps就是為了能夠提升發佈速度,但速度的提升和質量的改進是循序漸進的。無論是三步工作法中哪一步,都不是一蹴而就的。比如,要實現價值的快速流動,就必須在開發團隊中制定實施計劃並最終得到落實。為了能夠持續改進,可以按照PDCA原則,不斷的執行此過程。
工具的引入是為了促使快速的價值流動或是實現快速的反饋。我們引入看板工具,是為了團隊工作的可見以及對製品數量的控制;引入自動化測試是為了控制質量問題儘可能少的向後流動、也為了能夠及時得到反饋,快速解決問題;在環境中使用虛擬化及監控工具,是為了我們能及時得到服務器及應用的相關問題,從而避免災難性的事件發生。除了應用開發中所使用的技術和工具外,實施DevOps過程中還需要以下各種工具和技能的融合:
DevOps的實施,對人員技能也提出更高的要求,它鼓勵每個工程師成為全才。研發人員不僅僅只關注於自身的業務代碼,還要關注到環境和運維。基礎設施已成為了代碼的一部分,所以每個開發人員要明白自己開發的應用代碼流向了哪裏,在每個環境中都發生了什麼變化,還要熟悉虛擬化技術、運維技術,要能夠接受到各種環境的反饋,從而快速解決各種問題。不僅如此,開發人員也承擔了很多QA的責任,要能夠運用TDD,熟練使用自動化測試技術。從組織層面來講,應該努力在以下方面為團隊能力培養提供機會。
良好的團隊文化,對於實現業務目標和價值至關重要。學習型的團隊,高度互信的團隊,才可以更好的解決問題,創造更多的價值。在DevOps的實施過程中,要給團隊營造一種安全的環境,讓每個人都能表達自己的想法和見解。遇到問題,不指責。讓團隊成員能夠相互鼓勵、增加信任,共同承擔責任。
傳統的開發方式並未將開發、測試、運維融為一體。甚至有些團隊為了快速實現功能,沒有自動化測試、沒有評審、沒有運維人員的通力合作,看似產品快速交付,但交付的產品卻十分脆弱,欠下的技術債務越來越多,為後續產品演進埋下了巨大的隱患。
DevOps實現的最終目標是快速交付,整合了精益思想、敏捷思想、學習型組織,它是一套科學的思想和實踐方法,實施DevOps才是打破惡性循環,實現價值交付的最好解決方案。