什么是IT系統(tǒng)的“可運(yùn)維性”?通俗地講,IT系統(tǒng)的可運(yùn)維性就是一個(gè)IT系統(tǒng)自身提供的確保該系統(tǒng)的正常運(yùn)行狀態(tài)、排除該系統(tǒng)的異常運(yùn)行狀態(tài)、應(yīng)對(duì)突發(fā)的運(yùn)行需求的能力。這種能力最終需要與從事運(yùn)維工作的人結(jié)合,才能真正發(fā)揮其預(yù)期效果,但是如果系統(tǒng)提供的“可運(yùn)維性”能力很差,就會(huì)導(dǎo)致從事運(yùn)維工作的人無(wú)處發(fā)力或者只能用非常低級(jí)原始的辦法實(shí)現(xiàn)運(yùn)維目標(biāo)。從這個(gè)意義上講,IT系統(tǒng)的可運(yùn)維性是其得以安全、平穩(wěn)、高效運(yùn)行的前提。
筆者在傳統(tǒng)金融行業(yè)從事過多年IT運(yùn)維管理工作,深知可運(yùn)維性對(duì)金融機(jī)構(gòu)的重要性。其重要性具體體現(xiàn)在以下幾個(gè)方面。
通過高可用架構(gòu)實(shí)現(xiàn)盡量短的故障恢復(fù)時(shí)間目標(biāo)(re cove r y tim e objective,RTO)和可容忍故障恢復(fù)點(diǎn)目標(biāo)(recovery point objective,RPO)。很多關(guān)鍵業(yè)務(wù)系統(tǒng)的RTO為秒級(jí),RPO為0,這意味著不允許任何數(shù)據(jù)丟失和業(yè)務(wù)狀態(tài)錯(cuò)亂,業(yè)務(wù)的短暫中斷不會(huì)使普通用戶感覺到明顯停頓。為此,在高可用架構(gòu)中要有大量的冗余設(shè)計(jì)和接管(failover)措施,從機(jī)房、電力、網(wǎng)絡(luò)、主機(jī)、存儲(chǔ)、數(shù)據(jù)庫(kù)、中間件、域名解析到應(yīng)用,都需要在架構(gòu)設(shè)計(jì)上一體化考慮,都不允許出現(xiàn)單一故障點(diǎn)。
提供詳盡、可理解、可視化的直觀監(jiān)控信息,可幫助運(yùn)維人員實(shí)時(shí)了解系統(tǒng)和網(wǎng)絡(luò)的真實(shí)健康狀況,以便及早發(fā)現(xiàn)并應(yīng)對(duì)異常;提供應(yīng)急操作特權(quán)入口,可為改錯(cuò)、選擇性關(guān)停、限流等應(yīng)急手工操作提供一個(gè)安全方便的操作環(huán)境。
靈活的參數(shù)化設(shè)計(jì)可在短時(shí)間內(nèi)通過參數(shù)調(diào)整應(yīng)對(duì)突發(fā)的業(yè)務(wù)改變。比如2015年,證券市場(chǎng)的“熔斷”機(jī)制推出后數(shù)天即被叫停,借助于參數(shù)化設(shè)計(jì)的這種靈活性,技術(shù)系統(tǒng)僅僅需要把熔斷觸發(fā)條件設(shè)置成邏輯上不可能的參數(shù)值就可以很快滿足這一突發(fā)的運(yùn)行需求。最終干預(yù)權(quán)則是對(duì)關(guān)鍵業(yè)務(wù)系統(tǒng)的核心模塊提供人工干預(yù)的應(yīng)急接口,是滿足突發(fā)運(yùn)行需求的操作。需要注意的是突發(fā)運(yùn)行需求的起因并不是系統(tǒng)發(fā)生了異常,而是系統(tǒng)運(yùn)行的宏觀外部條件(如政策)發(fā)生了異常,迫使系統(tǒng)必須以非常規(guī)的手段進(jìn)行應(yīng)對(duì)。
區(qū)塊鏈?zhǔn)且环N基于密碼學(xué)和分布式共識(shí)機(jī)制、為一個(gè)特定用戶群提供信任服務(wù)的基礎(chǔ)設(shè)施。近年來,區(qū)塊鏈技術(shù)得到了迅猛發(fā)展,不僅在民間有基于“虛擬貨幣+社區(qū)+區(qū)塊鏈平臺(tái)”的“幣圈”打法,在傳統(tǒng)金融機(jī)構(gòu)和其他行業(yè)也出現(xiàn)了僅利用區(qū)塊鏈平臺(tái)服務(wù)于業(yè)務(wù)目標(biāo)的“鏈圈”打法。隨之,區(qū)塊鏈語(yǔ)境下如何體現(xiàn)可運(yùn)維性也開始浮出水面。
不要以為區(qū)塊鏈技術(shù)從其架構(gòu)本性上來講就是高可用的,因此就可以忽視可運(yùn)維性的問題。實(shí)際上,區(qū)塊鏈技術(shù)發(fā)展的現(xiàn)狀為區(qū)塊鏈可運(yùn)維性提供的技術(shù)資源非常少。從區(qū)塊鏈領(lǐng)域遇到的大大小小涉及可運(yùn)維性的問題中,筆者深深地體會(huì)到,區(qū)塊鏈的可運(yùn)維性既需要大力度借鑒傳統(tǒng)金融機(jī)構(gòu)管理可運(yùn)維性的一系列理念和做法,也需要基于區(qū)塊鏈語(yǔ)境本身的特殊性發(fā)展一系列原創(chuàng)性的運(yùn)維管理做法,尤其是要糾正區(qū)塊鏈領(lǐng)域的一些錯(cuò)誤的認(rèn)識(shí)和做法。
2016年“The DAO事件”余波未平,2017年以太坊又爆出了Parity多重簽名合約誤鎖漏洞。區(qū)塊鏈的可運(yùn)維性又一次引起熱議。2016年比特幣社區(qū)還在嘲笑以太坊社區(qū)一言不合就分叉,2017年分叉的事情就輪到了比特幣社區(qū)。每次看到社區(qū)出現(xiàn)這樣的情況,總會(huì)有傳統(tǒng)金融機(jī)構(gòu)的人說:“看看,幸虧‘鏈圈’沒有這么玩,否則指不定死多少回了!”
其實(shí),可運(yùn)維性不僅是“鏈圈”追求的區(qū)塊鏈特性,也同樣是“幣圈”追求的區(qū)塊鏈特性。在解決了不可撤銷、不可仿冒、不可篡改、不可抵賴、不可雙花、不可透支這些價(jià)值傳輸最基本的問題之后,人們的目光停留在了隱私保護(hù)和可運(yùn)維性上。說起隱私保護(hù)特性,“幣圈”有ZCash這樣的虛擬貨幣推出??蛇\(yùn)維性方面,也許是去中心化的觀念先行,排除了大量在“幣圈”看來很平常的運(yùn)維手段的使用,從應(yīng)急處置和審計(jì)追責(zé)的角度,還沒有看到“幣圈”有份量的可運(yùn)維性技術(shù)的推出。但是,從預(yù)防為主的角度來看,至少智能合約的形式化驗(yàn)證問題和在線升級(jí)的問題已經(jīng)在“幣圈”引起了足夠的重視,這一跡象是正面的。
在這里必須提到“鏈圈”的兩個(gè)值得一提的努力。
一是埃森哲公司提出的“可編輯的區(qū)塊鏈”概念。在埃森哲的材料中,他們開宗明義,將可編輯區(qū)塊鏈的推出與傳統(tǒng)金融機(jī)構(gòu)的可運(yùn)維性需求掛鉤,從不當(dāng)?shù)美?、錯(cuò)賬沖正到烏龍指,各種必須修改的錯(cuò)都不能將錯(cuò)就錯(cuò),需要得到授權(quán)的操作人員把錯(cuò)賬改過來。如果區(qū)塊鏈承擔(dān)了記賬的任務(wù),那么改錯(cuò)賬就應(yīng)該是區(qū)塊鏈必備的功能。以比特幣、以太坊為典型代表的“幣圈”平臺(tái)做不了這件事情,除非分叉。埃森哲提出的解決手段則是使用基于“變色龍散列”的“可編輯的區(qū)塊鏈”。從數(shù)學(xué)原理上看,可編輯的區(qū)塊鏈確實(shí)可以不分叉就能改錯(cuò),但是代價(jià)是開了一個(gè)既能篡改歷史又不可審計(jì)的后門。這樣一個(gè)后門的存在,不僅在堅(jiān)定秉持去中心化理念的“幣圈”不可接受,就算是在一定程度上容忍中心化要素存在的“鏈圈”,接受的人也不是很多。
二是分布式賬本聯(lián)盟R3在2016年底推出的Corda平臺(tái)。在Corda平臺(tái)上,智能合約代碼和對(duì)應(yīng)該合約的正式有效的法律文本是互相勾稽的。合約法律文本的存證形態(tài)是合約代碼不可缺少的附件,并以數(shù)字簽名存證。通過對(duì)附件的驗(yàn)證,給予合約代碼所代表的“本意”一個(gè)抓手。一旦合約在運(yùn)行中出現(xiàn)問題,至少可以通過查驗(yàn)來確定是法律合約原本就有的,還是由合約的代碼實(shí)現(xiàn)沒有忠實(shí)地體現(xiàn)法律合約的“本意”造成的。在某種程度上,這也算是對(duì)前一段時(shí)間合約代碼單兵突進(jìn)、法律法規(guī)沒有同步跟進(jìn),結(jié)果形成畸形生態(tài)的一個(gè)彌補(bǔ)。此外,Corda平臺(tái)上并不存在一個(gè)“我的資產(chǎn)我做主”的基礎(chǔ)賬本,任何單據(jù)(狀態(tài))都可以在合適的條件下經(jīng)公證被廢止。這也為改錯(cuò)賬留下了可以運(yùn)作的空間??梢哉fR3這些業(yè)務(wù)大咖們對(duì)分布式賬本可運(yùn)維性的重要意義還是心中有數(shù)的。
可運(yùn)維性的訴求是一個(gè)很重要的訴求,它在“幣圈”的缺位不是因?yàn)椤皫湃Α辈恍枰?,而是因?yàn)椤皫湃Α庇须y言之隱,在目前技術(shù)條件下無(wú)法把這個(gè)訴求落到實(shí)處,而只能訴諸分叉這樣無(wú)奈而又笨拙的手段?!版溔Α睂?duì)可運(yùn)維性的訴求來源于傳統(tǒng)金融機(jī)構(gòu)使用者對(duì)合規(guī)性發(fā)自本能的自覺遵守,但并沒有形成一個(gè)完整的技術(shù)體系和技術(shù)方法論。
首先,“我的資產(chǎn)我做主”絕不是一個(gè)與現(xiàn)行法律體系完全兼容的做法。如果在技術(shù)上把“我的資產(chǎn)我做主”做實(shí),“做主”在技術(shù)上體現(xiàn)為“掌握私鑰”,那么在一些場(chǎng)合下,執(zhí)法措施就落不到實(shí)處,就必須事實(shí)上遷就區(qū)塊鏈的技術(shù)設(shè)定。在需要進(jìn)行應(yīng)急處置的場(chǎng)景,尤其是需要對(duì)涉及資產(chǎn)余額的錯(cuò)賬、烏龍指、非法所得、不當(dāng)?shù)美冗M(jìn)行沖正、追究、查封、充公等操作時(shí),這樣的做法在法律上有明顯的缺陷。所以,從區(qū)塊鏈底層把執(zhí)法措施支持到位是區(qū)塊鏈應(yīng)用單位滿足合規(guī)要求的起碼要求。如果說在之前以借鑒為主的階段大家還顧不上法律合規(guī)性,那么當(dāng)區(qū)塊鏈進(jìn)入以技術(shù)上自主創(chuàng)新、自主掌控為主,應(yīng)用上以合規(guī)發(fā)展、為我所用為主的階段時(shí),這樣的要求再得不到滿足就說不過去了。
其次,可運(yùn)維性的要求應(yīng)該非常清晰地傳導(dǎo)到開發(fā)方。一是在開發(fā)方中逐漸形成基于最佳實(shí)踐的模板,把有共性的可運(yùn)維性的功能(比如應(yīng)急處置特權(quán)下的沖正機(jī)制、凍結(jié)機(jī)制、剎車機(jī)制以及在線升級(jí)機(jī)制等)作為模板的標(biāo)配代碼嵌入其中。二是在開發(fā)方中逐漸形成基于業(yè)內(nèi)風(fēng)控理念和通過歷史教訓(xùn)積累下來的業(yè)務(wù)流程參考約束標(biāo)準(zhǔn),把重要的業(yè)務(wù)步驟之間共性的合理順序固化下來。秉持同樣運(yùn)維理念的開發(fā)方應(yīng)該聯(lián)合起來,形成共享可運(yùn)維性模板的聯(lián)盟。通過這樣的做法,讓區(qū)塊鏈應(yīng)用少走彎路。2016年,中國(guó)分布式總賬基礎(chǔ)協(xié)議聯(lián)盟(ChinaLedger)發(fā)布的《面向中國(guó)資本市場(chǎng)應(yīng)用的分布式總賬技術(shù)白皮書》中,系統(tǒng)地闡述了如何在智能合約層面支持應(yīng)急處置的問題。
第三,區(qū)塊鏈絕不可以看成一個(gè)“數(shù)據(jù)庫(kù)”,更遑論“分布式數(shù)據(jù)庫(kù)”。將區(qū)塊鏈當(dāng)成數(shù)據(jù)庫(kù)使用,就會(huì)發(fā)現(xiàn)區(qū)塊鏈只有創(chuàng)建和讀取功能,沒有修改和刪除功能,就會(huì)得出“區(qū)塊鏈不如數(shù)據(jù)庫(kù)”的錯(cuò)誤結(jié)論。其實(shí),并不是區(qū)塊鏈不如數(shù)據(jù)庫(kù),而是不應(yīng)該把區(qū)塊鏈這樣來用。區(qū)塊鏈上記錄的不應(yīng)該是業(yè)務(wù)數(shù)據(jù),而應(yīng)該是操縱業(yè)務(wù)數(shù)據(jù)的指令序列或其日志。區(qū)塊鏈不是要取代數(shù)據(jù)庫(kù),而是要作為數(shù)據(jù)庫(kù)的高可靠性的前置。區(qū)塊鏈要求日志不可遺漏、不可篡改,但并不是說數(shù)據(jù)本身不可改動(dòng)。把一系列操作依序記錄在區(qū)塊鏈上,然后到真正的數(shù)據(jù)庫(kù)中依序執(zhí)行這些可留痕、可審計(jì)、可追責(zé)的正常操作和應(yīng)急操作,操作的最終結(jié)果寫在真正的數(shù)據(jù)庫(kù)而不是區(qū)塊鏈中。一旦數(shù)據(jù)庫(kù)發(fā)生問題需要回滾,只需從區(qū)塊鏈的特定高度進(jìn)行重演,數(shù)據(jù)庫(kù)本身的高可用架構(gòu)也可因此大大簡(jiǎn)化。應(yīng)急處置中如果需要對(duì)數(shù)據(jù)進(jìn)行沖正,只需通過區(qū)塊鏈增加一條沖正的數(shù)據(jù)操縱指令,這個(gè)應(yīng)急處置行為本身既是需要特權(quán)許可的,也是留痕的、可審計(jì)的。
第四,通過分叉來修正區(qū)塊鏈數(shù)據(jù),即使在“幣圈”也絕對(duì)不是值得提倡的事情。分叉本身意味著賬本的分裂,但在多條區(qū)塊鏈通過跨鏈機(jī)制互聯(lián)的場(chǎng)景下,會(huì)導(dǎo)致與之跨鏈互聯(lián)的賬本也跟著分裂。也就是說,當(dāng)分叉遇到跨鏈,分叉會(huì)把本來在一條區(qū)塊鏈內(nèi)的運(yùn)維問題傳導(dǎo)到另外的區(qū)塊鏈中,變成一個(gè)全網(wǎng)的運(yùn)維問題,從而大大增加全網(wǎng)的運(yùn)維難度。所以,從可運(yùn)維性的基本理念出發(fā),不應(yīng)該聽任動(dòng)輒分叉,而應(yīng)該利用互聯(lián)互通來反制那些輕率的分叉舉動(dòng)。
第五,有缺陷的區(qū)塊鏈應(yīng)用,特別是智能合約應(yīng)用上線,是一件十分危險(xiǎn)的事情。它不僅可能影響自身的用戶群和業(yè)務(wù)生態(tài),還可能影響其他的用戶群和業(yè)務(wù)生態(tài)。由此看來,當(dāng)區(qū)塊鏈技術(shù)和應(yīng)用發(fā)展到一定階段,對(duì)承載重要業(yè)務(wù)、運(yùn)作重要資產(chǎn)的區(qū)塊鏈實(shí)行某種形式的應(yīng)用準(zhǔn)入制,要求應(yīng)用自帶某種形式化驗(yàn)證的過程與結(jié)果,具備某種標(biāo)配的應(yīng)急處置功能,是十分必要的。
第六,區(qū)塊鏈可運(yùn)維性應(yīng)該成為區(qū)塊鏈正規(guī)教育和區(qū)塊鏈技術(shù)培訓(xùn)的必選內(nèi)容。只有讓可運(yùn)維性的理念和最佳實(shí)踐深入人心,把不注重可運(yùn)維性導(dǎo)致的后果充分揭示出來,才能使區(qū)塊鏈技術(shù)人才建立關(guān)于區(qū)塊鏈技術(shù)的正確知識(shí)結(jié)構(gòu)。這些人到了應(yīng)用開發(fā)第一線,才會(huì)更加自覺地為區(qū)塊鏈應(yīng)用扎牢可運(yùn)維性的籬笆。
總的說來,筆者認(rèn)為,可運(yùn)維性是區(qū)塊鏈應(yīng)用中不應(yīng)被忽視的重要訴求,必須從法律層面、行業(yè)最佳實(shí)踐及標(biāo)準(zhǔn)化層面、用法層面加以引導(dǎo)和約束,使可運(yùn)維性的訴求貫穿區(qū)塊鏈應(yīng)用的始終。