標準化工具和程序的建議

適用於此 Azure Well-Architected Framework Operational Excellence 檢查列表建議:

OE:04 遵循經過業界證明的開發和測試做法,將軟體開發和品質保證程序優化。 如需明確的角色指定,請將工具、原始檔控制、應用程式設計模式、檔和樣式指南等元件之間的做法標準化。

相關指南改善建置速度 | 使用持續整合

本指南說明定義軟體開發工具和程式標準的建議。 定義一致的做法會導致有效率的工作負載小組和高品質的工作。 高效能小組會使用業界證明的工具和程式,將浪費的精力和潛在的程式代碼錯誤降到最低。

主要設計策略

優化開發做法的第一個步驟是標準化工具和程式。 可能的話,請使用業界證明的解決方案,而不是開發內部解決方案。 若要進一步優化您的做法,請採用低程式代碼和無程式碼工具。 這些工具可讓您專注於應用程式,並協助您節省時間。 針對您標準化的所有工具和程式,請實作訓練,讓您的小組瞭解並有效率地使用。 若要定義可協助優化開發做法的標準,請考慮下列建議。

使用已知且成熟的現成工具

使用已知且成熟的現成工具,並標準化其使用方式。 高效能的工程小組採用最佳類別的工具。 這種方法可將開發解決方案的需求降到最低,以便規劃、開發、測試、共同作業,以及持續整合和持續傳遞 (CI/CD) 。 許多企業可讓開發人員選擇幾個工具,但所有選項都是組織的標準工具,而且會在內部進行驗證。 最重要的是,選擇符合工作負載需求的工具。 現成工具應該提供下列功能:

  • 工作規劃和待辦專案管理

  • 版本控制與存放庫

  • CI/CD 管線

  • 測試,例如整合、水氣、綜合使用者、模擬、混亂和其他質量測試

  • 程式碼開發

在某些情況下,一個工具或一組工具可能會提供數個函式。 請確定您瞭解工具的功能及其限制,使其符合跨函式的需求。

判斷您是否應該投資昂貴的工具或進階版本的工具。 相較於進階工具所提供的功能,請考慮開發您自己的解決方案所花費的時間和精力。 請考慮一次性成本與週期性成本。 在大部分情況下,現成的工具可為小組提供較高的價值。

實際時,請使用低程式碼、無程式碼和 AI 工具。 低程式代碼和無程式代碼工具可讓他們輕鬆地插入功能,而不是執行整個程式碼開發程式,藉以節省有經驗的開發人員時間。 這些工具也允許可能未訓練開發人員的工作負載小組成員參與工作負載的作業。 AI 工具可協助程式代碼開發、檢閱和優化。

標準化分支策略

盡可能選擇主幹型模型。 主幹型分支可讓工作負載開發小組保持同步,並鼓勵持續傳遞。 定義分支原則以保護重要的分支,例如主要分支。 如需詳細資訊,請參閱 採用 Git 分支策略分支原則和設定

評估計量以量化開發效率

只有在軟體開發和品質保證小組可以量化其有效性時,才能改善。 為了量化有效性,他們必須識別測量 開發人員速度 並定義 KPI 的計量。 這些計量的範例包括:

  • 部署頻率:每個開發人員每天部署的部署數目。

  • 前置時間:工作或使用者故事從待辦專案移至生產部署所需的時間。

  • 平均解決時間:修正程序代碼中 Bug 或瑕疵的平均時間。

  • 變更失敗率:導致失敗的變更百分比。

為了協助項目關係人與工作負載小組輕鬆地追蹤速度,請使用儀錶板或其他報告工具將 KPI 可視化。

標準化工作負載小組撰寫、檢閱和文件程序代碼的方式

使用樣式指南,將工作負載小組撰寫、檢閱和文件程序代碼的方式標準化。 標準樣式可讓您輕鬆共同作業,並協助上線新開發人員。 若要有效運作,新的開發人員必須知道工作負載小組的運作方式。 具有明確定義標準的樣式指南可簡化其訓練程式。 在樣式指南中,定義開發語言、連結庫、架構和其他慣例的標準。

當可行時,請使用工具來強制執行程式碼格式設定標準。 例如,Visual Studio 提供數 種工具 ,可掃描程式代碼的樣式、品質、可維護性、設計和其他問題。 針對基礎結構即程式代碼 (IaC) ,您可以使用 Checkov 或 Terrascan for Terraform。

為了確保一致性並避免混淆,樣式指南應包含成品、環境、分支、組建和執行的標準命名慣例。

您也應該針對環境中允許的變異數程度設定指導方針和標準。 如果工作負載小組成員想要新增至標準清單的新語言、架構或其他技術,請在沙箱或較低環境中實作使用這些工具的程式。 測試其可行性,並在適當時取代現有的技術。

使用架構決策記錄 (ADR) 來保留工作負載小組設計決策的歷程記錄。 ADR 可協助小組維持對工作負載的全新瞭解。 他們也會協助新的小組成員瞭解工作負載生命週期期間所做的設計決策。 請確定 ADR 是受版本控制。

在您的 ADR 中,包括:

  • 例如,使用 SQL 或 NoSQL 的特定工具和技術,您的小組會選擇。

  • 小組決策的原因。

  • 其他已考慮的選項,有助於將最終決策內容化。

  • 納入決策的功能和非功能需求。

  • 決策程序的內容,例如已解決的問題。

實作解決技術債務的標準

採用技術債務的思維,這是您工作負載小組交付專案刻意且必要的。 此思維會鼓勵您的小組定期考慮並解決技術性債務,以避免累積。 在待辦專案中,以定期週期性工作處理技術債務。

例如,假設您的小組在連結庫上標準化。 經過一段時間后,您必須切換至不同的連結庫,以取得工作負載中的新功能。 該轉換可能會導致技術性債務。 通常,這類轉換可能會讓工作負載小組支援兩種技術,因為它們無法順暢地完全轉換。 工作負載小組必須優先完成轉換,因為當工作負載達到新功能時,項目關係人就會滿意,而且不太可能考慮技術債務。

將版本設定套用至成品的方式標準化

將版本設定套用至成品的方式標準化,以及如何在內部和外部公開版本設定。 例如,用戶端面向系統應該在使用者介面中公開其執行中版本。 當工作負載小組針對問題進行疑難解答時,這項技術很有幫助,因為客戶可以輕鬆地傳達他們所使用的版本。 REST 介面可以公開特定元件或資料庫的版本。 您可以使用元資料中的特定資料表來公開架構版本。

使用經過業界證明的應用程式 設計模式 ,以確保您的應用程式可靠、高效能且安全。 使用這些模式,相較於為應用程式開發您自己的解決方案,可節省時間和精力。 選擇讓您的工作負載受益的模式。 定期檢閱設計模式,以確保您在工作負載演進時使用正確的模式。

實作向左移測試的方法

透過在開發過程中,提早且經常執行單元測試,以實作測試的移轉方法。 每個開發環境中的經常測試可協助開發人員確信其應用程式。 若要使用左移方法協助建立測試策略,請考慮下列原則:

  • 盡可能以最低層級撰寫測試。 偏好使用最少的外部相依性進行測試,並在組建中執行測試。

  • 撰寫測試一次,並在任何地方執行測試,包括生產環境。 撰寫可在每個開發環境中執行的測試,而不需要考慮一個環境特有的因素,例如加密的秘密或組態。

  • 設計要測試的工作負載。 當您開發應用程式時,請讓可測試性成為需求。

  • 將測試程式代碼視為應用程式程序代碼。 將相同的品質和開發標準套用至應用程式程式代碼和測試程序代碼。 將測試程式代碼與應用程式程式代碼一起儲存。 使用應用程式程式代碼開發和維護測試程序代碼。 為了確保測試的品質,請捨棄不可靠的測試。

  • 請考慮以工作負載擁有權為基礎的測試擁有權。 您的工作負載小組擁有其測試,不應依賴其他小組來測試其程序代碼。

  • 盡可能自動化測試。 自動化程式代碼可減輕工作負載小組的負擔,並強制執行一致的品質。

如需實作 DevOps 測試策略的詳細指引,請參閱 將測試向左移位與單元測試

需要 DevSecOps 做法作為標準作業程式的一部分。 您的工作負載小組應該瞭解與軟體開發和品質保證相關的安全性做法。 它們必須遵循這些做法,而不例外。 如需詳細資訊,請參閱 安全性開發生命週期指南

實作命名和標記資源的標準

實作標記和命名慣例是管理和組織 Azure 資源的最佳做法。 標記和命名慣例有助於根據一般屬性來識別、分類和分組資源,例如環境、應用程式、擁有者或成本中心。 它們也會跨訂用帳戶和資源群組啟用資源的安全性、自動化、報告和控管。

使用標準化標記和命名慣例的一些優點如下:

  • 它們提供資源識別和管理的一致性和清楚性,可促進跨 Azure 入口網站、PowerShell、CLI 和 API 的探索和搜尋。
  • 它們會針對計費、監視、安全性和合規性目的,啟用資源的篩選和分組。
  • 它們支持資源生命週期管理,例如布建、解除委任、備份和復原。
  • 對於安全性用途而言,這些是不可或缺的。 如果您遇到安全性事件,請務必快速識別受影響的系統、這些系統支援的功能,以及潛在的業務影響。

如需針對雲端資源使用命名慣例的詳細資訊,請參閱 定義您的命名慣例。 如需如何將元數據標籤套用至雲端資源的詳細資訊,請參閱 定義標記策略

Azure 指導

  • Azure DevOps 是一組服務,可用來建置共同作業、有效率且一致的開發實務。 Azure DevOps 會組合下列解決方案:

    • Azure Pipelines 提供組建和發行服務,以支援應用程式的 CI/CD。

    • Azure Boards 是一種 Web 型工作管理工具,可支援 Scrum 和 Kanban 等敏捷式做法。

    • Azure Repos 是支援 Git 分散式版本控制系統Team Foundation 版本控制 系統的版本控制工具。

    • Azure Test Plans 是以瀏覽器為基礎的測試管理解決方案,提供計劃性手動測試、使用者驗收測試、探勘測試,以及收集專案關係人的意見反應所需的功能。

    • Azure Artifacts 可用來讓開發人員有效率地共用其程式代碼及管理其套件。

  • azure GitHub Actions 是一種工具,可用來自動化 CI/CD 程式。 它會直接與 Azure 整合,以簡化部署。 您可以建立工作流程,以建置和測試存放庫的每個提取要求,或將合併的提取要求部署至生產環境。

  • GitHub Projects 是一種工作管理工具,可用來建立工作流程看板、報表、儀錶板和其他功能。

  • 低程式代碼與無程式碼工具包括:

  • Azure Resource Manager 範本Bicep 是可用來部署 IaC 的 Azure 原生工具。 Terraform 是另一個 Azure 支援的 IaC 工具,可用來部署和管理基礎結構。

  • Visual Studio 是一種強固的開發工具,可與 Azure 整合並支援多種語言。

  • GitHub Copilot 是一項 AI 服務,可作為配對程式設計人員,並在程式代碼時提供自動完成樣式建議。 Copilot 可在Visual Studio和其他數個開發工具中作為延伸模組使用。

  • Azure 負載測試 是完全受控的負載測試服務,可讓您藉由模擬應用程式的流量來產生大規模負載,而不論其裝載位置為何。

營運卓越檢查清單

請參閱一組完整的建議。