DevOps - DevOps基礎概念梳理


DevOps

DevOps(Development+Operations)強調共同對業務目標負責,以實現用戶價值作為唯一的評判標准:保證產品功能及時實現、成功部署和穩定使用;

  • 是一種重視軟件開發人員(Dev)和IT運維技術人員(Ops)之間溝通合作的文化、運動或慣例,改善團隊之間的協作關系;
  • 是一組過程、方法與系統的統稱,包含開發、測試和運維;
  • 用於促進開發(應用程序/軟件工程)、技術運營和質量保障(QA)部門之間的溝通、協作與整合;
  • 透過自動化“軟件交付”和“架構變更”的流程,使得構建、測試、發布軟件能夠更加地快捷、頻繁和可靠,按時交付軟件產品和服務;

總的說來:

  • DevOps 是把人員、流程、產品進行結合,給用戶提供持續價值的一個過程,既涉及到人員、流程、工具,也涉及到產品。
  • DevOps 最終目的是給客戶提供持續交付的價值,流程包括:產品的規划跟蹤、軟件開發、構建測試、產品部署、運維、監控和優化。
  • 通常把 DevOps 這些流程通過一個流水線的方式串聯起來稱為一個 DevOps 的流水線,其核心目標就是持續給用戶交付有價值的產品。

簡而言之,DevOps不僅涉及技術背景,還包括非技術的文化方面。
在軟件開發和應用周期中,提供了一個機制或模式來培育“協作”意識,幫助不同角色的成員緊密協作,充分利用現有資源,遵循交付的商業價值,共同對“輸出”負責,對質量負責。

DevOps的好處與價值

對於業務與產品而言,DevOps的好處更多基於持續部署與交付。
從組織結構而言,DevOps是部門間溝通協作的一組流程和方法,有助於改善公司組織文化、提高員工的參與感。

  • 代碼的提交直接觸發:消除等待時間,快速反饋
  • 每個變化對應一個交付管道:使問題定位和調試變得簡單
  • 全開發流程高效自動化:穩定,快速,交付結果可預測
  • 持續進行自動化回歸測試:提升交付質量
  • 設施共享並按需提供:資源利用最大化

可能的幾個關注點

DevOps絕不是推薦一定要在某一方面達到極致,而是從“整體”入手,充分激發“體系”的最佳效率。

  • 雖然真正實現DevOps的成本高昂,但任何時候都是實現DevOps的最佳時機,因為隨着業務發展,成本一定是越來越高的;
  • 組織文化上的變革,鼓勵不同的個體與部門共同協作,減少“內耗”;
  • 合適的DevOps人員(最起碼保證在“向DevOps轉換階段”中,研發人員知曉運維,運維人員了解業務);
  • 統一的標准、環境、工具、流程,例如:開發/測試環境盡可能地和生產環境保持一致;
  • 自動化和持續交付,簡化重復性工作和減少不必要的等待
  • 涉及多個技術支撐:敏捷開發、持續集成&部署、微服務、容器、雲環境等;
  • 個體和團隊的成效都放在整個產品開發&運維生命周期內來進行評價;

DevOps能力環

DevOps與持續集成、持續交付

DevOps的應用場景往往是一個龐大復雜的背景和流程的場景,大都包含一個持續交付流水線。

  • 開發人員:IDE、Git等開發和編譯工具
  • 版本控制系統:分支策略、語義化版本
  • 構建服務器:持續集成、代碼質量檢查
  • 工件庫:存放二進制包
  • 系統的包管理器:編譯或測試環境系統上管理二進制包
  • 環境一致性
  • 預發布或生產:預發布環境與生產環境互換(藍綠發布)
  • 發布管理:在高程度自動化測試的基礎上實踐自動化或半自動化(人工介入)部署
  • 問題管理系統
  • 。。。。。。
    因此,DevOps 是一個完整的面向IT運維的工作流,以 IT 自動化以及持續集成(CI)、持續部署(CD)為基礎,來優化程式開發、測試、系統運維等所有環節。
    DevOps的技術要點由“持續集成/部署“”一線貫穿,主干開發是進行持續集成的前提,自動化以及代碼周邊集中管理是實施持續集成的必要條件。
    換而言之,DevOps 是持續集成思想的延伸,持續集成/部署是 DevOps 的技術核心,在沒有自動化測試、持續集成/部署之下,DevOps就是空中樓閣。

一個完整的過程

  1. 開發團隊接到任務,需要完成一個變更
  2. 為了更加順利地開發,將這個變更分拆為幾個小變更
  3. 開發人員在本地開發並且測試,如果使用了測試驅動開發,在編寫功能代碼之前會先編寫測試,然后編寫能夠讓測試通過的實際代碼
  4. 開發人員將代碼提交到企業內部的Git版本控制系統上
  5. 構建服務器獲取這個變更並初始化構建流程,單元測試之后,變更可以被發布到二進制庫里
  6. 配置管理系統根據“策略”,在測試環境中安裝應用了新的變更
  7. 新安裝觸發自動化回歸測試,測試成功后,質量保證團隊開始做人工測試
  8. 人工測試通過后,質量保證團隊將“已通過”標識給予這個變革
  9. 變更在預發布環境中進行驗收測試
  10. 驗收測試完成后,預發布環境被切換成生產環境,而生產環境變為新的預發布環境

典型的CICD流水線過程

  1. 項目開發編寫代碼,然后把代碼推送到 GitLab 里存儲,通過 GitLab 的 hook 使 Jenkins 執行一些 CI 的過程,比如做一些單元測試,構建 Docker image
  2. 再把這個 Docker image 調用 helm 部署到開發環境或測試環境
  3. 在測試環境里通過 Jenkins 觸發一個集成測試的功能
  4. 完成后就可以把它部署到生產環境
  5. 通過 Kubernetes addon 的方式,把 Prometheus、Grafana 等監控組件部署到集群里,實現一整套從 CI 到 CD 的監控過程

DevOps黃金思維圈

時刻關注正在做什么,嘗試識別問題范圍,找出解決方案和改善途徑。
Why---》How---》What

Why(目的、理念)

持續且快速、可靠的自動交付軟件給用戶:

  1. 實現價值的持續交付,贏得市場競爭
  2. 提升研發(增值活動)的時間,極大化增值活動產出

How(方法、措施)

  • 建設自動化、可重復、可靠的持續交付流水線(IT服務供應鏈)
  • 主要包括代碼管理、持續集成、自動化測試、自動化部署、基礎設施自動化管理等方面的工程能力

What(現象、成果)

  1. 每次代碼提交都需要經過流水線驗證
  2. 每次部署的版本都經過多環境驗證
  3. 部署頻率可以得到提升
  4. 周期時間(從代碼提交到部署上線)的時間可以到分鍾級
  5. 部署失敗率低
  6. 部署失敗的修復時間短,影響小

初見

一些圖示

關系與演進

涉及的工具

DevOps的目標不是單靠一款工具就能實現的。
在各個階段,每個都有其單獨對應的目標。
依賴於組織的選擇,有着各種各樣的工具可以在相應的背景和趨勢下,實現當前業務目標,滿足中遠期的需求。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM