軟件的dfx諸可性
今天跟大家聊一聊軟件的dfx,也就是諸可性的這樣一個話題。那么什么是諸可性呢,就是軟件除了功能可用之外的,其他的一些特性,比如說可服務(wù)性,可靠性,安全性,可兼容性,可移植性,可體驗(yàn)性,可擴(kuò)展性等你系列特性,那么這些特性在軟件中呢,實(shí)際上是非常關(guān)鍵的。他實(shí)際上。占了軟件代碼的。百分之八九十。其實(shí)一個軟件的成功能性代碼占的數(shù)量并不是很多。
那么在華為來講這些原來是一直在做,但沒有這么規(guī)范,這么全面,也出過一些網(wǎng)上的問題,那么后來呢,也包括公司做海外銷售的時候,海外的運(yùn)營商提出來很多要求。這樣公司就建立了一個。諸可性這樣的一個部門。那這個部門就把各產(chǎn)品線,整個公司就把這個dfx這些能力,構(gòu)建起來了。那么接待我給他介紹一下主要的這個dfx特性。
第1個方面就是可服務(wù)性??煞?wù)性,就是軟件開發(fā)完了,要上網(wǎng)運(yùn)行了,那就要提供這個對外服務(wù)的一些維護(hù)能力,方便運(yùn)維人員可以很好的維護(hù)整個軟件系統(tǒng)。那么它的包括哪些內(nèi)容呢?
1)首先是可安裝性,就說你在系統(tǒng)要有安裝工具,通過安裝工具,很好的安裝這個系統(tǒng)。
2)還有可監(jiān)控性,你系統(tǒng)是好的是壞的,要通過這個監(jiān)控內(nèi)容能能判斷出來,最好提供自動恢復(fù)功能,通過具體的就是監(jiān)控告警平臺,通過高警,日志,這些能力實(shí)現(xiàn)。
3)可配置性,要用配置服務(wù)器,通過配置服務(wù)器運(yùn)維人員可以配置系統(tǒng),可以動態(tài)刷新配置數(shù)據(jù)。
4)巡檢,系統(tǒng)好壞要能自檢,運(yùn)維可以運(yùn)用這個工具檢查系統(tǒng)好壞。比如在節(jié)假日之前,可以通過巡檢功能來判斷一下,及時修復(fù)漏洞。
5)在線升級,打熱補(bǔ)丁,可以升級新版本,運(yùn)維人員可以進(jìn)行維護(hù)系統(tǒng)升級。
諸可性第2個方面就是可靠性,對于電信系統(tǒng)來講的的要求五個九的,那么對于戶互聯(lián)網(wǎng)系統(tǒng)呢,要求是兩個9到3個九的或者是995的,那這個要求呢,你要實(shí)現(xiàn)呢,也就說就不能宕機(jī),即使宕機(jī)能快速的恢復(fù),這樣來講的,也需要一些能力。
1)比如說雙機(jī)。就是系統(tǒng)沒有單點(diǎn)故障,也就說他是主備一組,一主機(jī)一備機(jī),主機(jī)宕機(jī)了備機(jī)可以接管,雙機(jī)系統(tǒng)的包括冷雙機(jī)。熱雙機(jī)和溫雙機(jī)這樣三種。冷雙機(jī)就是系統(tǒng)呢,一主一備,主的跑備的不啟動。熱雙機(jī)就是主備跑一樣的進(jìn)程,主的宕機(jī),備立即接管,系統(tǒng)損失很小,但實(shí)現(xiàn)難度很大。溫雙機(jī)就是備機(jī)啟動但不跑業(yè)務(wù),這個跟冷雙機(jī)就好在備機(jī)啟動了。
2)分布式系統(tǒng),在負(fù)債均衡下,服務(wù)進(jìn)程有很多個。如果一個宕機(jī)了沒什么影響,其他的服務(wù)持續(xù),由系統(tǒng)的監(jiān)控的拉起一些新服務(wù)啊現(xiàn)在分布式系統(tǒng)才用的多一些。
3)備份和恢復(fù),系統(tǒng)有很多數(shù)據(jù),有很多文件,它不能丟失,那就是備份和恢復(fù)。
4)過負(fù)荷控制,因?yàn)樵诠?jié)假日,或者網(wǎng)絡(luò)攻擊的時候,會有一些超過系統(tǒng)處理能力的接入進(jìn)來,如果沒有的過負(fù)荷控制,可能系統(tǒng)就崩潰了,這個也很重要。
諸可性第3個方面就是安全性,安全在中國早期被忽略的比較多,近幾年也是逐漸提高了,在國外要求就很高,所以我們的產(chǎn)品呢,一直重視安全性,舉幾個例子,
1)一個就是存儲敏感數(shù)據(jù)要存儲密文,就是加密存儲。比如一個人的身份證,一個人的手機(jī)號。都應(yīng)該在數(shù)據(jù)庫存儲密文。近幾年中國出現(xiàn)那種脫庫的情況,數(shù)據(jù)庫被劫持了的情況,發(fā)里面都是明文,這樣的話就會出現(xiàn)名字,身份證,手機(jī)號加被泄露了,這就很嚴(yán)重,首先是個所有的系統(tǒng)的密碼賬號或者系統(tǒng)數(shù)據(jù)里面的用戶名,身份證,手機(jī)號等敏感信息都應(yīng)該密文存儲。
2)就是防篡改,要有認(rèn)證,避免被篡改。
3)防木馬,防SQL注入,這些都很重要。
4)防病毒,系統(tǒng)要在線殺病毒,新病毒要及時查殺。
5)防火墻 ,可信區(qū)等硬件安全手段。
諸可性第4個方面可移植性 軟件系統(tǒng)的話不能只發(fā)在一個平臺上。希望windows的客戶,希望unix的的客戶,希望linux的,那么如果那個系統(tǒng)可移植性沒那么好的語言,比如C++語言,那這樣的話要實(shí)現(xiàn)中間適配封裝,做跨平臺的封裝,開發(fā)的時候用這些封裝的函數(shù),那么底層的適配不同的C++語言差別,不同的操作系統(tǒng)的差別,這樣來講的就可以實(shí)現(xiàn)那個跨平臺的移植。因?yàn)楝F(xiàn)在呢,來講的這個系統(tǒng)啊,通過容器呀,JAVA,python語言的跨平臺能力比較強(qiáng),所以這個可移植性沒有以前那么重要了。
諸可性第5個方面就是兼容性啊,這個系統(tǒng)前后版本的兼容,我們也看到windows,實(shí)際上他出版本很困難的一個事情,兼容性就是這個新系統(tǒng)怎么兼容老系統(tǒng),這是你原來的功能還支不支持,你原來的接口還支不支持 原來開發(fā)的應(yīng)用或者業(yè)務(wù)能不能接著跑在新系統(tǒng)上,我原來跟你對接過的系統(tǒng)還能不能繼續(xù)跑,這就是兼容性,這個就是非常難的,你系統(tǒng)在功能的兼容,接口的兼容,運(yùn)維的兼容,都是比較難的,一般的做法,一種是兩套接口,然后呢,接口有版本號或者那接口,或者通過這些xml這樣的方式來適配接口,也可以通過這個變長,不等長的接口,接口的內(nèi)容呢可以編碼,那這樣來講呢,就根據(jù)你不同的內(nèi)容,我都不同的編碼來區(qū)分,這個方法還是挺多的。
諸可性第6個方面可擴(kuò)展性,就是你的系統(tǒng)未來能不能支持更大的容量,能不能支持更多的功能,那你就擴(kuò)展是怎么考慮的,那么這部分呢,也是很重要的。
諸可性第7個方面就是可體驗(yàn)性,你這個系統(tǒng)用戶體驗(yàn)怎么樣???有沒有經(jīng)過這個可體驗(yàn)性的驗(yàn)證啊,這個也是那個很重要的。
諸可姓從表面上,跟產(chǎn)品功能沒關(guān),但是沒有這些內(nèi)容,可能你的功能都用不了了,宕機(jī)了,維護(hù)不了了,這樣的話你三天兩頭宕機(jī),宕機(jī)以后說明你系統(tǒng)是不可用了。