DevOps定義
DevOps是一套實踐方法,在保證高質量的前提下縮短系統變更從提交到部署至生產環境的時間。
解說DevOps定義隱含內容如下:
- 在部署對系統的變更時,質量很重要
- 交付機制要求高質量
- 開發人員提交新開發的代碼的時間和把代碼部署到現場生成環境的時間很重要
- 目標導向
- 目標是確保部署的系統在整個生命週期中都是高質量
DevOps實踐
- 從需求的角度把運維人員視爲首要干係人(運維需求)
- 讓開發人員更多地負責相關事件處理(部署由開發人員先負責)
- 強制推行所有人使用的部署過程(易於追蹤且易於理解)
- 使用持續部署(高質量且縮短提交到部署時間)
- 有一套適用於基礎設施代碼開發的實踐(部署高質量)
DevOps生命週期過程:需求(運維干係人)——開發(小團隊、單元測試)——構建(持續集成)——測試(自動化)——部署(持續部署)——執行(監控、響應)
DevOps運動
把以前由運維人員完成的很多任務都自動化了,並讓開發人員承擔部分剩餘的工作,通過這種方法,可以減少對專業運維人員的需求。
DevOps視角
-
自動化
工具可以執行過程中每一步所需的操作;工具和腳本也可以強制推行組織層面的策略;基礎設施即代碼(腳本和文件的版本控制,錯誤檢測等質量控制) -
開發團隊的職責
所有所需的知識都保留在開發團隊,不需要轉移知識過程中的大量協作步驟
DevOps與敏捷開發
規範敏捷交付包含三個步驟:開始階段(構想、建模、計劃)——構造階段(開發解決方案)——轉換階段(部署解決方案)
DevOps針對三階段的影響:
-
開始階段
增加運維人員需求;發佈計劃包含了與運維人員之間的配合;發佈計劃中與協作相關的很多主題不再需要,變得高度自動化 -
構造階段
-
轉換階段
等同敏捷實踐,新的部分是在構建與轉換活動之間,集成和自動連接
DevOps團隊結構
1、團隊規模:相對較小
- 可以快速做出決定
- 人少容易組成密切羣體
- 容易表達意見
- 缺點是大任務需要合理拆分,各團隊高效配合
- 小團隊圍繞一組微服務架構,減少顯式配合
2、團隊角色
- 團對領導:負責協調團隊、獲取資源、保護團隊不受問題的干擾等
- 團隊成員:負責系統的創建和交付
- 服務所有者:負責外部協作(既能與其他干係人交流,又能與團隊的其他成員交流)
- 可靠性工程師:負責部署後的監控以及服務執行期間出現問題後的聯繫人
- 看門人:從本地開發到部署階段的每一步都需要看門人根據測試結果,使用一個檢測表做出決策(是否允許到下一步)
- DevOps工程師:負責DevOps工具鏈中使用的各種工具的護理和保養(可以是個人、團隊或組織層面)
以上角色可以一人承擔多角,一角也可以由多人承擔,取決於個人能力、個人工作負荷以及這個角色所需的能力和工作量
DevOps協作
DevOps的一個目標是最大程度減少協作,以縮短推向市場的時間
1、協作的形式
- 直接的
- 間接的
- 持久的
- 短暫的
- 同步的
- 異步的
2、團隊協作
- 人工過程:取自敏捷過程
- 自動化過程
3、跨團隊協議
- 與干係人和客戶的上游協作
- 與運維人員的下游協作
- 與其他開發團隊的交叉協作
DevOps過程試圖儘量減少這種協作
-
軟件架構
職責分配;協作模型;數據模型;資源管理;架構元素之間的映射;綁定時決策 -
避免重複工作
避免重複工作並鼓勵複用:每個團隊任務都很小,重複工作量也很小;每個團隊都負責自己的服務,有問題時排除障礙較快
DevOps障礙
1、採用DevOps實踐時,組織需要考慮在縮短面市時間所帶來的收益與一些事情出現差錯之間的權衡,一個特定組織所擔憂的風險取決於他們的活動領域,對於一些組織來說,出現問題所帶來的風險比儘快推向市場更重要。
2、確定一個組織的文化的方法之一是看它的激勵產生什麼樣的結果,不同的激勵機制培育出不同的態度,可能成爲文化衝突的原因
3、筒倉思維方式
4、工具支持
- 每個工具的安裝、配置和使用都必須具備專業技能
- 不同開發團隊使用同一過程,需要定義共同使用過程,確保都遵守
5、人員問題
- 開發人員薪資的成本/收益問題
- 在開發人員中增加更多的任務會加劇開發人員短缺
DevOps權衡
1、在對DevOps工具進行支持與縮短新功能投向市場的時間之間進行權衡
2、把職責從IT人員轉向開發人員的權衡(兩個團隊完成任務的成本、時間、投入情況以及協議問題等)
3、開發團隊自治與整體協議之間的權衡