隨著規劃完成,下一個階段是在開發環境中建置和設定解決方案,並遵循最佳做法,並透過測試確保品質。 雲端原生解決方案會使用可調整、復原且可觀察的架構模式,將 Azure 服務的優點最大化。 在非生產環境中建設,透過完善的測試和自動化流程,確保質量和準備狀態以便生產環境部署。
開發新的雲端原生解決方案
雲端原生開發需要結構化的方法,以便從一開始就整合品質做法。 本指南可協助您透過經過實證的開發做法,建置可靠、安全且可調整的解決方案。
在開發期間套用 Well-Architected 架構原則
雲端原生解決方案因一致應用 Well-Architected 架構(WAF)原則而受益,該架構提供可有效指引雲端原生開發的基本原則。 將這五個要素整合到您的開發程式中,以建立健全的應用程式,以在生產環境中執行良好。
在非生產環境中開發解決方案
建立模擬生產配置的開發環境。 設定非生產環境(開發、測試、QA),以密切反映生產設定。 測試環境越接近生產環境,您就越能有信心確保在發布時一切正常運作。 將新功能新增至現有工作負載時,這種方法特別重要。
使用能代表生產數據量的實際數據集。 使用符合生產工作負載大小和複雜度的數據進行測試。 大型數據集揭示了效能瓶頸以及小型測試數據集未能發現的擴展問題。 匿名生產數據或產生綜合數據,以保留實際數據的統計屬性。
針對非生產環境實作成本控制。 使用 Azure DevTest Labs 或資源排程,在未使用時自動啟動和停止資源。 為開發工作負載套用適當的服務層級,並實作消費限制,以避免非預期的成本,同時維持測試效率。
如需詳細資訊,請參閱在WAF中 設定測試環境 。
使用原始碼控制和 CI/CD 實施變更
將所有程式代碼和組態儲存在 Git 存放庫中。 在版本控制中追蹤應用程式程式代碼、基礎結構範本、部署腳本和組態檔。 這種做法提供變更的完整歷程記錄,並可讓小組成員共同作業。
將開發工作分成小型且頻繁的提交。 完成功能開發時,應以可獨立合併和測試的小增量進行。 此方法可減少整合衝突,並讓您在發生問題時更容易識別問題的來源。
自動在每次程式碼變更時進行建置與測試。 設定 CI/CD 管線,以在認可變更時自動編譯程式代碼、執行測試,以及部署到非生產環境。 快速意見反應迴圈可協助開發人員快速捕捉並修正問題。
使用功能旗標來控制新功能的發行。 實作功能切換,可讓您將程式代碼部署至生產環境,同時將新功能保持停用,直到它們準備好供使用者使用為止。 此策略會將部署與發佈分開,並啟用更加安全、更受控制的部署。
在開發期間實作監視
將 Azure 監視器和 Application Insights 整合到您的應用程式程式代碼中。 新增監視數據收集,以追蹤關鍵效能計量、用戶互動和系統健康情況指標。 在開發期間設定這些工具,以確保它們可在生產環境部署之前正確運作。
在整個應用程式中實作結構化記錄。 使用一致的記錄格式,並包含內容資訊,例如使用者識別碼、要求標識碼和商務程式識別碼。 將您的記錄結構為 JSON 物件,以啟用強大的查詢和分析功能。
設定重要計量和失敗狀況的警示。 設定主動式監視,以在錯誤率增加、回應時間降低或商務計量落在預期範圍內時通知您。 根據您的服務等級目標和商務需求定義警示閾值。
建立儀錶板,以提供系統效能的可見度。 建置監視儀錶板,以顯示應用程式、基礎結構和商務程式的健康情況。 包含對技術團隊和業務利益相關者都重要的指標,以支持數據驅動的決策。
如需詳細資訊,請參閱在 WAF 中設計監視系統和檢測應用程式。
使用測試驗證雲端原生解決方案
完整的測試會驗證您的解決方案是否符合商務需求,並在真實世界條件下可靠地執行。 每種測試類型在確保解決方案品質方面都有特定用途。
執行端對端功能測試,以驗證商務工作流程。 使用實際數據和互動,測試從驗證到交易完成的完整使用者案例。 驗證新功能是否正常運作,且現有功能在變更后保持不變。 執行回歸測試以攔截新開發的意外副作用。
與商務項目關係人進行使用者驗收測試。 請與實際使用者或商務代表互動,以驗證解決方案是否符合其需求和期望。 讓他們在UAT環境中測試重要案例,並提供可用性和功能的意見反應。 在繼續進行生產部署之前,先取得項目關係人正式核准。
在實際情況下執行負載測試,以驗證效能。 使用 Azure 負載測試 來模擬預期的使用者數量和數據輸送量。 在尖峰負載層級和之後進行測試,以找出效能瓶頸和調整限制。 測量回應時間、輸送量和資源使用率,以確保您的解決方案符合效能需求。
執行安全性和合規性測試,以識別弱點。 在應用程式程式代碼、容器映像和基礎結構設定上執行自動化安全性掃描。 使用 Microsoft Defender for Cloud 來檢查安全配置錯誤和合規性違規。 在部署之前解決高風險弱點,並針對已接受的風險實作補償控件。
在生產環境部署之前解決重大問題。 將測試階段視為在繼續之前必須通過的品質閘道。 修正防止符合服務等級協定的效能問題,解決造成重大風險的安全性弱點。 解決影響核心商務程式的功能缺陷。 記錄已知的低優先順序問題,並制定未來的解決計劃。
維護自動化單元和整合測試套件。 建立完整的自動化測試,以驗證個別元件及其與外部相依性的互動。 請在 CI/CD 管線中執行這些測試,並在每次修正錯誤後執行,以防止發生回歸。 強大的自動化測試套件在雲端原生環境中促使可靠的持續交付。
建立可重複使用的基礎結構
一旦現代化解決方案在非生產環境中通過所有測試之後,您應該擷取基礎結構設定和設定作為程序代碼,以便在生產環境與未來環境中輕鬆復寫。 可重複使用的基礎結構表示使用基礎結構即程序代碼 (IaC) 範本和自動化,以取得一致性和速度。
建立經驗證組態的 IaC 範本。 取得測試環境的最終架構(其會反映您想要在 Prod 中的內容),並加以編纂。 使用 Bicep、 Terraform 或 Azure Resource Manager 範本 來定義您的基礎結構。 把這些範本參數化,讓它們能在開發、測試、生產等不同階段重複使用,並稍微調整名稱或大小。 此設定可確保您所建立的生產環境符合您測試的內容。 它可避免在手動按兩下 Azure 入口網站以建立資源時發生人為錯誤。 這也表示,如果您需要重新建立環境,例如災害復原或部署到新的區域,您就已備妥基礎結構部署。 如需詳細資訊,請參閱 CAF 管理 - 管理程式代碼型部署。
將範本儲存在版本控制中。 將您的基礎結構程式代碼簽入 Git 存放庫(應用程式程式代碼或個別存放庫中)。 使用 GitHub 或 Azure DevOps 以適當的版本控制來管理 IaC 資產。 版本控制可啟用程式代碼檢閱、支援小組共同作業,並鼓勵跨專案重複使用範本。 此方法提供基礎結構變更的完整可追蹤性,並在發生問題時支援復原功能。
自動化相依性安裝和設定。 建立腳本或管線工作來部署這些範本,並同時處理任何必要的設定或植入工作。 使用 Azure Pipelines、 GitHub Actions來執行部署作業,以採用 IaC 範本並部署至目標訂用帳戶/資源群組。 自動安裝應用程式依賴項、配置設定和機密管理。 目標是做到單鍵(或單一命令)環境設置:從無到有,建立與您測試完全相符的可運行環境。
測試 IaC 和自動化端對端。 使用個別的 Azure 訂用帳戶或資源群組作為沙箱,並練習使用範本和腳本從頭開始部署整個環境。 測試您的 IaC 範本、管線和腳本是否可以從零建立完整的基礎架構堆疊。 測試不同的部署案例,包括初始部署、組態更新和復原程式,以確認自動化正常運作。
欲了解更多資訊,請參閱 WAF 中的「設計工作負載開發供應鏈 與 基礎建設程式碼 」。
建立部署文件
即使使用自動化,在部署上擁有良好的文件對於稽核、讓新小組成員上線,以及未來維護而言也至關重要。 部署檔應涵蓋人類可讀取格式的設定、程序和復原步驟。
文件的組態設定和操作步驟。 記錄可存取檔中的所有環境特定設定、連接字串、服務端點和安全性設定。 包含逐步部署指示、必要條件需求和部署后驗證步驟。 本文件可促成一致的部署,並支援在發生問題時進行疑難解答。 如果新進工程師必須進行部署,他們可以閱讀這份文件,跟隨步驟或瞭解管道的輸出。
更新回滾和復原程序。 完成測試之後,請正式化步驟,以在發生部署問題時還原變更。 包含復原觸發程式、數據備份和還原程式,以及復原驗證步驟。 定期測試回復和復原程式,以確保其在需要時正常運作。 此準備可減少停機時間。
請將所有文件收集到一個集中地點。 使用 SharePoint、GitHub 或 Wiki 來儲存此資訊。 請確定小組和支持人員知道哪裡可以找到它。 在高壓力事件中,手邊有明確的文件可幫助解圍。