探索DevOps旅程

已完成

請記住,目標是要縮短週期時間。 從發行管線開始 - 這通常是最大的限制。 問問自己:部署一行程式碼或組態的變更需要多長時間? 此部署時間最終會成為你應對市場變化時速度和應變能力的限制因素。

DevOps 實作藍圖範例

第一階段:基礎

  • 使用 Git 建立版本控制
  • 實作基本 CI/CD 管線
  • 設定監視和警示

第二階段:自動化

  • 在多個層級自動化測試
  • 實作基礎結構即程式碼
  • 設置安全性掃描系統

第三階段:優化

  • 微調部署策略
  • 實作進階監控
  • 優化效能和成本

第四階段:文化與規模

  • 跨小組擴充做法
  • 建立卓越中心
  • 持續改進流程

核心 DevOps 實務及其影響

持續整合

推動程式碼的持續合併和測試,從而及早發現缺陷。 優點包括:

  • 減少整合衝突:在數小時內解決合併問題,而不是數週
  • 更快的反饋: 開發人員在提交代碼後的幾分鐘內了解問題
  • 提高代碼質量:自動化測試立即檢測到回歸錯誤
  • 增強信心:團隊可以安全地重構和改進代碼

實作提示:從每次提交的自動化建置開始,然後逐步新增測試層。

顯示成功建置完成的圖表,其中綠色核取記號表示所有測試都已通過,且符合程式碼品質閘道。

持續交付

能夠將軟體解決方案快速部署到生產和測試環境中,幫助組織快速修復錯誤並回應不斷變化的業務需求。

主要優點:

  • 降低部署風險:較小、較頻繁的版本更容易進行故障排除和復原
  • 更快的上市時間:功能可提前數週或數月到達客戶手中
  • 提高可靠性: 自動化部署消除了人為錯誤
  • 更好的客戶響應能力:快速響應反饋和市場變化

要考慮的部署策略:

  • 藍綠:具有即時回滾功能的零停機部署
  • Canary:逐步向使用者子集推出,以將風險降至最低
  • 功能標誌: 在不暴露功能的情況下部署代碼,實現更安全的發布

圖表顯示持續傳遞管線,其中包含建置、測試、預備和生產環境的階段,強調自動化部署程式。

卓越版本控制

版本控制通常使用基於 Git 的儲存庫來實現,使世界各地的團隊能夠在日常開發活動期間進行有效溝通,並與軟體開發工具整合以監控部署等活動。

進階 Git 實務:

  • 分支策略:GitHub Flow 或基於主幹的開發
  • 程式碼審查流程:具有強制核准的提取要求
  • 提交約定:一致、有意義的提交訊息
  • 整合掛鉤:自動化測試和部署觸發器

企業考量:

  • 存放庫組織和存取控制
  • 大型檔案處理 (Git LFS)
  • 合規性和審計要求
  • 備份和災害復原

顯示具有主要分支、功能分支和合併點的 Git 分支的圖表。

敏捷規劃和精益專案管理

使用敏捷規劃和精益專案管理技術來最大化價值交付:

衝刺規劃最佳做法:

  • 將工作規劃並分隔成可管理的短衝(1-4 週)
  • 管理團隊容量,幫助團隊快速適應不斷變化的業務需求
  • 定義明確的驗收標準和完成的定義
  • 完成的 DevOps 定義包括根據預期業務目標收集遙測資料的工作軟體

關鍵敏捷工件:

  • 用戶故事:從用戶角度描述具有明確價值的功能
  • 史詩:大型功能分解為易於管理的故事
  • 待辦事項:功能和技術債務的優先級列表
  • 衝刺目標:每次迭代都有明確的目標

精益原則:

  • 消除流程和交接中的浪費
  • 針對流量而非資源利用率進行最佳化
  • 從一開始就建立品質
  • 及早並經常交付價值

顯示工作流程的看板欄位:待辦事項、進行中、準備編碼、待處理、就緒、待審核和完成,卡片代表在流程中流轉的工作項目。

全面的監控和日誌記錄

監控正在運行的應用程序,包括生產環境,以了解應用程序運行狀況和客戶使用情況。 這有助於組織建立假設並快速驗證或反駁策略。 擷取豐富的資料並以各種記錄格式加以儲存。

監控堆疊元件:

  • 應用程式效能監控 (APM):追蹤回應時間、錯誤和吞吐量
  • 基礎架構監控:CPU、記憶體、磁碟、網路指標
  • 業務指標:用戶參與度、轉化率、功能使用情況
  • 安全監控:威脅偵測和合規性追蹤

可觀測性最佳實踐:

  • 實作微服務的分散式追蹤
  • 使用具有相關性 ID 的結構化記錄
  • 設定主動警示,將誤報降到最低
  • 為不同的受眾(運營、開發、業務)創建儀表板

日誌管理策略:

  • 具有搜尋功能的集中式日誌
  • 根據合規性需求制定的保留原則
  • 透過日誌層級管理進行成本最佳化
  • 即時分析關鍵問題

儀表板,其中包含顯示效能指標、錯誤率和系統健康指標的監控圖表。

  • 公用與混合式雲端可讓您輕鬆完成不可能的任務。 雲端已移除傳統瓶頸,並協助將基礎結構商品化。 您可以使用基礎結構即服務 (IaaS) 來隨即轉移現有的應用程式或平台即服務 (PaaS),以大幅提升生產力。 雲端為您提供資料中心,而且沒有任何限制。

公用雲端的圖表。

  • 基礎結構即程式碼 (IaC):自動執行環境建立及卸除,並加以驗證,以協助提供安全且穩定的應用程式裝載平台。

基礎結構即程式碼 (IaC) 表示法的圖表。

  • 使用微服務架構,將商務使用案例隔離至透過介面合約進行通訊的小型可重複使用服務。 此架構能提升延展性和效率。

整合型和微服務表示法的圖表。

  • 容器是虛擬化的下一個演進。 其比虛擬機器更輕量、序列化速度更快,而且可讓您輕鬆地設定檔案。

容器的圖表。

DevOps 一開始可能會造成傷害,但請避免這些反模式

如果是這樣,請更頻繁地執行操作。 採用新的做法就像去健身房一樣,一開始很有可能會受傷。 您越常練習新技術,這些技術就會變得越容易。

就像在健身房訓練一樣,您先鍛煉大塊肌肉,然後再鍛煉小肌肉,首先採用影響最大的練習。 交叉培訓以發展實踐之間的協同作用。

要避免的常見 DevOps 反模式:

  • 工具優先的方法:不要從購買工具開始。 首先了解您當前的狀態和期望的結果。

  • 大爆炸轉型:避免試圖一次改變一切。 從小事做起,逐漸擴大。

  • DevOps 團隊孤島:不要創建單獨的“DevOps 團隊”。DevOps 是一種實踐,而不是一個角色。

  • 忽視文化:沒有文化變革的技術變革將失敗。 投資於人員和流程。

  • 忽略安全性:不要把安全性當作事後加裝的附加項。 整合整個安全性 (DevSecOps)。

  • 過度工程:從簡單開始,僅在需要時增加複雜性。 避免過早優化。

  • 忽略遺留:不要放棄現有系統。 規劃漸進式現代化策略。

值得採納的成功模式:

  • 從高影響、低風險的變更開始:在部署之前自動化建置

  • 衡量一切:在進行更改之前建立基線

  • 快速失敗並學習:透過適當的保障措施進行實驗

  • 投資自動化: 首先自動化重複性、容易出錯的任務

  • 建立回饋循環:建立機制以從成功和失敗中學習

一個人鍛煉的例子,表明通過一致的應用,DevOps 實踐變得更加容易,並且增強力量需要循序漸進、堅持不懈的努力。

備註

來源文章 定義 DevOps 提供這些概念的其他內容和詳細說明。