開啟 DevOps之旅,有哪些關鍵點?
想要落地DevOps卻不知道如何入手?本篇文章將帶你深入學習關于DevOps的關鍵概念及優秀實踐。
DevOps的起源
一般認為,DevOps的出現源于兩個因素:敏捷軟件方法的廣泛采用以及IT基礎設施及代碼的管理方式。
我們先看敏捷軟件開發方法。20世紀末,主流軟件開發方法是所謂的瀑布模型,需要花費大量時間,適用于對快速產品交付需求不大的大型信息系統,這個模型能夠確保產品的高質量和精細的成本控制。
20世紀90年代,隨著互聯網和Web技術的發展,瀑布模型的消極作用開始顯現:如何滿足不斷變化的客戶需求的同時,還要按時交付同時不降低產品質量,就變得極為困難。
因此,IT管理方法也需要隨之變化,逐漸從聚焦IT系統逐漸轉變為聚焦IT服務的管理模式。
從2000年開始,這些涌現出來的管理實踐,被先行者工程采納之后,成為所謂的最佳實踐,有些最佳實踐進一步被業界廣泛接受,甚至成為標準。
我們以IT服務為例,20世紀80年代,這樣的想法開始出現:信息技術以服務的形式提供價值,以流程的形式組織IT活動。隨后ITIL(IT基礎設施庫)等被闡述出來,使得這些實踐進入最佳實踐之列,在2002年成為IT服務管理的首個標準。
如今,新涌現出來的實踐,被打上DevOps(開發+運維)的標簽。實際上,DevOps的內涵,已經大大超出了原始含義。那么究竟什么是DevOps呢?
何為DevOps?
隨著與客戶交互的新方法的出現,以及敏捷開發技術的充分應用,業界迫切需要一種新的IT管理方法。而以虛擬化和云計算技術為支撐的基礎設施即代碼的出現,為IT管理新方法的出現提供了機遇,基于敏捷軟件開發和精益生產演進的IT管理新方法DevOps應運而生。
DevOps是一種敏捷軟件開發和精益制造想法的演變,應用到IT端到端的價值鏈,歸功于文化、組織和技術的變革,使業務能夠通過現代信息技術更多地達到預期,更快滿足用戶的業務需求,提升資源利用率。
首先,DevOps是對敏捷軟件開發和精益實踐兩者的演變,是吸收,而不是取代。
其次,DevOps 被應用到IT端到端的價值鏈,其本質就是:DevOps所考慮的不僅僅是軟件開發,而是整個價值鏈。整個價值鏈始于業務干系人的新想法,經過需求分析,設計,開發,測試和部署,到運維,最后到交付給客戶。端到端價值鏈的方法有助于從宏觀上整體地分析,識別和消除瓶頸。
為什么要采用DevOps?
首先,企業落地DevOps是提升產能和效率的必然選擇,可以大幅提升新產品或新應用的上市時間。
傳統企業新產品上市涉及到相當大的時間跨度,對于響應的IT部門,這個時間可能包括以下環節:
- 針對一種或若干種業務想法構建和起草方案,以及業務論證;
- 評估和選擇一個業務想法進行實施;
- 規劃實施所需的行動,獲得資金;
- 員工和業務流程準備;
- 同時進行需求規范化,原型開發,初始測試,全功能IT系統開發,全面測試,發布和部署;
- 同時進行營銷活動,市場準備,銷售渠道和工具的準備;
- 新產品或服務的推出。
上述流程需要花費幾年時間,然而業務部門希望縮短到數月。擁抱DevOps的理由是顯而易見的。
創造數字化產品的充滿活力的公司,習慣于快速行動。相對于嚴謹,詳細計劃,他們更推崇可安全失敗的實驗。這時,流程可能是這樣的:
- 建立一個假設,開發驗證方法;
- 假設的實際實現;
- 結果評估,A / B測試,與目標的比較;
- 根據分析進行調整,返回第一步或第二步。
很容易看到這是一個循環,預期時長是幾周。這就是小步快跑的策略。這樣快速的步驟是必須的,因為DevOps的本質就是持續的探尋。最終狀態是不可知的,指定長期的計劃沒有意義。
為了盡可能縮短上市時間,DevOps提供了多種技術:
- 減少批量大小;
- 減少交接次數;
- 持續識別和消除損失;
- 自給自足的團隊,傳統IT部門為成本優化,DevOps為速度而優化;
- 自動化。
其次,減少技術債務也是企業擁抱DevOps的一大原因。技術債務是在團隊成員選擇一個非最優的方式解決問題以縮短開發時間時產生的。這是一個自然的過程,問題是累積的非最優方案導致了開發產出逐步惡化,必然導致產品質量下滑。
DevOps持續重構程序代碼,重視在操作中取得的經驗,鼓勵持續識別并消除瓶頸,認為這些工作和技術創新同開發新產品功能同等重要。
同時,DevOps強烈建議使用“盡可能頻繁面對問題”的實踐,以便防止問題的“停滯”,即所有人都知道,但沒有人能夠處理的情況。
除此之外,采用DevOps可以幫助企業排除脆弱性。通常組織中最重要的和業務收益最相關的系統是最脆弱的。
DevOps能夠以最激進的方式改變脆弱性,做到完全排除;
在DevOps中,代碼和系統作為一個整體,在某個時刻是全功能的,如果接下來的變更破壞了性能,就要馬上回滾并且讓系統持續正確地工作;
DevOps的實踐,有意地引入混亂和不穩定性到生產環境,目標IT系統必須以獨立和快速的方式做出反應,探測到故障并恢復它們的正常運作,理想情況下最終用戶是無感知的,當然數據也不會丟失。
DevOps常見誤區
常見誤區1:“DevOps不過是延續敏捷的想法”
企業在落地DevOps前,首先要明確一點,DevOps并不僅是敏捷的一部分。
- 盡管DevOps在很大程度上基于敏捷,然而擴展了敏捷開發到通用的敏捷IT交付,覆蓋整個組織、整個流程以及完整的價值鏈;
- 獲得DevOps的回報需要在公司中進行比以往敏捷所做的更為顯著的文化變革;
- DevOps的目標集合不僅限于加速交付:也需要減少技術債和排除脆弱性。
常見誤區2:“工具能夠給你極致的DevOps”
其次,我們需要意識到DevOps是一系列的組織文化和工作方式變革,而不僅僅是工具和自動化。
- 雖然個別的軟件解決方案被廣泛接受,但沒有也不可能有一個完整的DevOps必備軟件列表;
- DevOps依賴確定的自動化工具的可用性和有效性。但是嚴格來講,這些工具的最小集可以縮減到用于存儲所有源代碼的版本控制系統、IT基礎設施配置數據、軟件交付流水線自動化系統;
- 任何特定的DevOps實施都需要從企業自身組織情況出發,專業的商業化廠商可以幫助企業快速理清流程、加速實現組織變革。
常見誤區3:“DevOps是一個全能士兵,能寫代碼,做測試,部署環境,并管理基礎設施”
最后,我們需要了解DevOps并不是一個新職業。
- DevOps是一種對IT部門的基本面有深遠意義的變革,并不是通過招聘一些DevOps工程師或邀請DevOps專家就能達成的;
- 具有實施軟件交付流水線的能力也不能保證成功;
- 短期來看,不大可能通過應用DevOps的實踐就立即節省成本,但長遠來看是在為更大的降本增效做準備,因而選擇一個具有過硬技術實力和豐富實踐經驗的廠商十分重要。