採用安全部署做法

已完成
在部署程式中實作護欄,以將錯誤或非預期狀況的影響降到最低。

在開發周期期間,工作負載成品會在實作和測試及修正 Bug 時經歷許多變更。

部署程式必須遵循標準作業程式。 任何變更都必須以相同層級的嚴謹進行部署。 此原則同樣適用於程式代碼、組態和所有相關成品。 關鍵是儘早套用安全做法,以便您在生產環境中具有可預測性。 即使錯誤到達客戶,您也應該能夠儘快推出復原變更。

範例案例

Contoso Air 開發了 Web 應用程式,可讓客戶直接透過應用程式預訂航班。 應用程式已在生產環境中執行一年多。

應用程式已完全部署在 Azure 中,並以 Azure App 服務、Azure Cosmos DB、Azure Functions、Azure Logic Apps 和 Azure 服務匯流排 為基礎。

Codify 自動化部署標準

使用自動化部署程式,例如管線,標準化部署任何變更的程式。 所有環境都必須使用管線。分類每個環境的資產和版本,使其易於追蹤和識別。

一致的部署方法可減少因進程錯誤和差異所造成的問題,並可讓您將精力集中在工作負載考慮上。

標準化可確保部署能安全地、可靠地完成,並具有重複性。

分類可讓您輕鬆地檢視先前部署的記錄和已發生的問題。 您可以使用該資訊來加速復原和向前復原作業。

Contoso 的挑戰

  • Contoso Air 工作負載小組會使用自動化建置和部署管線,但部署通常需要在整個作業中手動介入,才能變更和驗證各種組態設定。
  • 由於手動介入,部署中經常發生錯誤,因此每個版本對於整個小組來說都是非常緊張和干擾性的事件。 手動介入也使得部署失敗時難以復原。

套用方法和結果

  • 小組會配置時間,將設定變更自動化為部署的一部分,並將新增的功能整合到現有的部署管線中。
  • 與每個環境相關聯的組態設定會外部化至個別 JSON 檔案,這些檔案會儲存至原始檔控制,以取得額外的可追蹤性。 視為秘密的 設定 也會儲存至秘密保存庫存放區,這些存放區也會配置給每個環境。
  • 所有變更現在都會記錄在部署期間,達到完整的可追蹤性,以協助疑難解答工作和稽核。 小組也會新增自動化測試,以驗證管線的組態變更。
  • 接下來,小組將致力於完全自動化復原,以進一步優化程式。
  • 由於新的自動化,部署更加可靠且可預測,而且團隊士氣也隨之上升。

經常部署

定期部署小型增量更新。

使用此方法可協助使用者案例和工作專案從專案管理的觀點進行管理,並降低部署失敗時發生大規模問題的風險。

Contoso 的挑戰

  • 在過去,小組的部署程式一直每隔三到四個月執行一次主要版本。 這種做法會使驗證版本變得困難。 小組也很難針對許多行動元件的問題進行疑難解答。
  • 需要中版本熱修正或必須回復並放棄的有問題的版本已發生多次。
  • 釋放是高度緊張的,並被視為“所有手在甲板上”的情況,這一直對球隊士氣產生了負面影響。

套用方法和結果

  • 在最新的問題版本之後,項目關係人要求小組想出更好的部署方法。 小組決定變更其做法,以偏向頻繁、小型的變更。 它們會將每個版本的範圍限制為一個或(最多)一些經過徹底測試的相關變更,因為組建會在較低環境中升級。
  • 因此,版本變得更有效率,品質也隨之增加。 發行更容易驗證,問題較容易進行疑難解答。
  • 定期有可預測的版本步調有助於恢復團隊的信心和士氣。 使用者也受益匪淺。 隨著發行品質的提高,他們看到較少的中斷,並更快存取新功能。

使用漸進式曝光方法

逐步推出更新,並盡職盡責。 使用部署模型,讓您能夠逐步增加實例和客戶的數目,直到所有實例都安全地採用更新為止。

以受控制的方式測試每個更新,以便在生產初期修正問題。 避免推出會影響整個客戶群的錯誤更新。

測試更新是否回溯和向前相容。

Contoso 的挑戰

  • 小組看到,從切換其方法來製作較小的版本,會有很大的好處。 它們現在投入較少的時間到發行,並感到振作,以繼續走進進一步改進營運卓越的道路。
  • 當他們試驗新功能時,使用者尚未收到某些變更,或由於他們帶來的學習曲線陡峭,導致支援呼叫增加。
  • 他們想知道他們如何繼續創新應用程式,以最大化使用者的生產力,同時仍然將發行可能不受歡迎或容易使用的功能的影響降到最低。

套用方法和結果

  • 他們決定使用功能旗標,實作功能發行模型,以累加方式向用戶公開新功能。
  • 在新功能的規劃階段中,會定義準則來選取哪些使用者會先公開給功能。 系統會選取一小群使用者,先接收新功能。 視使用者意見反應而定,此功能會部署至連續較大的群組,直到整個使用者母體擴展執行新版本為止。 隨著更多用戶接觸新功能,支援小組會記錄支援案例的結果,以在內部共用,並可能填入外部常見問題。

檢定您的知識

1.

下列哪一項是安全部署實務的基本原則?

2.

下列哪一項是建議的部署策略?

3.

Contoso 如何採用漸進式曝光的方法?