1950年,當時美國Grumman公司為了在研發新的噴射戰鬥機時評估飛機操作系統某一元件的失效分析,開始采用了FMEA方法。
随後FMEA逐漸在各航空運用起來。到了20世紀60年代,随着美國NASA阿波羅計劃的發展,FMEA被引入到航天工業。之後随着FMEA被汽車工業、各大電子工業應用,FMEA越來越被工程行業所重視,并于1970年左右引進到我們的航空航天及汽車工業上。
從20世紀中葉發展到現在,FMEA方法有了數個版本的叠代。随着IT工業的崛起,FMEA也被引入到軟件架構設計領域,用于幫助分析被設計的架構是否存在可用性方面的隐患。
FMEA方法使用步驟
1,根據系統架構設計圖,假設其中某部分發生故障。
2,分析這一故障對系統功能可能造成的影響。
3,根據分析後的結論判斷是否需要對架構進行優化調整。
給出初始的架構設計圖。假設架構中某個部件發生故障。分析此故障對系統功能造成的影響。根據分析結果,判斷架構是否需要進行優化。
一張常見的FMEA表格
總共包含11個分析項:功能點、故障模式、故障影響、嚴重程度、故障原因、故障概率、風險程度、已有措施、規避措施、解決措施和後續規劃。
下面我們來看一下每一項的具體含義。
1,功能點
功能點是指目前我們需要分析的功能點。注意,這裡的功能點并不是從技術或系統角度看的功能點,而是“站在用戶角度看”的功能點。
例子:用戶查看賬單是一個功能點,但是賬單數據如何存儲就不是功能點。
2,故障模式
故障模式是指系統可能出現的故障點和故障形式。我們在這一項中隻需要描述出故障的現象,描述中盡可能精确量化。
例子:服務器響應時間超過3秒。
3,故障影響
出現“故障模式”中說明的故障情況時,當前的“功能點”會有什麼影響。
例子:60%的用戶無法查看賬單。
4,嚴重程度
嚴重程度的評估需要站在業務的角度來看故障的影響。可以使用這條公式:嚴重程度 = 功能點重要程度 × 故障影響範圍 × 功能點受損程度。嚴重程度可以分為無、低、中、高、極高等幾個等級。
嚴重程度的登記劃分需要根據具體的業務類型來劃分。像電商業務中,如果有5%的用戶無法将商品加入購物車,這個嚴重程度将是極高,因為直接影響的是收入。而如果是有20%的用戶無法修改自己的昵稱,則嚴重程度可以劃分為中,因為這個故障對收入的影響沒有強烈的影響。
5,故障原因
相同功能點下可能有相同的故障模式,但是其原因可能不一樣。例如查詢賬單功能點出現無法連接數據庫的故障模式,但故障原因可以是網絡故障或者服務器磁盤沒有空間。
6,故障概率
故障概率是指上述故障原因發生的概率,可以分為低中高三種等級。實踐中有三種類型的故障的概率需要重點關注。
硬件。硬件設備的故障概率并不是固定的,而是會随着使用時間的推移而增加。
各大開源系統。剛誕生的開源系統的故障概率相對會高一些。而一些已經發展多年,比較成熟的開源系統的故障概率則相對較低。
自研系統。故障概率與各大開源系統的情況有點相似,剛開發剛上線的系統的故障概率會相對高,而已成熟、運行多年的系統的故障概率會相對低。
7,風險程度
風險程度 = 嚴重程度 × 故障概率。由于與故障概率相關,所以有些影響非常大的故障其風險程度不一定會很高。例如重大自然災害對機房的影響可能是毀滅性的,但其發生概率會比較低,因此風險程度也相對低。由此得出的風險程度可以指導我們後續的工作。
8,已有措施
已有措施就是系統架構中是否有提供一些可采取的措施來對應當前的故障。可以是檢測告警、容錯、自我恢複等方面。
9,規避措施
為了降低某一故障發生的概率,我們是否在技術、管理流程方面有相關的可行手段。
10,解決措施
解決措施是指為了解決某一故障而采取的手段。對于軟件架構來講,一般可用的手段就是技術手段。
解決措施與規避措施看似相同,但面對實際情況時,是有多不同的。一個故障如果我們能用某種措施來解決掉的話,就無需使用規避措施了(因為已無故障可規避)。所以解決措施是優于規避措施的。
11,後續規劃
經過了前面10項的分析,我們已經能看出整個架構中存在的問題和不足,欠缺了怎樣的應對措施。這是我們可以整體給出後續可以使用的各種手段或者措施,從而形成應對故障的後續規劃。
FMEA是分析系統架構設計高可用問題方面的利器,不過上述11點并不是強制必須填滿每一項,我們實際應用時可以根據所面對的業務場景适當作出調整或剪裁。
,