可靠性設計原則
本文翻譯自:Microsoft 發布 Reliability design principles
原文連結:https://github.com/MicrosoftDocs/well-architected/blob/main/well-architected/reliability/principles.md
翻譯日期:2024-12-27
服務中斷與故障對於所有工作負載(workload)來說都是嚴重的問題。可靠的工作負載必須要能安然度過任何可能造成服務中斷與故障的事件,並持續穩定提供其原本的功能。可靠的工作負載同時必須具有韌性,以在可接受的時間內偵測、承受故障並恢復運作。最後,可靠的工作負載還必須可用,以便使用者能在約定的期間內以約定的服務品質水準存取工作負載。
假設故障不會發生是不切實際的,特別是當工作負載建置在分散式系統上執行時,是可能發生有些元件故障,而其他元件是可以繼續運作的情況。在某些狀況下,使用者體驗可能會受到影響,因而損害業務目標。
工作負載的架構,應該在程式碼、基礎架構與運作等方面具有可靠性保證。架構設計的選擇不應改變業務需求,因為此類改變應被視為影響程度重大的權衡取捨。
設計原則的目的,是在開發生命週期全程中,指引您考慮到可靠性的各個面向。從建議的方法開始著手,依循設計原則並驗證這樣做所帶來的好處。設定策略之後,請使用可靠性設計檢查清單來推展後續行動。
如果未應用這些原則至您的架構設計中,則可能無法預測或處理正式環境中的問題,結果導致服務中斷或造成財物損失。在關鍵工作負載未應用這些設計原則,可能會危及安全性。
針對業務需求進行設計
目標:收集業務需求,並專注於工作負載的預期作用
架構設計必須顧及到工作負載的使用者體驗、資料、工作流程以及特性。業務需求必須清楚說明期望架構設計能達成什麼樣的目標與狀態。在指定投資的情況下,目標必須可以實現且經過與團隊協商,記錄下投資是否能實現目標的可行性評估,以及與團隊協商的細節,據以選擇適合的技術、落實到後續營運中。
| 方法 | 效益 |
|---|---|
| 透過為各個元件、系統流程與系統整體指標訂定目標值,以量化成果。這些目標值是否能提升使用者流程可靠性? | 指標可將期望量化,讓您能了解系統的複雜性,並判斷這些複雜性衍生的成本是否在預算範圍內。目標值表示理想狀態。您可 以使用這些值作為測試閾值(threshold),幫助您偵測與理想狀態的差異以及返回目標狀態所需的時間。合規性要求也必須確保範圍內的流程產生可預測的結果。優先考慮這些流程,能讓您關注最重要的領域。 |
| 了解平台承諾。請考量服務的限制、配額、區域與容量限制。 | 服務水準協議(SLA)視服務而異,並非所有服務與功能的涵蓋範圍都相同,也不是所有服務或功能在所有區域都可以使用。大多數的訂閱資源限制都是按區域劃分。充分了解涵蓋範圍與限制,可以幫助您偵測變動(drift)並建立韌性與復原機制。 |
| 判斷相依性及其對韌性的影響。 | 追蹤其他團隊或第三方開發的基礎架構、服務、API和功能與工作負載的相依性,有助於您確認工作負載是否能在沒有外部依賴的狀況下運作。它還可以幫助您了解連鎖故障(cascading failures)並改善下游系統的運作。當您使用容易發生故障的外部服務時,開發人員可以採用韌性設計模式(resilient design pattern) 處理可能會發生的故障。 |