圖 1.基于 HTTP API 的復(fù)雜集成,需要多個(gè)跨系統(tǒng)請(qǐng)求。

當(dāng)法規(guī)影響數(shù)據(jù)去向時(shí)怎么辦?如果系統(tǒng) A 在歐盟,系統(tǒng) B 在美國,數(shù)據(jù)能否從 A 轉(zhuǎn)移到 B?我的系統(tǒng)如何跨越這些界限進(jìn)行整合?即使在同一法律管轄范圍內(nèi),金融機(jī)構(gòu)也要考慮敏感數(shù)據(jù)的管理和外流問題。集成商真正感興趣的數(shù)據(jù)不太可能通過 HTTP API 流出。

但是,為什么我們可以承受這種成本呢?現(xiàn)在,這種分離可以幫助我們?cè)诙鄠€(gè)小型工程師團(tuán)隊(duì)之間擴(kuò)展大型系統(tǒng)的構(gòu)建。它通過減少工程師對(duì)其他團(tuán)隊(duì)的信任度,來縮小他們必須達(dá)成的協(xié)議范圍。安全、隔離和冗余問題可以在網(wǎng)絡(luò)層面解決。

我們之所以付出代價(jià),是因?yàn)槲覀儧]有更好的工具來構(gòu)建系統(tǒng)。

進(jìn)入 Web Assembly

WebAssembly (Wasm) 誕生于瀏覽器,是萬維網(wǎng)聯(lián)盟(W3C)的一項(xiàng)標(biāo)準(zhǔn),它使在網(wǎng)絡(luò)上運(yùn)行用其他語言編寫的代碼和 JavaScript 成為可能。現(xiàn)在,網(wǎng)絡(luò)應(yīng)用程序可以以接近原生的速度執(zhí)行緊湊、高效的二進(jìn)制模塊,從而使 Photoshop 和 AutoCAD 等復(fù)雜的桌面軟件能夠在瀏覽器中運(yùn)行。Wasm 成功的關(guān)鍵在于它的安全模型,默認(rèn)情況下,它不允許任何代碼進(jìn)行網(wǎng)絡(luò)請(qǐng)求、讀寫文件或掌握周圍主機(jī)環(huán)境的任何信息。Wasm 在完全隔離的沙盒虛擬機(jī)中運(yùn)行,只能在主機(jī)允許的范圍內(nèi)運(yùn)行。

這對(duì)應(yīng)用程序接口和系統(tǒng)集成意味著什么?

幾年前,Wasm 擺脫了瀏覽器的束縛,并多次作為獨(dú)立虛擬機(jī)實(shí)現(xiàn)。這意味著 Wasm 模塊可以在虛擬機(jī)能夠運(yùn)行的任何地方運(yùn)行:臺(tái)式機(jī)、游戲機(jī)、服務(wù)器、物聯(lián)網(wǎng)設(shè)備、邊緣平臺(tái),甚至電視和智能手表。在服務(wù)器應(yīng)用程序中嵌入式運(yùn)行 Wasm 意味著任意、不受信任的代碼可以在我們的軟件中安全執(zhí)行,在進(jìn)程中運(yùn)行動(dòng)態(tài)代碼。

事實(shí)證明,Wasm 并不是要將其他語言的功能帶到瀏覽器中,它真正的優(yōu)勢(shì)在于將瀏覽器的功能帶到您的語言中。

讓我們重溫一下上面的場景,系統(tǒng) A 和系統(tǒng) B 通過 HTTP API 集成。如果系統(tǒng) A 可以運(yùn)行系統(tǒng) B 的代碼,但只運(yùn)行處理集成所需的部分,而不需要在互聯(lián)網(wǎng)上跳來跳去,會(huì)怎么樣呢?這里有一個(gè)簡單的理論想法來說明這一點(diǎn):

  1. Stripe 收到 Acme Corp. 客戶的信用卡收費(fèi)請(qǐng)求。
  2. Stripe 加載 Acme Corp. 的 Wasm 插件來調(diào)用該before_charge_action函數(shù),該函數(shù)返回有關(guān)購買的一些數(shù)據(jù)。
  3. Acme Corp. 的插件必須首先在 Stripe 的 API 上查找客戶的過去購買記錄。由于插件仍在 Stripe 中,因此這是一個(gè)本地函數(shù)調(diào)用 — 無需互聯(lián)網(wǎng)!這只需5-7 納秒即可完成!(作為參考,40 毫秒的洲內(nèi)跳躍是 40,000,000 納秒。)
  4. 通過購買數(shù)據(jù),插件繼續(xù)運(yùn)行并檢測到過去 30 天內(nèi)已經(jīng)進(jìn)行了 10 次類似的購買。
  5. 因此,該插件被編碼為在客戶下次購買時(shí)發(fā)送一封包含忠誠度折扣的電子郵件,因此它會(huì)對(duì) Stripe 進(jìn)行另一個(gè)函數(shù)調(diào)用以獲取電子郵件地址和客戶姓名(在 Stripe 的數(shù)據(jù)庫中管理)來填寫電子郵件模板。
  6. Stripe 已經(jīng)send email為插件提供了功能,因此它可以傳遞電子郵件內(nèi)容并直接從 Stripe 的高可靠性電子郵件服務(wù)發(fā)送。
  7. 插件將數(shù)據(jù)返回給 Stripe,扣款成功。緊接著,客戶在收件箱中看到一封友好的折扣電子郵件。

圖 2.復(fù)雜的 Wasm 插件集成,類似于圖 1(上)中系統(tǒng) A 和系統(tǒng) B 之間的流程,但所有邏輯都是事件發(fā)起方(如 Stripe)的本地邏輯。

我們無需在兩個(gè)系統(tǒng)之間通過互聯(lián)網(wǎng)調(diào)用任何應(yīng)用程序接口(API)就能完成所有這些工作。在支付交易過程中執(zhí)行可能需要很長時(shí)間的本地函數(shù)調(diào)用只需幾納秒。此外,所有交易信息和客戶數(shù)據(jù)都保留在 Stripe 的服務(wù)器上,沒有外泄或 PII 意外泄露的風(fēng)險(xiǎn)。

真實(shí)世界的 WebAssembly 集成

事實(shí)上,如今很多這樣的系統(tǒng)都是這樣工作的,使用 WebAssembly 支持安全的客戶代碼執(zhí)行。Figma 是一款廣受歡迎的設(shè)計(jì)工具,用于創(chuàng)建高保真網(wǎng)絡(luò)和移動(dòng)應(yīng)用程序模型。Figma 在 Wasm 運(yùn)行時(shí)內(nèi)運(yùn)行第三方插件代碼,使客戶能夠自由擴(kuò)展軟件的新特性和功能,而無需 Figma 介入和處理功能請(qǐng)求。Figma 同時(shí)擁有網(wǎng)絡(luò)和桌面應(yīng)用程序,那么插件開發(fā)人員是否必須為每個(gè)平臺(tái)實(shí)施一個(gè)插件?不會(huì)!Wasm 在這些平臺(tái)上的運(yùn)行方式完全相同,因此無論 Figma 在哪里運(yùn)行,相同的插件都能正常工作。

Shopify 是這種集成模式的另一個(gè)杰出實(shí)施者。這家電子商務(wù)市場的領(lǐng)導(dǎo)者多年來一直在生產(chǎn)中運(yùn)行 Wasm,為其下一代應(yīng)用程序市場提供支持:Shopify Functions。開發(fā)人員可以構(gòu)建插件,商家將其安裝到自己的商店中,直接在 Shopify 的基礎(chǔ)設(shè)施中運(yùn)行。這為平臺(tái)提供了更深層次的集成訪問,而且由于沒有網(wǎng)絡(luò)延遲,集成運(yùn)行速度很快,即使在結(jié)賬路徑中也能注入自定義行為,而在結(jié)賬路徑中,每一個(gè)微小的延遲都可能意味著銷售損失。

好處不僅限于集成速度和深度。與通過 HTTP API 相比,Shopify 還可以直接在平臺(tái)上提供更多定制服務(wù),從而保護(hù)客戶的利益。最近,一家 Shopify 應(yīng)用程序開發(fā)商承認(rèn)發(fā)生了一起嚴(yán)重的數(shù)據(jù)泄露事件,暴露了從使用其應(yīng)用程序的商家那里收集到的 Shopify 客戶數(shù)據(jù)。由于這些應(yīng)用程序調(diào)用 HTTP API 并將客戶數(shù)據(jù)存儲(chǔ)在第三方服務(wù)器上,Shopify 無法控制該開發(fā)商的安全態(tài)勢(shì)。使用 WebAssembly 插件將所有第三方代碼保存在 Shopify 上,意味著他們對(duì)類似情況的控制能力大大增強(qiáng),從而避免了這次不幸的泄漏事件。

HTTP API 將數(shù)據(jù)轉(zhuǎn)移到計(jì)算環(huán)境中使用,而 Wasm 則實(shí)現(xiàn)了革命性的轉(zhuǎn)變,將邏輯轉(zhuǎn)移到數(shù)據(jù)環(huán)境中。將數(shù)據(jù)靜止和邏輯移動(dòng)的關(guān)系顛倒過來,可以實(shí)現(xiàn)新的集成,而我們才剛剛開始利用這種關(guān)系。

期待

HTTP API 不會(huì)消失,也不會(huì)很快消失。但是,新技術(shù)和新的系統(tǒng)集成方法的出現(xiàn),意味著是時(shí)候考慮一些替代方案,或研究如何逐步改善現(xiàn)狀了。將 Wasm 的安全性和速度引入您的集成架構(gòu)有很多好處,我們看到其采用率正在迅速上升。

當(dāng)您考慮創(chuàng)建更安全的集成 API 時(shí),請(qǐng)考慮 WebAssembly。您的客戶將非常欣賞 WebAssembly 為您的平臺(tái)帶來的靈活性和易集成性。可以說,Wasm 在應(yīng)用程序接口和系統(tǒng)集成領(lǐng)域還處于起步階段,但它已經(jīng)在大大小小的公司中證明了自己的價(jià)值。

原文鏈接:Beyond the HTTP API: WebAssembly and the Future of Systems Integration

上一篇:

面向初學(xué)者的10個(gè)API測試技巧(SOAP 和 REST)

下一篇:

Service Mesh和API網(wǎng)關(guān)正在逐步融合
#你可能也喜歡這些API文章!

我們有何不同?

API服務(wù)商零注冊(cè)

多API并行試用

數(shù)據(jù)驅(qū)動(dòng)選型,提升決策效率

查看全部API→
??

熱門場景實(shí)測,選對(duì)API

#AI文本生成大模型API

對(duì)比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力

25個(gè)渠道
一鍵對(duì)比試用API 限時(shí)免費(fèi)

#AI深度推理大模型API

對(duì)比大模型API的邏輯推理準(zhǔn)確性、分析深度、可視化建議合理性

10個(gè)渠道
一鍵對(duì)比試用API 限時(shí)免費(fèi)