Microsoft 如何使用 DevOps 傳遞軟體
Microsoft 有數十年的經驗,可提供高度擴充的服務給生產環境。 隨著 Microsoft 服務和環境的擴展,其傳遞做法也會隨著時間而演進。 許多 Microsoft 客戶也採用並受益於這些有效率的傳遞做法。 下列核心 DevOps 原則和程式可以套用至任何新式軟體傳遞工作。
為了實作 DevOps 傳遞程式,Microsoft 採用下列計劃:
- 將組織思維和節奏放在傳遞上。
- 組建自發、負責的小組,他們擁有、測試及提供功能。
- 向右移位,以在生產環境中測試及監視系統。
專注於傳遞
更快速的出貨是組織和小組可以輕鬆地測量和欣賞的明顯好處。 典型的DevOps頻率牽涉到短期 衝刺 週期,並定期部署至生產環境。
由於擔心短期衝刺缺乏產品穩定性,一些團隊在短期衝刺週期結束時彌補了穩定期。 工程師們希望在短期衝刺期間盡可能提供許多功能,因此他們產生了測試債務,他們不得不在穩定期間償還。 在短期衝刺期間管理債務的團隊必須支援建立債務的團隊。 透過傳遞管線和生產環境產生的額外費用。
消除穩定期迅速改善了團隊管理債務的方式。 建立債務的團隊不必把關鍵維護工作推到穩定時期,而是不得不在下一次衝刺中趕上債務目標。 Teams 在短期衝刺期間快速學會管理其測試債務。 功能在經過證實且值得部署成本時提供。
完全自動化管線
大部分改進小組可以立即獲得,就是將管線從程式代碼存放庫完全自動化到生產環境。 自動化包含持續 整合(CI)、自動化測試和 持續傳遞(CD)的發行管線。
Teams 可能會因為部署困難而避免部署,但部署頻率越低,就越難。 部署之間的時間越多,問題就越多。 如果程式代碼不新鮮,則有部署債務。
藉由經常部署,更容易以較小的區塊運作。 這種想法在事後看來可能很明顯,但當時看來,這似乎是反直覺的。 頻繁的部署也會促使小組優先建立更有效率且可靠的部署工具和管線。
使用內部工具
Microsoft 會使用他們建置的發行管理系統,並將它運送給客戶。 單一投資可改善小組生產力和 Microsoft 產品。 使用次要系統會擷取開發和傳遞速度。
小組自主權和責任
沒有特定的關鍵進度指標 (KPI) 會測量小組生產力或效能,或功能是否在追蹤中。小組必須能夠管理自己的計劃和待辦專案,同時尋找符合組織目標的方法。
請務必直接與小組溝通以追蹤進度。 工具應該有助於溝通,但交談是最透明的溝通方式。
設定功能的優先順序
一個重要目標是專注於提供功能。 排程可以評估在指定時間內可合理完成多少小組和個人,但某些功能會稍早提供,有些功能稍後會提供。 Teams 可以排定工作的優先順序,讓最重要的功能成為生產環境。
使用微服務
微服務提供各種技術優點,可改善和簡化傳遞。 微服務也提供小組擁有權的自然界限。 當小組擁有微服務投資的自主權時,他們可以優先執行功能及管理債務。 Teams 可以專注於版本控制等因素的計劃,與相依於微服務的整體服務無關。
主要工作
工程師用來在不同的分支中工作。 每個分支的合併債務增長,直到工程師試圖將其分支整合到主要分支。 那裡的團隊和工程師越多,整合就越大。
為了更快速、更持續且較小的區塊進行整合,工程師現在可在主要分支中工作。 移至 Git 的其中一大原因是輕量型分支 Git 供應專案。 內部工程的好處是消除深層分支階層及其浪費。 過去用來整合的所有時間現在都傾注到交付中。
使用功能旗標
某些功能尚未完全完成短期衝刺部署,但仍可從生產環境中測試中獲益。 Teams 可以使用功能旗標合併並部署此程式代碼,以針對特定用戶開啟此功能,例如開發小組或少數早期採用者。 功能旗標可控制暴露,而不會有整體用戶基礎問題的風險,並可協助小組判斷功能是否和如何完成功能。
在生產環境中進行測試
在生產 環境中轉移至測試,有助於確保生產階段前測試有效,且不斷變化的生產環境已準備好處理部署。
檢測測試和計量
無論應用程式部署的位置為何,檢測所有專案都很重要。 檢測不僅有助於識別和修正問題,還能提供關於使用方式的寶貴研究,以及接下來要新增的內容。
測試復原模式
複雜部署的風險是 串聯失敗,其中一個元件失敗會導致相依元件失敗,依此方式直到整個系統中斷為止。 請務必瞭解單一失敗點 (SPOF) 的位置及其減輕方式,以及測試風險降低程式,特別是在生產環境中。
選擇正確的計量
設計計量可能很困難。 常見的錯誤是包含太多計量,以避免遺漏任何專案。 但這可能會導致忽略或不信任不符合特定需求的計量值。 相反地,Microsoft 小組會花一點時間來判斷測量成功所需的數據。 Teams 可能會新增或變更計量,但從一開始就瞭解目的有助於該程式。
除了計量的基礎之外,小組還考慮他們需要測量的計量。 例如,使用者收益的速度或加速可能比用戶總數更有用。 計量會因專案而異,但最有説明的是有潛力推動商務決策的計量。
使用計量來引導工作
Microsoft 包含具有最高領導層級檢閱的計量。 每六周,組織就會呈現他們在健康情況、商務、案例和客戶遙測上執行的方式。 組織會與主管及其小組討論計量。
整個組織的 Teams 會檢查參與的用戶計量,以判斷其功能的意義。 Teams 不只是提供功能,而是查看人員是否及其使用方式。 Teams 會使用這些計量來調整待辦專案,並判斷功能是否需要更多工作才能達成目標。
傳遞指導方針
- 從 A 到 B 從 A 到 B 從直線, B 也不是終點。
- 總會有挫折和錯誤。
- 將挫折視為變更完成特定程式一部分策略的學習機會。
- 隨著時間推移,每個小組都會藉由根據經驗及調整以符合不斷變化的需求來發展其DevOps做法。
- 關鍵是專注於將價值傳遞給使用者和傳遞程式本身。