遷出X86架構,你準備好了嗎?

       由第一計算平面遷移到第二計算平面,也就是由原來的X86架構遷移到ARM架構,必將成爲中國IT行業發展歷史上的重要里程碑。當性能和安全擺在企業面前,讓我們選擇時,安全當然是被放在第一的位置。但是ARM架構處理器的性能本身還是非常優秀,最早ARM架構的處理器多由於軍工領域和民用的視頻音頻解壓縮處理領域。現在華爲獲得ARM的授權,在鯤鵬處理器研發上不斷推出處理器,解決了服務器最核心的CPU國產化問題,初步建立了鯤鵬生態環境,已經具備由X86架構遷移到ARM架構的技術支撐,例如web應用服務由Nginx、Apache、Tomcat,中間件由Memcached、Redis、Kafka支持,數據庫由Mysql、Mariadb和PostgreSQL支持,大數據由Hadoop、Hive、HBase支撐,開發語言則支持C、C++、Java、Ruby、Python、Perl、JavaScript、Go語言,操作系統則由CentOS、Ubuntu、openEuler、中標麒麟、UOS等支持。

       整個遷移過程根據企業原來的應用系統的技術架構不同,決定了不同的難度和工作量。我曾經經歷建設銀行的新一代業務系統遷移,是整個架構的遷移,包括了數據庫、應用軟件兩者都需要改造和遷移。也經歷過中國人壽由於Informix廠家不再提供技術支持而不得不遷移到Oracle數據庫的過程。都需要消耗巨大的物力、財力和工作量進行遷移工作。這裏面如何保證業務不受影響或對業務影響最小,保證業務連續性,以及遷移前後業務如何切換方案是需要經過非常周密的規劃設計的。遷移期間除了數據庫設計、數據遷移、代碼改造之外,工作量最大的就是驗證測試工作,驗證遷移工具的正確性,遷移前後數據的一致性、完整性、連續性等,以及對應用系統業務功能、性能、安全等方面的測試驗證。今天我簡單介紹一下代碼遷移過程中如何保證代碼本身安全的問題。

         最近看了華爲鯤鵬開發套件的設計者張汝濤的研究資料《如何實現從 x86 到鯤鵬平臺 90%C/C++ 代碼自動遷移》,因爲Java、Python等由JVM解釋執行或CPU解釋執行的開發語言,只要不依賴C和C++語言開發的公共組件,java語言直接更換JVM即可,而Python需要更換安裝相應的Python解釋器即可。而如果涉及到C和C++語言,則需要對代碼進行適當修改,並進行重新編譯。根據張汝濤介紹,華爲在鯤鵬社區提供了大量的兼容鯤鵬計算平臺的開源軟件包供開發者下載直接使用,但是這些開源軟件包的安全性如何保證呢?根據Gartner統計,每年開源軟件中暴露出4000個以上的安全漏洞,而且這個數字還在快速增長。對於開源軟件包的管理需要引起足夠重視。

      下圖是華爲給出的C/C++程序遷移過程:

 

       在軟件評估階段,首先使用Dependency Advisor對軟件進行掃描,需要用戶提供程序源代碼以及依賴的第三方庫,掃描完成給出可移植性評估報告。在這個過程中,可以藉助工具進行代碼成分分析和安全漏洞分析,分析引用的第三方庫軟件版本以及是否存在安全漏洞,爲下一步更換相應的第三方庫做準備。

       在軟件移植階段,華爲提供了Porting Advisor工具,該工具會檢查用戶軟件代碼並提供修改建議。開發人員對代碼進行修改完成後,編譯通過並不代表軟件代碼中沒有缺陷,由於當前負責代碼修改的工程師很可能已經不是原來開發該代碼的工程師了,如果只是局部的修改代碼,則很可能會影響整個代碼的安全。這時候,我們建議通過工具繪製出的控制流圖和函數調用圖,幫助代碼維護人員快速熟悉代碼結構,指針變量、全局變量和局部變量的關係等。當修改代碼後,使用工具進行代碼的快速掃描檢測,發現代碼由於修改可能導致的缺陷和安全漏洞。

         性能優化階段,通過Tuning Kit進行CPU、內存、磁盤IO、網絡IO等資源採集,以發現程序性能瓶頸。如果發現代碼性能瓶頸,則可以藉助工具協助進行整個程序的函數調用關係、函數調用次數、循環嵌套深度等分析,快速發現代碼中的瓶頸並進行修復。

       在代碼移植過程中,如果對代碼自主研發比率感興趣,可以藉助工具分析一下到底代碼中有多少比例是自主開發的,多少是引用的第三方庫。如果程序代碼有多個版本,藉助工具中的兩個程序代碼對比功能,可以快速的發現版本之間的代碼差別,可以定位到行級。相對開發人員常用的WinDiff等單文本比較工具,對比工具應該能夠從項目工程視角,進行文件級和函數級對比分析。

       面向X86架構到ARM架構的遷移,客戶移植過程中的客戶需求必定是多樣化的,這就爲基於代碼檢測分析的工具廠商提供了可以發揮的空間。快速的代碼自動化遷移、掃描、檢測、性能優化等是必然趨勢。

 

關注安全  關注作者

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章