大家好,我是伐伐伐伐木工
如何判斷一個系統或服務的服務質量有多好 ?
今天要與大家分享 SLA,本篇內容的重點如下
服務級別協議 SLA (Service Level Agreement) 是服務提供者對於其服務水準的承諾。明確定義了衡量服務的標準跟方法,讓客戶或是使用者可以清楚知道當未達到服務水平時的處罰與補救措施。
常見的 SLA 會包含下列項目
聽起來有點抽象,為了讓大家可以更清楚理解,我們來看看 AWS EC2 SLA 作為範例,連結
如果有興趣也可以參考其他雲端廠商 SLA 協議,參考連結
SLA 是可用性中重要的衡量指標,服務提供商與使用者會透過此指標來客觀的評估服務的水準,服務正常運行為 UpTime,反之,當服務發生不可用或是中斷時間稱之 Downtime。其指標越高代表服務越可靠,停機時間越短。
photo credit :Why 99.99% uptime or SLA is bad
接著我們來看可用性時間,下表為換算 SLA 中幾個 9 與 UpTime 及 Downtime 時間關係
SLA | Downtime | UpTime |
---|---|---|
99.999% | 26 seconds | 729 hours, 59 minsutes, 34 second |
99.99% | 4 minutes, 22 seconds | 729 hours, 59 minsutes, 34 seconds |
99.95% | 21 minutes, 54 seconds | 729 hours, 38 minsutes, 6 seconds |
99.90% | 43 minutes, 49 seconds | 729 hours, 16 minsutes, 12 seconds |
99.5% | 3 hours, 39 minutes, 8 seconds | 726 hours, 21 minutes |
99.0% | 7 hours, 18 minutes, 17 seconds | 722 hours, 42 minutes |
如果您所使用的系統服務提供的 SLA 為 99.99%,聽起來穩定,但對於服務提供商來說就是很大的挑戰,從上表可以得知,99.99% 意味著當系統發生異常時 5 分鐘之內必須修復好恢復使用,這其中還包含發現問題到修復完畢,然後系統重新上線完成的時間(壓力好大先睡一覺在說?)。
SLA 是對客戶的協議(Agreenents),是系統服務對外面使用者的承諾,對內而言 RD 所開發的服務需要設定目標來滿足 SLA,SLA 則和 SLO 與 SLI 有密切關係
SLI (Service Level Indicator) : 衡量服務性能可靠性的指標
常見的 SLI 指標如下
SLO (Service Level Objective) : 為 SLI 設定可靠性的目標
在內部設定 SLOs 指標時會相較 SLA 更為嚴格。舉例來說
SLA 定義回應時間是 300ms,則在內部 SLO 目標則不會超過 200ms, 才更有機會達標。
photo credit : The Art of SLOs
前面介紹了 SLA 基本概念,還有 SLA、SLO、SLI 三者的關係,接著探討 SLA 是如何計算出來的。假設服務架構如下,服務中有應用程式(Web)與中間應用程式(Application)和 SQL 數據庫(SQL)三個組件所組成。
單獨來看,各自的可用性分別是
整體服務的可用性是多少呢 ?
整體 SLA = Web SLA * Aplication SLA * SQL SLA
99.95% * 99.9% * 99.99% = 99.84%
最終答案是 99.8%,根據 uptime.is 的計算,允許 downtime 的時間為
photo credit : https://uptime.is/
假設對外服務的承諾 SLA 是 99.9%,那麼就要思考架構上要如何優化,才有辦法從 99.8% 變為承諾的 99.9%。要注意的是,SLA 目標設定越高所需要花費及投入的成本更高,如果身為管理者,希望減少停機的時間,勢必要投入額外的基礎建設資源或是故障移轉機制,就需要額外思考其額外多出的成本是否值得投入。
如果想了解更多SLA、SLO、SLI 三者關係,個人推薦觀看下面影片,可以有更清楚的理解
以上是今天關於 SLA 的內容分享,下一篇要來探討 DR(Disaster Recovery),如果有任何疑問或想法,歡迎留言提出討論 !
軟體技術架構如何正確與商業需求快速對齊:談 MAU 換算至 RPS,SLA 回推至 SLI
Cloud SLAs punish, not compensate
Why 99.99% uptime or SLA is bad
How do you calculate the compound Service Level Agreement (SLA) for cloud services?
SLA Vs SLO: Tutorial & Examples