術(shù)語定義
可靠性:系統(tǒng)是否具備無差錯地執(zhí)行預(yù)期操作的能力。
可用性:為了執(zhí)行預(yù)期操作,系統(tǒng)當(dāng)前可運(yùn)行的能力。
可用性百分比:(該期間的總秒數(shù)-系統(tǒng)宕機(jī)的秒數(shù))/該期間的總秒數(shù)。
風(fēng)險緩和:通過降低風(fēng)險發(fā)生的可能性,或者降低風(fēng)險發(fā)生時的嚴(yán)重性,來降低風(fēng)險的影響。
風(fēng)險管理:在解決風(fēng)險和緩和風(fēng)險之間做出選擇。
比賽日:通過測試來觸發(fā)系統(tǒng)中某個失敗模型,然后觀察你的操作人員和工程師如何進(jìn)行響應(yīng),包括他們?nèi)绾螆?zhí)行恢復(fù)計劃和容災(zāi)計劃。
優(yōu)雅降級:在當(dāng)前服務(wù)缺少某個故障服務(wù)的結(jié)果時,可以通過降低工作量來盡可能地完成工作。
優(yōu)雅補(bǔ)償:即使無法完全滿足用戶的需求,但是按照為用戶提供價值的方向去改進(jìn)。
服務(wù)等級協(xié)議:是一個提供某種級別可靠性和性能的承諾。
可用性
導(dǎo)致低可用性的原因:
- 資源耗盡
- 預(yù)期之外的壓力變化
- 流動行為的增加
- 外部依賴
- 技術(shù)債務(wù)
提高應(yīng)用程序可用性的五個要點(diǎn):
- 時刻考慮應(yīng)對故障
- 時刻考慮如何伸縮
- 緩和風(fēng)險
- 監(jiān)控可用性
- 服務(wù)器監(jiān)控
- 配置變化監(jiān)控
- 應(yīng)用程序性能監(jiān)控
- 人為測試
- 報警
- 以預(yù)測和確定的方式應(yīng)對可用性問題
風(fēng)險管理
收集風(fēng)險模型的來源:
- 開發(fā)人員的頭腦風(fēng)暴
- 已知的重點(diǎn)售后支持問題
- 已知的安全風(fēng)險和漏洞
- 已知的系統(tǒng)不完善或缺失的能力
- 已知的性能瓶頸點(diǎn)
- 已知的流量峰值和變化
- 來自于業(yè)務(wù)負(fù)責(zé)人、支持人員或者用戶的特殊考慮
- 已知的系統(tǒng)技術(shù)債務(wù)
管理系統(tǒng)中的風(fēng)險的基本步驟:
- 識別風(fēng)險
- 消除最嚴(yán)重的風(fēng)險
- 風(fēng)險緩和
- 定期檢查
風(fēng)險模型:

風(fēng)險ID:風(fēng)險的唯一標(biāo)識。
系統(tǒng):包含風(fēng)險的系統(tǒng)、子系統(tǒng)或者模塊的名稱。(如:“前端”、“主數(shù)據(jù)庫”、“服務(wù)A”)
所有人:負(fù)責(zé)該風(fēng)險的個人(或者團(tuán)隊(duì))的名稱,同時也負(fù)責(zé)制訂該風(fēng)險的緩和計劃和解決計劃。
風(fēng)險描述:該風(fēng)險的概要描述。
標(biāo)識日期:識別該風(fēng)險并將其添加到模型中的日期。
可能性:該風(fēng)險發(fā)生的可能性(低、中、高)。
嚴(yán)重性:該風(fēng)險發(fā)生的嚴(yán)重性或者影響(低、中、高)。
風(fēng)險緩和計劃:描述了可以使用的或者正在使用的,用來降低該風(fēng)險嚴(yán)重性或者可能性的風(fēng)險緩和措施。
狀態(tài):該風(fēng)險的當(dāng)前狀態(tài)。這個值通常是“活躍”、“已緩和”、“正在修復(fù)”或者“已解決”等內(nèi)容。
ETA:該風(fēng)險距離計劃解決日期(如果有的話)的估計時間。
監(jiān)控:是否對該風(fēng)險的發(fā)生進(jìn)行了監(jiān)控。如果是,則包含實(shí)現(xiàn)監(jiān)控的步驟。如果沒有監(jiān)控該風(fēng)險,應(yīng)該標(biāo)明原因,以及計劃對其進(jìn)行監(jiān)控的估計時間。
觸發(fā)計劃:如果該風(fēng)險真的發(fā)生,計劃如何來處理它。觸發(fā)計劃通常是一個管理層面的計劃,而不是一個事件-響應(yīng)的計劃。
備注:記錄任何不適合記錄在風(fēng)險描述中,或者不屬于風(fēng)險描述的信息。
跟蹤ID: 如果通過一個缺陷跟蹤系統(tǒng)或里程碑跟蹤系統(tǒng)來管理風(fēng)險,可以用該列來記錄該風(fēng)險在系統(tǒng)中的跟蹤ID。
歷史:該風(fēng)險在過去是否已經(jīng)發(fā)生過?什么時間?發(fā)生頻率?等等
定期維護(hù)風(fēng)險模型(如:每月、每個季度):
- 發(fā)現(xiàn)新風(fēng)險
- 刪除舊的風(fēng)險
- 更新可能性和嚴(yán)重性
- 檢查優(yōu)先級高的風(fēng)險
- 檢查優(yōu)先級低的風(fēng)險
服務(wù)和微服務(wù)
定義服務(wù)的指導(dǎo)原則:
- 特定的業(yè)務(wù)需求
- 清晰和獨(dú)立的團(tuán)隊(duì)所有權(quán)
一個單獨(dú)的服務(wù)應(yīng)該由一個3人到8人的開發(fā)團(tuán)隊(duì)來負(fù)責(zé)和運(yùn)行。這個團(tuán)隊(duì)負(fù)責(zé)該服務(wù)的所有方面。
- 清晰和獨(dú)立的團(tuán)隊(duì)所有權(quán)
- 天然隔離的數(shù)據(jù)
- 共享的能力/數(shù)據(jù)
如何響應(yīng)服務(wù)故障?
- 可預(yù)測
- 可理解
- 對當(dāng)前情形是合理的
如何確定故障?
- 亂碼響應(yīng)
- 表示致命錯誤發(fā)生的響應(yīng)
- 結(jié)果可以理解但是所需的結(jié)果不匹配
- 結(jié)果超出預(yù)期范圍
- 沒有接收到響應(yīng)
- 接收響應(yīng)很慢
如何讓應(yīng)用程序具有伸縮性
什么是“兩次失誤的高度”?
如果你曾經(jīng)操作過無線電控制(R/C)飛機(jī),可能聽說過那句話“讓你的飛機(jī)保持兩次失誤的高度”。
當(dāng)你學(xué)習(xí)如何操作R/C飛機(jī),尤其是開始學(xué)習(xí)如何進(jìn)行特技飛行時,你會學(xué)得很快。失誤其實(shí)就相當(dāng)于高度,出現(xiàn)一個失誤,你就失去一定的高度。當(dāng)你失去太多高度時,壞事就發(fā)生了。因此,讓你的飛機(jī)保持“兩次失誤的高度”意味著讓你的飛機(jī)飛得足夠高,從而有足夠的高度從兩個不相關(guān)的失誤中恢復(fù)飛行。
為什么是兩次失誤?這很簡單。你總是希望讓飛機(jī)飛得足夠高,以便可以從一次失誤中恢復(fù)飛行?,F(xiàn)在,假設(shè)你犯了一個失誤,失去了一些高度。在從這個失誤的恢復(fù)過程中,你還會希望飛得足夠高,從而保證能夠從另一次失誤中恢復(fù)飛行。你可以想象一下:在恢復(fù)飛行的過程中,你通常壓力很大,而且可能處于一種驚恐的情緒中,很可能做出一些反常的事情——正是這種情形讓你可能產(chǎn)生另一個失誤。因此如果你飛得不夠高,就會墜機(jī)。
換一種角度說,如果你能夠飛行兩次失誤的高度,你總有一次從失誤中恢復(fù)的備份方案,即使你正在從一次失誤中恢復(fù)。
什么是“由獨(dú)立團(tuán)隊(duì)負(fù)責(zé)的服務(wù)架構(gòu)(STOSA)”?
STOSA對于由多個開發(fā)團(tuán)隊(duì)來負(fù)責(zé)并管理一個或多個系統(tǒng)服務(wù)的大型組織來說,是一個重要的指導(dǎo)原則。
達(dá)到STOSA,要滿足的條件:
- 有一個基于服務(wù)或者微服務(wù)架構(gòu)建立的應(yīng)用程序。
- 有多個開發(fā)團(tuán)隊(duì)負(fù)責(zé)構(gòu)建和維護(hù)這個應(yīng)用程序。
- 程序中的所有服務(wù)必須分配給某個開發(fā)團(tuán)隊(duì)。
- 不允許有服務(wù)被分配給多個開發(fā)團(tuán)隊(duì)。
- 一個開發(fā)團(tuán)隊(duì)可能會負(fù)責(zé)多個服務(wù)。
- 開發(fā)團(tuán)隊(duì)負(fù)責(zé)管理服務(wù)的所有方面,從服務(wù)架構(gòu)到設(shè)計再到開發(fā)、測試部署、監(jiān)控和故障處理。
- 服務(wù)之間有清晰的邊界,包括文檔編寫良好的API接口。
- 各服務(wù)負(fù)責(zé)維護(hù)之間的服務(wù)等級協(xié)議,開發(fā)團(tuán)隊(duì)負(fù)責(zé)對服務(wù)進(jìn)行監(jiān)控和報警。

服務(wù)所有者負(fù)責(zé):
- API設(shè)計
- 服務(wù)開發(fā)
- 數(shù)據(jù)
- 部署
- 部署窗口
- 產(chǎn)品變更(服務(wù)所需的所有產(chǎn)品變更,例如負(fù)載均衡器的設(shè)置和系統(tǒng)調(diào)優(yōu))
- 環(huán)境
- 服務(wù)SLA
- 監(jiān)控
- 值班/突發(fā)事件響應(yīng)
- 報告(向其他團(tuán)隊(duì),消費(fèi)者或者依賴服務(wù),發(fā)送內(nèi)部報告,以及管理服務(wù)的運(yùn)行健康報告)
基礎(chǔ)設(shè)施團(tuán)隊(duì)或運(yùn)維團(tuán)隊(duì):
- 服務(wù)器/硬件
- 工具集
- 數(shù)據(jù)庫(數(shù)據(jù)本身、數(shù)據(jù)模式以及對數(shù)據(jù)的使用,通常還是由服務(wù)所屬團(tuán)隊(duì)來管理)

SLA的性能檢測方法:
- 調(diào)用延遲
- 流量
- 運(yùn)行時長
- 錯誤率
云服務(wù)
基于云的服務(wù)基本類型:
- 原生資源
- 托管資源(基于服務(wù)器)
- 托管資源(不基于服務(wù)器)
可伸縮的計算選項(xiàng):
- 云服務(wù)器
- 計算分片
- 動態(tài)容器
- 微計算(體積小、高度可擴(kuò)展、基于事件驅(qū)動的運(yùn)行環(huán)境)