蘋果工程師近日分享了他們用 Swift 重寫 Java 服務器端應用的經歷。
據介紹,這個服務器端應用是“密碼監視”功能的核心組件,原本采用 Java 實現,每天需要處理來自世界各地設備的數十億次請求。
“密碼監視”是蘋果官方密碼管理應用程序「Passwords」的一項功能,可警告用戶其保存的密碼是否出現在數據泄露中。 該功能包含一個運行在基于 Linux 基礎設施上的服務器組件(由蘋果公司維護),采用密碼學中的私有集合交集協議,在保護用戶隱私的前提下完成密碼監控任務。
蘋果工程師采用 Swift 重寫后,該服務的后端性能提升了 40%,同時增強了可擴展性、安全性和可用性。
性能提升
與之前的 Java 服務相比,更新后的后端性能提升了 40%。
在當前的生產硬件上,99.9% 的請求的延遲在 1 毫秒以內。
內存占用
遷移到 Swift 后,服務的內存占用顯著減少,降低 90%
代碼量變化
Swift 允許編寫更小、更簡潔、更易讀的代碼庫,代碼量減少了約 85%。
資源利用率
遷移后,服務的內存和 CPU 利用效率提高,釋放了約 50% 的容量供其他工作負載使用。
該團隊工程師表示,從 Java 遷移到 Swift 的動機是更高效地擴展“密碼監視”服務的伸縮性,該服務使用的分層加密模塊對每個請求都需要大量的計算,但整體服務即使在負載高的情況下也需要快速響應。
鑒于我們應用程序的規模以及我們每日管理的流量,從 Java 遷移到另一種語言并非輕易的決策。我們評估了可選項,發現只有少數幾種語言能夠幫助我們實現目標。 雖然你可能預期蘋果會自動選擇 Swift,但我們對它如何契合自身云服務的獨特需求感到非常驚喜。Swift 具有易于學習的表達性語法,并且能夠提供必要的性能提升,以滿足我們計算工作負載的需求。 因此我們決定進行一次重大飛躍,并使用 Swift 重寫“密碼監視”功能的后端。
在重寫過程中,該團隊選擇了開源 Swift Web 框架 Vapor 框架作為開發基礎。該框架提供了路由、控制器和內容模塊,他們在此基礎上進行構建。
由于他們的服務有額外需求,因此還創建了一些包含核心功能的自定義包:橢圓曲線操作對于實現密碼監視至關重要,還有審計、配置、錯誤處理和自定義中間件。
總的來說,該團隊對使用 Swift 重寫這項服務給予了非常正面的評價,比最初估計的速度更快地完成了任務。
Swift 使我們能夠編寫更小、更簡潔、更具表現力的代碼庫(代碼行數減少了近 85%),這些代碼庫在優先考慮安全性和效率的同時,具有很高的可讀性。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.