2019年12月15日,螞蟻金服研究員兼系統(tǒng)部負責人何征宇在OS2ATC 2019上分享了螞蟻在金融級系統(tǒng)軟件上的實踐經(jīng)驗,以及對開源協(xié)作的理念和做法。以下為演講整理:
我今天想和大家分享一下我在螞蟻的一些工作,以及在金融級系統(tǒng)軟件中需開源協(xié)作的探索和實踐。
金融行業(yè)實際上是一個非常注重科技的行業(yè),因為技術的價值可以得到很直觀的展現(xiàn),然后它是非常注重極致,非常追求技術的先進性的,技術上的先進性可以很快的轉化為業(yè)務的領先性。
螞蟻金服作為國內金融企業(yè)的領頭羊,對于技術的追求是永無止境的。螞蟻的夢想是服務20億的消費者,1億的全球小微經(jīng)營者,這是一個非常大的愿景,而我們相信只有不斷發(fā)展的技術才能讓這些不可能成為可能。例如我們的310貸款能力,就是建立在一流的金融級大規(guī)模數(shù)據(jù)智能的技術能力之上的。
那么我們系統(tǒng)軟件的挑戰(zhàn)和做軟件的壓力是什么?如果用一句話來總結的話,就是在海量數(shù)據(jù)壓力下的服務連續(xù)性保障和資損風險監(jiān)控。首先是要達到一個非常高的可用率,這個跟我們常說高可用系統(tǒng),例如電信級系統(tǒng)不一樣,這個后面除了5個9之外,還有金融機構非常嚴格的一些要求,比如100%保證資金安全,這是螞蟻金服一直在追求的能力。
螞蟻金服與系統(tǒng)軟件
螞蟻金服也確實在各個系統(tǒng)軟件的方向上追求極致。首先從數(shù)據(jù)庫的角度來講,OceanBase在TPC-C評測中打破了Oracle多年的壟斷,這一結果是OceanBase團隊創(chuàng)新的實現(xiàn)了分布式關系數(shù)據(jù)庫,并且得到了專業(yè)評審員的認可。其次是安全計算,我們參與了Occlum可信執(zhí)行環(huán)境開源項目,并且與清華展開學術合作,相關文章已經(jīng)被ASPLOS收錄,也參與制定國內第一個安全計算的標準。然后是云原生方向上,我們自研了SOFAMesh并率先通過今年的雙十一進行了大規(guī)模的驗證。最后是安全容器技術,我們的Kata Containers是OpenStack頂級開放基礎設施項目。
接下來我想講一些我們的觀點。我一直覺得,系統(tǒng)軟件是一個手段,它并不是一個目的,因為我們一定要搞清楚的是我們系統(tǒng)軟件到底是在做什么。右邊這個圖很有意思,這是一個樓梯,但是這個樓梯是沒法使用的,如果我們做系統(tǒng)軟件是為了做而做,有可能做出來就是像這個樓梯一樣,目標達到了,但是沒有任何價值。
任何一個基礎軟件、系統(tǒng)軟件,比如一個新的操作系統(tǒng),一般來說都是花銷巨大的,而且軟件寫出來總有一天會淘汰的。我們到底做什么樣的系統(tǒng)軟件?我相信一定是為了解決什么問題而做,這是我們系統(tǒng)工程師最需要考慮的事情。
接下來,我想結合我自己的一些經(jīng)歷,分享一下我們是如何思考和利用系統(tǒng)軟件解決問題的。
第一個案例是大家正在做的容器化所帶來的問題。在云原生大趨勢下,大家正在將IT系統(tǒng)遷移到容器里,例如從OpenStack遷移到Kubernetes,這里實際上有一個很大的問題,也就是從虛擬機遷移到容器時,我們系統(tǒng)的隔離性,不管是從安全還是性能方面來說,都是有下降的。
螞蟻金服正在做的安全容器,就是為了解決容器的隔離性問題,它的原理也很好理解。傳統(tǒng)容器的隔離性其實是依賴linux本身,包括cgroup和namespace等技術,但是應用還是直接通過系統(tǒng)調用訪問內核。安全容器做了一個中間層,利用新的內核,hypervisor等等技術,讓系統(tǒng)調用可以不用依賴底層的linux,而安全容器自身對linux的依賴是完全已知和固定的,而且小到可以做非常詳細的審計,從而極大的降低主機被攻破的風險。
安全容器可以有效的保護主機,但是,金融業(yè)務本身仍然需要更強的隔離保護。
所幸的是,最近興起的機密計算(Confidential Computing)技術能夠非常有效保護應用程序。它的本質其實上就是在大家手機里應用非常廣泛的TEE技術,但是隨著Intel SGX這樣的技術的發(fā)展,讓每一臺服務器支持TEE都成為可能。
TEE,現(xiàn)在一般也稱為Enclave,可以進行運行時的雙向防護。簡單說,應用程序用它的話,可以不相信底層的OS等軟件。但是在 Enclave 技術目前存在一些問題,阻礙了它在實際生產環(huán)境中的應用,包括:
第一,需要改寫應用,因為可信執(zhí)行環(huán)境里面沒有內核和基礎庫,所以沒法把應用直接在 Enclave 中執(zhí)行;
第二,需要分割應用,需要把業(yè)務程序劃分為 Enclave 內和 Enclave 外的部分;
第三,未集群化,與客戶端場景不同,Enclave 中的應用如何 failover,容災也是阻止其在數(shù)據(jù)中心中大規(guī)模使用的一個原因。
所以說現(xiàn)在基于TEE的應用特別難做,基本上現(xiàn)在做的就是純運算的一些東西,因為IO都解決不了。這里就引出來我們的第二個案例,也就是我們?yōu)槭裁匆鯫cclum。
Occlum是我們今年聚焦攻關的一個Enclave LibOS,現(xiàn)在在世界上來說應該是最先進的一個,使用它可以1分鐘內將Tensorflow Lite移植到Enclave里面。這里我想說明的是,我們不是為了做系統(tǒng)而做系統(tǒng),我們做系統(tǒng)是為了螞蟻的業(yè)務例如共享智能,區(qū)塊鏈等能夠更好,更快的拿到機密計算這一新技術的紅利。
螞蟻金服與開源
我們講開源,像上面提到的系統(tǒng)軟件一樣,開源也是一種手段,不是目的。這里給大家分享一些我們的思考。
首先給大家科普加拉帕戈斯綜合癥,這個其實可以對應到我們的系統(tǒng)軟件,如果我們的系統(tǒng)軟件從頭到尾都是閉門造車,那么它一定會根據(jù)當時的現(xiàn)狀加入妥協(xié)的部分,并且這種妥協(xié)會越來越多,最后面對開源開放的系統(tǒng)軟件是沒有競爭力的。
所以我覺得,開放的生態(tài)是系統(tǒng)軟件保持長久活力的關鍵。上面的圖片里面,左邊是在水族館里面的殺人鯨,它們的背鰭永遠是彎著的,顯得無精打采,右邊是在開放水域的鯨魚,它們的背鰭就是直的。所以,系統(tǒng)的生態(tài)是很重要的。我不想看到的是,不管是因為國家的政策也好,或者什么別的因素也好,我們就在小池塘里面互相吃來吃去的,最后一個大鯊魚過來全部被干掉了。
從螞蟻金服的角度來看,我們一定要保持開放,也希望有非常多的良性競爭。中國的武俠一定是有少林和武當?shù)模绻际且粋€流派那就不行了,百花齊放,百家爭鳴的狀態(tài)才是最好的。
最后總結一下螞蟻金服系統(tǒng)軟件的發(fā)展思路,首先它必須滿足業(yè)務競爭的需求,然后我們會和頂尖學術機構一起合作創(chuàng)新,并且積極參與開源社區(qū),承擔應有的社會責任。
值得一提的是,螞蟻金服系統(tǒng)軟件上的學術合作也比較廣泛。我們和國內外的專家學者,包括清華大學,上海交通大學,浙江大學,UC Berkeley都有合作項目,也拿到了不錯的成果,例如上面提到的Occlum項目就是跟清華陳渝老師合作的。在這里,我想帶出我這次分享最重要的目的,也就是非常希望和在座的各位學術界和開源屆的同行能有更多的交流和溝通,達成更多的合作,謝謝大家。