安心部署

已完成
使用可預測性達到所需的部署狀態。

建置工作負載供應鏈,可讓您在工作負載的裝載平臺、應用程式、數據和設定資源之間,一致地達到所有環境中可預測性的目標。 部署機制必須能夠自動化、測試、監視和版本控制。 它應該模組化,並準備好視需要執行。 它不應該以整合型端對端程式表示。 供應鏈不一定是為了更快速的執行,而是為了在多個反覆項目上達成一致性和自我檔。

工作負載小組負責供應鏈,因為它與自己的工作負載有關。

範例案例

Contoso Manufacturing 開發了 Java 型應用程式,可用來監視及優化其製造程式。 工作負載最近已移轉至 Azure,現在已在 Azure Spring Apps、適用於 MySQL 的 Azure 資料庫 和 Azure IoT 中樞 上執行。

透過程式代碼部署基礎結構

使用基礎結構即程式代碼 (IaC) 來定義已準備好生產之供應鏈的可重複層面。 偏好宣告式方法,而不是命令式方法。

宣告式 IaC 技術的設計考慮自動化和重複使用性。 您可以將基礎結構部署從個人卸除成工具,並達到一致的品質。

從基礎結構的觀點來看,擁有較少的技術選擇會移除工具的變異數,並讓設定漂移易於偵測。 維護也會比較容易。 如果您將選擇與小組的現有技能集一致,小組可以輕鬆地採用。

Contoso 的挑戰

  • 工作負載的內部部署版本使用腳本和手動步驟的組合來建置基礎結構,並在環境中部署應用程式。 在 Azure 移轉程式初期,小組對現有的命令式腳本進行了修改,以以新平臺為目標,以便盡可能重複使用現有的自動化程式代碼基底。 由於 Azure 和 Bicep 等 IaC 技術缺乏專業知識,因此也採取了這種方法。
  • 隨著移轉的進展,小組更熟悉平台,他們確信使用 IaC 方法搭配 Bicep 將是一個更好的解決方案。

套用方法和結果

  • 由於內部缺乏知識,小組會承包移轉工作,並將工作負載的部署自動化腳本延伸至有經驗的承包商,他們在專案的初始階段與開發小組合作,同時為小組的其餘部分提供知識轉移。
  • 產生的 Bicep 實作提供更可靠、可管理且有效率的方式,在 Azure 中布建基礎結構。 程式代碼現在更容易閱讀且可維護,VSCode 中具有絕佳的工具支援。 它也是完全等冪的,並簡化狀態管理,它們永遠無法完全完成先前/命令式版本。

將 IaC 視為與應用程式程式代碼相同

遵循 IaC 開發和維護的軟體建議:以仲裁方式模組化、避免自定義或低價值抽象概念,並遵循分層方法來反映不同的生命週期。 形成基礎層,其中較低層會保持不變,而上層會視需要變更。

部署成品,例如應用程式二進位檔、IaC 範本和參數,都是受攻擊面的一部分。 套用保證,例如秘密管理、訪問控制和其他安全性要素的原則。

成品體驗與應用程式程序代碼相同的工程嚴謹程度。 透過對等檢閱和測試的品質控制可讓您有信心進行部署。

分層方法可讓維護更容易,並建立界限,以建立明確的責任線。

將安全性控制新增至成品有助於在部署程式期間強化系統。

Contoso 的挑戰

  • 專案小組在移轉工作開始時有慷慨的預算,因此他們聘請了非常有經驗的承包商,這些承包商提供高質量和短時間內。 承包商使用個別存放庫進行開發,而且該存放庫並未定期針對安全性進行稽核,而主要應用程式程式代碼存放庫則為 。
  • 小組已準備好發行解決方案的重大重新設計,而部署程式代碼需要重大變更。 由於開發資源短缺,兩名實習生正在進行最新的一批變更。 當小組的其中一位資深開發人員被叫入協助實習生時,他注意到存放庫中的多個認可與小組的開發標準不相同,包括在程式代碼基底中硬式編碼 API 密鑰之類的應用程式秘密。

套用方法和結果

  • 小組決定將組建和部署程式代碼基底移至用於應用程式程式代碼的相同存放庫,並開始套用與程式代碼基底其他區域相同的工程嚴謹層級。 程序代碼會在第一次認可之前將程式代碼帶到小組標準中、移除應用程式秘密,並套用所有其他小組品質標準和工具。
  • 因此,小組已保護程式代碼基底的這個區段,同時提高程式代碼品質。 接下來,程式代碼基底的這個區域變更會遵循相同的標準,並利用用於核心應用程式程式代碼基底的相同工具,包括對等程式碼檢閱,以及使用品質和安全性工具自動掃描程序代碼。

將單一指令清單上的部署標準化

開發適用於所有環境的通用部署指令清單。 使用該指令清單作為綠地專案、累加式工作負載更新或災害復原的默認機制。

套用此方法可讓您移除維護多個資產的額外負荷。

如果發生災害,復原將會快速且可靠,因為您可以部署已嘗試和測試的指令清單,而不是建立即興的環境。

Contoso 的挑戰

  • Contoso Manufacturing 會使用完全自動化的管線,將基礎結構、應用程式程式代碼和組態變更部署到開發和生產環境。 應用程式設定為在單一區域中具有高可用性。 除了 MySQL 資料庫之外,大部分的應用程式元件都是無狀態的。 資料庫會備份為已建立的 RTO/RPO 所指定,且備份會復寫至次要區域。
  • 如果主要區域發生重大或重大失敗,小組會計劃建置新的環境,以在次要區域中裝載應用程式。 在計劃性演練中測試DR程式時,嘗試在次要區域中重新建立環境時,部署腳本會失敗,因為缺少數個資源和其他服務限制的可用性。

套用方法和結果

  • 小組會藉由使用兩個區域中可用的對等 SKU 來取代某些資源,讓某些選項可設定為不同的有效值,藉以減輕在次要區域中嘗試布建時所遇到的問題。
  • 練習提高了小組從重大基礎結構失敗中復原的能力的信心。

檢定您的知識

1.

將基礎結構部署為程式代碼如何協助您自信地部署?

2.

將 IaC 程式代碼移至與應用程式程式代碼相同的存放庫如何協助 Contoso 小組有信心部署?

3.

下列哪一項有助於確保部署DR環境有效率?