這是一支雲原生基礎設施的研發團隊,他們想要研發出一整套雲原生架構組件,讓企業沒有顧慮地專注在業務開發上,PaaS、Service Mesh、定製硬件等離業務較遠的工作是他們的。這就是螞蟻集團的可信原生團隊。
「我們工作做得越好,上層應用就可以拓展更多,非基礎設施開發和基礎設施開發人員的數量比例可能就越高。」螞蟻資深技術專家、Kata Containers 共同發起人的王旭說道。基礎設施的研發有什麼難點?跟業務研發比有什麼特點?這次我們採訪了可信原生團隊中分別負責中間件、容器雲和可信技術的資深專家,為我們介紹他們在做的事情和一些思考。
螞蟻的中間件是隨着業務架構一起演進的。
螞蟻的架構大概經歷了如下的變化:2003-2005 年的單體式架構、2006-2009 年的微服務架構、2010-2013 年的單元化架構、2014-2017 年的雲金融架構和 2018 年至今的雲原生架構。
架構演進的背後是越來越多、越來越複雜的業務。而中間件可以追溯到 2009 年支付寶的架構。彼時,螞蟻還沒有從淘寶分拆出來,支付寶的第一代架構因此受淘寶影響很大。2014 年,螞蟻集團正式成立,同時開始籌備網商銀行,想要成為雲上的第一家銀行。這意味着整個支付寶的架構場景從單純的交易轉向了更廣闊的金融業。
SOFA 是螞蟻集團自主研發的金融級分布式中間件,包含了構建金融級雲原生架構所需的各個組件,如服務網格、Service Mesh、消息中間件等。經歷了模塊化、服務化和單元化後,SOFA 團隊為第四代 SOFA 新取的名字叫 SOFAStack。
螞蟻集團高級技術專家宋順就在這隻負責 SOFA 中間件的研發團隊裡。在宋順看來,金融級中間件需要具備安全、穩定、可靠、高效等特徵,具體包括:
服務需要具備高可用的能力,至少同城雙活、異地冷備。螞蟻通過註冊中心的機制實現同城裡不同機房的服務互通。
服務需要具備較高的擴展性來應對流量劇增。螞蟻選擇單元化方式實現,比如將流量打散,按照用戶 ID 做劃分,不同地區的用戶選擇特定地區的機房來維護等。
數據具有可靠性和強一致性。對此,螞蟻引入了分布式事務等技術,確保不同機房的交易同時成功或失敗。
需要實現秒級監控能力,可以很快應對流量突增的情況。
如今,SOFAStack 已經進入第五代的研發階段。
SOFAStack 產品布局
根據設想,螞蟻的下代技術架構或將以 Mesh 化為核心,因此可信原生團隊希望將原來所有的中間件能力都重新打磨。SOFAStack 也早已開始積極擁抱和布局 Mesh。比如,由於 Service Mesh 由控制面和數據面組成,因此螞蟻分別進行了兩個開源項目 SOFAMesh 與 SOFAMosn 的研發。
SOFAMesh 是 Service Mesh 的控制平面,由 Istio 分叉而來,並根據內部需要做了功能補充、優化和改進。不過,在回溯貢獻給 Istio 後,宋順表示該項目會回歸社區,未來不再單獨維護。
MOSN 則是一個用 Golang 寫的數據平面。根據計劃,MOSN 擔負起承載所有網絡中間件能力的責任,這是一個需多部門參與、時間跨度很長的大項目。但由於已有的 Istio 是 C++ 寫的,螞蟻內部需要花費更多的人力物力去做研發,最終決定基於 Golang 做了 MOSN。
「技術越底層,面對的事情就越複雜,我們做任何事情也會越難。」宋順說,「比如,如果要進行整體的 Mesh 升級,螞蟻面對的是數十萬核機器的改造,這對團隊來說並沒有多少經驗可以借鑑。當沒有可參考的東西時,只能用新的方式解決。」但宋順也表示,創新需要周期,落地過程也會相對緩慢,尤其是對於應用規模較大的企業。
在螞蟻內部,技術概念並不決定着其是否會被採用。這體現在了螞蟻對引入 Serverless 的謹慎態度上。
「Serverless 概念很大、也很好,但怎麼能讓它在這個體系下發揮作用、產生真正的價值,是需要探索的,而不只是說有了一個新技術、新概念就要直接用了。」
在宋順看來,Service Mesh 解決的更多是基礎設施和業務研發解耦問題,這比較容易普及。而 Serverless 不只是一種技術。「團隊希望 Serverless 能帶來整個研發流程、研發模式的改變,以此提高研發效率,但這個耗時是非常長的。」
目前,經過兩年多時間的打磨,螞蟻的 Serverless 產品已經完成了第一階段的落地和推廣。SOFAServerless 在內部接入了 700 多個 Java、nodejs 應用,基本涵蓋了螞蟻所有業務線,支撐了 1 萬多次完整的生產研發迭代。
隨着業務更加多樣,不同業務可能分布在不同的雲上。但不同業務的合規要求不同,相互之間還需要既獨立、又互通。這種形勢下,如何做好架構支持,是擺在螞蟻面前的重要挑戰。
為此,宋順表示,目前團隊在研發一套名為「雲間件」的產品,旨在屏蔽業務和雲之間的細節,用戶只需要做好開發,而無需關注是否在不同的雲上。
雲原生體系里,容器為軟件系統提供了基礎的運行時環境,目前已經成為實際上的應用交付標準。
2014 年左右是容器技術的鼎盛時期,但由於隔離性差等原因,安全一直是懸在開發者頭上的一把達摩克利斯之劍。StackRox 今年初的報告顯示,55% 的受訪者出於安全考慮,推遲了將 K8s 應用程序部署到生產環境中。
2015 年時,音速神童抓住了容器和雲的風口,開源了基於虛擬化技術的容器引擎 runV。2017 年 12 月,在與英特爾的 Clear Containers 合併後,意在統一虛擬機(VM)安全優勢與容器速度和可管理性的 Kata Containers 誕生。
2019 年,音速神童的創始人趙鵬、王旭加入螞蟻,擴充了其在基礎設施領域裡的人才版圖。至今,Kata 已經做了兩次重大演進,現在到了 Kata 3.0 版本的緊張研發時刻。根據王旭的介紹,Kata 3.0 主要有以下三個方面的改進:
更多 Rust 的實現。Kata 之前用 GoLang,在改用 Rust 實現 agent 後,占用內存從 11 MB 下降到約 1 MB。Kata 希望未來所有組件都可以統一用 Rust 來編寫,屆時 Kata 的運行時環境會從原來的兩個進程會統一成 Rust Kata Runtime,運維、內存開銷等得到極大精簡。
引入鏡像加速功能。容器里的分層存儲在刪除文件時會造成文件冗餘,另外容器重啟時也會造成很多浪費。所以,Kata 3.0 引入了容器鏡像加速項目 Nydus。
機密計算等的支持。實際工作中,許多用戶也會不信任容器提供商,不希望自己容器里的內容被容器提供商窺探到。因此,Kata 3.0 引入了機密計算。
「3.0 版本里有些東西是確定可以加進去的,有些東西只是有可能,也可能會等到 3.1 版本來完全實現。」王旭說。據悉,Kata 3.0 將在今年底發布。
在王旭看來,一個相對中立的開源社區會對正確性方面有一些小潔癖,不能為了趕快上線而在質量上妥協。
「我印象里,當年 8 月初做的第一個版本,一直到 10 月末才最終合併進去。當時的架構委員會給開發人員做了很多工作,希望先保證核心功能的正確性,不足的地方可以放到後面版本修補,儘量不要將時間線拉長,影響其他開發。儘管如此,大家還是在核心質量方面沒有鬆口。」
Kata 的技術演進路線主要由開源社區、上游社區反饋和其他參與方共同完成,所有開發也會在開源社區同步。
無論 SOFAStack 還是 Kata ,都選擇了開源,實際上,螞蟻的項目越來越多地在相對成熟後選擇開源。
開源產品更容易獲得開發者的信任,且藉助開源社區的力量,激發創新,產品可以獲得原來設計方向之外的新場景,豐富產品功能。另外,社區化的運作方式會給產品更好的協作和管理機制,不容易被單一場景、單一用戶和單一貢獻方所影響。
「很大程度上,開源軟件比很多互聯網公司內部的產品,有更好的規範性和更好的運作流程,因為社區化的開源軟件對整個產品的正確性有更高的要求。」王旭表示。
而在宋順看來,技術要變成產品,就需要跟整個開源體系做好融合。宋順團隊一直提倡技術產品化、產品商業化,閉門造車既無法融入生態,也無法享受到生態紅利。「通過開源跟開發者溝通、與其他社區協作,可以使整個產品體系融入開源生態,保證路不會走偏。」宋順說道。
商業化角度考慮的另一點是,企業使用產品時總是希望自己的研發能更快上手,而產品開源能夠幫助行業新人、甚至在校生更好地學習技術,也是人才儲備的另一種方式。軟件開源,對安全也提出了更高的要求。目前最受關注的就是軟件自身的安全問題和供應鏈安全問題。
在王旭看來,很多開源代碼帶來的漏洞,實際上是不完善的流程導致的。因此,運作良好的開源社區要有完善的安全響應機制或團隊,來處理安全事件。
「質量再好的軟件也難免有漏洞,但是出現漏洞之後怎麼處理、有沒有相關流程,這是不同項目間的一個本質區別。Log4j 事件之後,我們在做關於開源軟件的探討時,都會特別提到安全問題,這是不可忽視、且必須嚴肅處理的。」
實際上,開源軟件的安全需要社區協作處理。發現問題後,開發者可以聯繫上游廠商或開源社區,觸發相應的安全響應流程。
另一種更複雜的問題就是開源供應鏈安全。
無論開源還是閉源,大公司都會考慮供應鏈安全。不同的是,很多開源軟件的版權持有方不是一個公司或者一個法律實體,而是個人作者,這對開源軟件的重新再分發會造成很多限制。這也使得企業經常面臨某個開源軟件的部分版權不是自己的,不能隨意關掉或改變許可、使用的某個開源軟件一旦更改許可證,那之後的版本也將無法使用等問題。
因此,企業開發者都希望能得到源碼,不過度依賴廠商。王旭認為,安全的開源供應鏈體現在開源項目對社區有較強的管理能力、可以做到自主可控,並對版權有較強的維護能力等。
儘管越來越多的企業選擇了上雲,但由於擔心數據被看見或丟失,企業對於重要、敏感的應用還是選擇本地運行。另外,多個數據方(通常為競爭關係)越來越多地將數據匯集到雲上進行人工智能訓練等,但都不想自己的數據被其中一方拿去。因此,隱私增強技術越來越被重視。
在眾多的隱私增強技術中,螞蟻在基礎設施側選擇了兼顧通用和高效、能單獨使用也能跟其他技術有機結合的可信執行環境 (TEE) 技術。
TEE 提供了一個由硬件支持的、可以被遠程證明真實性和完整性的「黑盒子」。這種軟硬結合的方式可以對上層應用進行安全加固、對數據流通業務性能進行加速,同時將上層應用軟件、業務和硬件結合,形成軟硬件產品。
但由於 TEE 中缺乏像 Linux 這樣的「操作系統」,一些流行的 AI 訓練框架、數據處理框架等很難在「黑盒子」里跑。所以,可信執行環境在生產中並不好用。如果使用 TEE,企業需要做大量的改造,甚至很多應用連改造也無法完成,這導致 TEE 無法大規模使用。
螞蟻要想更好地構建自己的隱私保護能力,就需要攻克這一難題。2016 年,閆守孟就開始思考如何提高 TEE 軟件的開發效率。2019 年,閆守孟加入螞蟻后創立了機密計算團隊,並發起了 Occlum TEE OS 項目,致力於大幅提高 TEE 的易用性和安全性。2020 年,機密計算團隊發表了被機密計算業界和學術界廣泛認可的論文《Occlum: Secure and Efficient Multitasking Inside a Single Enclave of Intel SGX》。
「最開始沒有投入太多的資源,後面逐漸有了一些東西後,大家覺得還可以後才加大投入。」這篇論文就是重要的階段性成果。
Occlum 使用了安全性較高的 Rust 編寫,支持多種文件系統,並提供了類 Linux 的開發體驗和類 Docker 使用體驗。2020 年,螞蟻將 Occlum 開源,Occlum 同年即成為 CCC 機密計算聯盟中第一個由中國公司發起的開源項目。目前它已在螞蟻大規模部署,並為微軟 Azure Cloud、阿里雲、眾多開源項目、隱私計算公司採用。
「對 Occlum 來說,論文發表之前可以稱為探索階段。論文的發布意味着探索有了初步的成果,之後我們便開始結合業務做產品化了,到今天跟雲原生研發流程有了很好的結合」閆守孟說。
當時,複雜多樣的 Enclave 硬件平台帶來很大的學習和使用負擔,螞蟻希望有統一的 Enclave 抽象,並支持更加自主的遠程證明控制。這就是螞蟻結合虛擬化技術和 TPM 技術的自主 TEE 平台 HyperEnclave 的由來。
不過,HyperEnclave 項目的風險要比 Occlum 更大。「Occlum 所基於的 SGX 技術,我之前在英特爾是有多年的積累的。但這個項目是全新的,而且用到的虛擬化和 TPM 技術並不是我原來最擅長的部分。關鍵是我們國家在底層技術上的人才儲備是不足的,市場上相關人才非常少,不好招 」,閆守孟回憶道,「幸好,對底層有興趣,比如有志做中國的操作系統的人還是有的,我們就招非科班出身、但有情懷的工程師,然後邊做邊學、邊學邊做。」
基礎技術的投入比較大,但生效周期又很長,有人等不到就會離開。「三年來,遇到不少技術和非技術的挑戰和波折,不少人沒能堅持下來,選擇了退出項目甚至離開公司。HyperEnclave 項目多數時間只有 3 個人,從開始到現在竟然有 4 個人中途退出。」 閆守孟感嘆道。
19 年下半年,閆守孟判斷自主可控將變得越來越重要。實際上到了 20 年左右,企業們都在加緊投入做自主可控,HyperEnclave 的價值突然變得很大,也是這個預判讓 HyperEnclave 項目的主要人員堅持了下來。他們將 HyperEnclave 的信任根託管到像中國金融認證中心(CFCA)這樣的國家信息安全基礎設施,更進一步增加了權威性和自主性。
目前,HyperEnclave 作為可適配國產 CPU 且兼容 SGX 生態的自主通用 TEE 系統,已經在螞蟻內部和外部客戶的關鍵場景實際部署。三年技術成果凝聚成的學術論文也於近日收到了系統領域頂會 USENIX ATC'22 的錄用通知。「今天,堅持下來的同學們,都成為了虛擬化技術、可信計算技術、機密計算技術領域的頂級專家。他們耐住了無人區獨行的寂寞,頂住了短期利益的誘惑,終於守得雲開見月明!」 閆守孟非常感慨。
Occlum 和 HyperEnclave 針對的是單個計算節點,但是雲原生領域有很多基於 Kubernetes 的大規模集群,並且這些環境也不適用於機密計算。閆守孟團隊開始了將 Kubernetes 和 TEE 結合起來的 KubeTEE 項目。KubeTEE 可以讓用戶進行大規模集群遠程證明服務而無需關心 TEE 細節,集群密鑰分發和同步服務讓 TEE 也支持分布式計算。
Occlum 讓單節點 TEE 更容易使用,KubeTEE 則從單節點擴展到多節點和集群,HyperEnclave 則提供了自主通用 TEE 平台,三個項目結合在一起形成了螞蟻開源的 SOFAEnclaves 技術棧,解決了機密計算目前實際應用中的三大難題。
目前,螞蟻將上層應用軟件與業務結合,還形成了一系列的軟硬件一體化產品。「將軟硬件產品通過系統層面深度性能調優,並經過最優的兼容性對接匹配測試,形成一套可以直接部署的完整解決方案。這樣我們交付給客戶的是基本上上電即用,無需額外的部署 、調優 、兼容性測試等的一套完整產品,使得客戶部署和運維均非常容易,讓客戶可以更加專注到業務本身上面來。」螞蟻集團高級技術專家孔金燦介紹道。
「我們非常希望能夠打造一個默認可信、安全的基礎設施。但是可信安全體系的根基一定是硬件。所以我們在幾年前就開始面向數據中心、邊緣計算與 IoT 的軟硬件產品研發。包括芯片、板卡、服務器、一體機等諸多產品。為可信原生夯實根基。」
孔金燦表示,在可信原生的技術體系裡面,軟硬件結合主要解決三個方面問題。
一是安全加固,比如我們做了 Blade 可信根芯片與密碼芯片,將可信啟動、可信度量、密鑰保護等進行了硬件封裝,並取得了足夠的密評資質。
二是性能加速,比如我們的密碼卡與隱私計算加速卡,對頻繁使用的密碼算法進行硬件加速,能夠有效提升應用的性能,並且進而降低大規模實施可信原生技術體系所需要付出的成本。我們通過軟硬件結合的方法,利用 FPGA、ASIC 芯片,加速了國密算法、同態加密、隱私求交等非常耗時的計算。
三是能夠形成很好的軟硬結合的產品,幫助到業務在用戶側的落地。我們採用軟硬件結合的手段,研發了可信原生軟硬件底座,內置了可信原生團隊自研的硬件與軟件產品,可以將我們的可信原生技術整體輸出。基於此,我們再結合螞蟻業務應用,先後推出了摩斯隱私計算一體機、區塊鏈一體機、OceanBase 數據庫一體機等產品,取得了很好的市場反饋。
目前螞蟻已經形成了包括底層可信軟件棧和可信硬件部件等一套完善的可信安全軟硬件底座,具體內容可以參考見下圖:
SOFABoot、SOFARPC、SOFARegistry 、Seata 等用來構建穩定、可靠、高效的分布式系統;MOSN、Realtor 等側重雲原生場景,用於實現業務應用和基礎設施解耦;而 Occlum、HyperEnclave、Kata 等更側重安全,為雲原生場景提供更安全的運行環境。可信原生團隊負責很多項目,各個項目分工不同,但組合起來又是一個有機整體。團隊的設計上始終保持開放性,確保每個組件都有其他開源組件做集成和替換。
可信原生團隊的文化可以概括為三個詞:開放,擔當和高標準,這是由技術設施研發的性質決定的。
首先,基礎設施研發需要探究技術的本質,很多技術需要經過很多的討論後才會更好地長期地發展。其次,底層組件支撐了全棧的業務,寫錯一行代碼都會造成極其嚴重的後果,而一旦出現問題,也要能夠站出來扛着壓力解決。因此,基礎設施研發要有挑戰的勇氣和能力。最後,基礎設施不僅服務自己,對整個行業發展都會產生一些推動,這背後的支撐就是極致卓越的技術。
「每個應用單獨優化的代價很高,會耗費大量人力和物力。而基礎設施研發團隊把核心的東西抽象出來,就只需要維護和優化少數幾個軟件,大部分情況下比讓每個應用團隊自己優化效果要好。」王旭說。
企業研發離不開業務,但基礎設施的研發更多時候是自己去制定研發計劃,這個計劃可能跟具體業務沒有關係。所以,基礎設施研發的成果有時候衡量起來很難。
但就像閆守孟說的,「有些東西不是業務提出來後就能很快做出來的,所以我們必須有自己的洞察,能夠比業務提前做一些,而不是跟着他們的節奏走。」這支承擔着探索先進技術任務的團隊,作為先鋒,仍將繼續前進。
嘉賓介紹:
王旭:螞蟻集團可信原生技術部的資深技術專家、木蘭開源社區 TOC 成員,也是開放基礎設施基金會頂級項目 Kata Containers 的聯合發起人。在加入螞蟻集團之前,他是安全容器領域的開源創業者,他們在 2015 年開源了基於虛擬化技術的容器引擎 runV,在 2017 年 12 月,他們和 Intel 一起宣布 runV 與 Clear Containers 項目合併,成為 Kata Containers 項目。
宋順:螞蟻集團高級技術專家,Apollo Config PMC。在微服務架構、分布式計算等領域有着豐富的經驗,2019 年加入螞蟻集團,目前專注於雲原生和微服務方向,如 Service Mesh、Serverless、Application Runtime 等。
孔金燦:螞蟻集團軟硬件高級技術專家,在數據中心包括計算存儲產品,網絡產品,以及軟硬件一體機化系統架構有着豐富經驗。加入螞蟻后負責軟硬件基礎設施產品架構和產品,包括如金融雲 / 數據庫 / 隱私計算等一體化產品和系統。
閆守孟:螞蟻集團研究員,螞蟻隱私計算基礎設施負責人。他領導了螞蟻集團 SOFAEnclave(Occlum、HyperEnclave、KubeTEE 等)機密計算軟件棧的研發,發起並主導了國內外多項 TEE 標準的制定。加入螞蟻之前,他在 Intel 中國研究院從事基礎技術研究,多項研究成果應用在 Intel 軟硬件產品中。他在 PLDI、ASPLOS、ATC、ASE 等發表了多篇頂會論文,並擁有 30 余件專利。他在西北工業大學獲得計算機應用技術專業的博士學位。
本文選自《中國卓越技術團隊訪談錄》(2022 年第二季),本期精選了微軟 Edge、螞蟻可信原生、明源雲、文因互聯、Babylon.js 等技術團隊在技術落地、團隊建設方面的實踐經驗及心得體會。本期電子書已經在 InfoQ 網站上線,大家可以掃描下圖二維碼下載,查看更多精彩內容。
《中國卓越技術團隊訪談錄》是 InfoQ 打造的重磅內容產品,以各個國內優秀企業的 IT 技術團隊為線索策劃系列採訪,希望向外界傳遞傑出技術團隊的做事方法 / 技術實踐,讓開發者了解他們的知識積累、技術演進、產品錘鍊與團隊文化等,並從中獲得有價值的見解。
訪談錄現開放長期報名通道,如果你身處傳統企業經歷了數字化轉型變革,或者正在互聯網公司進行創新技術的研發,並希望 InfoQ 可以關注和採訪你所在的技術團隊,可以添加微信:caifangfang842852,請註明來意及公司名稱。
微軟開始封禁商業開源:從 App Store 入手,7 月 16 日生效?!
遷移進行時,告別 GitHub 的時候到了?
騰訊安全回應數據產品線裁撤;馬斯克稱終止收購推特;拼多多「砍一刀」涉嫌欺詐案一審宣判 |Q 資訊
GitLab 技術選型為何如此不同:堅持用過氣 Web 框架十多年、堅決不用微服務
點個在看少個 bug👇