採用安全部署做法
在開發週期中,工作負載成品會在實作和測試及修正錯誤 (Bug) 時經歷許多變更。
部署流程必須遵循標準作業程序。 任何變更都必須以相同的嚴謹層級進行部署。 此原則同樣適用於程式碼、設定和所有相關成品。 關鍵是儘快套用安全做法,以便您在生產環境中具有可預測性。 即使錯誤到達客戶,您也應該能夠儘快推出復原變更。
範例案例
Contoso Air 開發了 Web 應用程式,可讓客戶直接透過應用程式預訂航班。 該應用程式已在生產環境中執行超過一年。
該應用程式完全部署在 Azure 中,並建置在 Azure App Service、Azure Cosmos DB、Azure Functions、Azure Logic Apps 和 Azure 服務匯流排上。
編纂自動化部署標準
使用自動化部署流程 (例如管線) 將部署任何變更的流程標準化。 所有環境都必須使用管線。將每個環境的資產和版本分類,使其易於追蹤和識別。
一致的部署方法可減少因流程錯誤和差異所造成的問題,並可讓您將精力集中在工作負載考量上。
標準化可確保部署能安全、可靠地完成,並具有可重複性。
分類可讓您輕鬆地檢視先前部署的記錄和已發生的問題。 您可以使用該資訊來加速復原和前推作業。
Contoso 的挑戰
- Contoso Air 工作負載小組會使用自動化組建和部署管線,但部署通常需要在整個作業中手動介入,才能變更和驗證各種組態設定。
- 由於手動介入,部署中經常發生錯誤,因此每次發行對整個小組來說都是非常緊張和干擾性的事件。 手動介入也使得部署失敗時難以復原。
套用方法和結果
- 小組會配置時間,將設定變更自動化為部署的一部分,並將新增的功能整合到現有的部署管線中。
- 與每個環境相關聯的組態設定會外部化至個別 JSON 檔案,這些檔案會針對額外的可追溯性儲存至原始檔控制。 視為祕密的設定會儲存至祕密保存庫存放區,這些存放區也會配置給每個環境。
- 現在會記錄部署期間的所有變更,進而達到完整的可追溯性,以協助疑難排解工作和稽核。 小組也會新增自動化測試,以驗證管線的設定變更。
- 接下來,小組將致力於完全自動化復原,以進一步將流程最佳化。
- 由於新的自動化,部署更加可靠且可預測,而且團隊士氣也隨之上升。
經常部署
定期部署小型增量更新。
使用此方法可協助從專案管理的觀點管理使用者案例和工作項目,並降低部署失敗時發生大規模問題的風險。
Contoso 的挑戰
- 在過去,小組的部署流程一直每隔三到四個月就需要執行一次主要發行。 這種做法會使驗證發行變得困難。 小組也很難針對這麼多移動部件的問題進行疑難排解。
- 需要發行中期 Hotfix 或必須復原並放棄的有問題發行已發生多次。
- 發行是高度緊張的,並被視為「全體動員」的情況,這一直對團隊士氣產生負面影響。
套用方法和結果
- 在最新的有問題的發行之後,利害關係人要求小組想出更好的部署方法。 小組決定變更其做法,改為使用頻繁、小型的變更。 他們會將每個發行的範圍限制為一個或 (最多) 一些經過徹底測試的相關變更,因為組建會在較低環境中升級。
- 因此,發行變得更有效率,品質也隨之增加。 更容易驗證發行,而且更容易針對問題進行疑難排解。
- 擁有可預測的定期發行有助於恢復小組的信心和士氣。 使用者也受益匪淺。 隨著發行品質的提高,他們看到較少的中斷,而且能夠更快存取新功能。
使用漸進式曝光方法
以盡職方式逐步推出更新。 使用能讓您逐步增加執行個體和客戶數目,直到全部都安全地採用更新的部署模型。
以受控制的方式測試每個更新,以便在生產初期修正問題。 避免推出會影響整個客戶群的錯誤更新。
測試更新是否回溯和向前相容。
Contoso 的挑戰
- 小組發現將其方法切換為建立較小的發行會有很大的好處。 他們現在投入較少的時間到發行,並感到精力充沛,能繼續走向進一步改進卓越營運的道路。
- 當他們試驗新功能時,使用者尚未收到某些變更,或由於其帶來的陡峭學習曲線,導致支援來電增加。
- 他們想知道如何繼續對其應用程式進行創新,以最大化其使用者的生產力,同時仍然將發行可能不受歡迎或不容易使用之功能的影響降至最低。
套用方法和結果
- 他們決定使用功能旗標實作功能發行模型,以增量方式向使用者公開新功能。
- 在新功能的規劃階段中,會定義準則來選取會先將功能公開給哪些使用者。 系統會選取一小群使用者,讓其先接收新功能。 視使用者意見反應而定,該功能會接連部署至較大的群組,直到整個使用者母體都執行新版本為止。 隨著更多使用者接觸新功能,支援小組會記錄支援案例的結果以在內部共用,並可能填入外部常見問題集。