試圖減少鎖定、提高云計算互操作性并最終為自己的企業(yè)選擇最佳的解決方案,眾多云計算用戶一直以來都在極力尋求實現云到云的無縫遷移功能。令人遺憾的是,上述需求還未能得到滿足,因為目前的應用程序遷移還只能執(zhí)行簡單的將一個應用程序遷移至一個新云中之類的功能。
到目前為止,云中的云計算應用程序遷移一直都集中在虛擬數據中心之間或私有云與公共云環(huán)境之間進行應用程序的遷移,如Amazon的彈性計算云、Rackspace公司以及Savvis公司。還有一些基于公共云服務的公司,他們正致力于將應用程序遷移至私有云或虛擬數據中心以達到節(jié)省成本的目的。還有一些公司則致力于實現在公共云之間的應用程序遷移,以實現在較低成本代價下的更好服務水平協(xié)議和/或性能。
那么在不同云計算環(huán)境中遷移應用程序都有著哪些隱憂
在傳輸過程中的數據遷移和加密問題,以及何時數據到達目標云環(huán)境中。建立網絡以便于在源云環(huán)境中保持某種關系,并準備連接至由目標云環(huán)境所提供的不同網絡選項。
在本身即是一個完整系統(tǒng)的應用程序周圍,也充斥著各種各樣的工具和流程。當應用程序遷移至目標云時,你可能需要根據目標云所提供的組件、資源對應用程序的架構重新進行設計。
可采用各種各樣不同的平臺即服務產品來構建應用程序,其中包括Windows公司的Azure,Google公司的應用程序引擎以及Force.com。除了個別WindowsAzure的特例之外,你使用大多數平臺所開發(fā)的應用程序基本不支持跨平臺兼容性。如果你在Google公司的應用程序引擎上進行開發(fā)工作,那么你的應用程序就必須基于Google應用程序引擎而正常運行。
而諸如Amazon之類的公共云也允許你開發(fā)應用程序。這類似于在你的數據中心或私有云中進行開發(fā)工作,但是公共云對你在開發(fā)過程中所使用的資源和組件添加了一定的限制。當你試圖將應用程序遷移至數據中心的生產狀態(tài)或另一個云計算環(huán)境中時,這就有可能增加測試工作的難度,同時產生無法預知的問題。
在數據中心中開發(fā)的應用程序可能會、也可能不會很容易地遷移至目標云環(huán)境。大量的應用程序使用了第三方軟件,如數據庫應用程序和生產力應用程序。如果無法訪問應用程序的源代碼,當需要進行變更時,專用的第三方應用程序就很難遷移至云計算環(huán)境中。
云計算應用程序遷移的并發(fā)癥為什么在云中的應用程序遷移是如此的困難?在傳統(tǒng)的應用程序開發(fā)中,我們的開發(fā)人員完全掌控了他們所需的一切資源和信息:一臺物理服務器、一個操作系統(tǒng)、所需的內存空間、磁盤存儲系統(tǒng)、網絡配置、補丁以及運行時系統(tǒng)(如Java)。一切皆在掌控中。
但是當服務器整合出現時,我們對應用程序環(huán)境的概念就有所改變。我們擁有一個仍在開發(fā)人員掌控中的應用程序環(huán)境,個人物理服務器。管理程序為我們提供了硬件和該環(huán)境中所有其他的一切資源與信息,這樣我們的操作系統(tǒng)、中間件以及應用程序仍舊擁有著他們所需的一切。
但是,當我們來到了云計算時代時,都是由云計算供應商來選擇操作系統(tǒng)、管理工具、網絡架構、存儲系統(tǒng)以及虛擬機配置。所有這些都是你進行開發(fā)工作的最基本條件,而你對進行應用程序開發(fā)工作和部署工作的環(huán)境失去了大部分的控制。如果你想要把你的部分應用程序遷移至一個云環(huán)境,那么你就必須讓它們能夠在另一個環(huán)境中正常工作,而這個新環(huán)境往往與這些應用程序上一次所部署和開發(fā)的環(huán)境大相徑庭。
由云計算供應商所作出的決定往往會影響你在其云計算環(huán)境中的所能實現的功能。例如,一個云計算供應商可以決定采用廉價的磁盤驅動器,在虛擬層使用大NFS共享或iSCSI共享,而這恰恰就為你的虛擬機的性能、保護等級和原始存儲容量設置了瓶頸。通常情況下,作為用戶的你是無法對此說三道四且必須忍受。[nextpage]
再讓我們來看看Amazon。這一公共云計算的引領者已決定了你的虛擬機的每一個接口都要配有一個網絡適配器。它也不支持第2層連接或廣播和多點傳送。當你進入這些類型的環(huán)境中,你的應用程序設計受限于云計算環(huán)境的資源,當然你也可以訪問在這種情況中的網絡。另外一個例子則進一步說明了在不同層次上各種功能是如何影響你將應用程序遷移至云和在云之間進行應用程序遷移的能力。你已選擇MySQL作為你應用程序的數據庫系統(tǒng)。你可以使用MySQL實現的功能之一就是數據庫復制——即兩個數據庫實例保持同步。MySQL的復制過程使用了多點傳送作為低層次以太網的一部分,以實現兩個數據庫實例之間的通信。如果你希望在Amazon上運行你的應用程序,并復制數據庫,那么你就遇到了一個棘手的問題:Amazon在其網絡層不支持多點傳送。
所以您該如何解決這個問題
你可以在你的應用程序中使用一個不同的數據庫,或者你也可以采用不同的復制功能,但是那可能會影響到MySQL或需要通過應用程序處理該問題。無論采用哪種方法,如果你正考慮互操作性和在云之間遷移應用程序,你還必須考慮你整個軟件棧在目標云計算環(huán)境中由頂至底的集成。
目前的挑戰(zhàn)在于你可能不知道你應用程序棧組件和云環(huán)境本身部件之間的依賴關系。使用云計算服務本身就蘊含著巨大的價值。但是如果你要花費大量的精力、如果它需要你承擔大量的維護和支持任務,那么你因為使用云計算而獲得的收益就將大打折扣。
便于在云中進行應用程序遷移的工具鑒于環(huán)境間的差異,有些客戶可能不希望在目標云環(huán)境中通過艱苦卓絕的過程而使其應用程序能夠正常工作。但是如果我們能為新的云環(huán)境中的虛擬機提供正好是它所需要的東西——獨立的管理程序、云計算環(huán)境,那么應用程序遷移的工作就會比較容易了。這正是CloudSwitch和Racemi所提供的產品。
CloudSwitch的云分離技術有助于實現多應用程序的遷移工作,該技術是一個在云計算供應商管理程序和最終用戶操作系統(tǒng)之間自動運行的虛擬技術層。該虛擬層為虛擬機提供了它所需要的信息——無需向云計算供應商提出任何特殊要求——并以客戶的名義運行以保護和隔離云中的環(huán)境。當使用CloudSwitch時,無需對應用程序做特殊的修改;它對應用程序進行映射就如同它在目標云計算環(huán)境中運行一樣,而事實上它維持了與源云環(huán)境中完全一致的配置。
與CloudSwitch相比,Racemi則另辟蹊徑以實現應用程序遷移。其方法是占據一臺在某一環(huán)境中(數據中心或云環(huán)境)的物理或虛擬的服務器,然后將其部署在一個目標環(huán)境中(數據中心或云環(huán)境)。Racemi應用程序遷移產品的一個重要組成部分是一個管理設備,它可訪問之前所占據的服務器環(huán)境和目標服務器環(huán)境,并開始這兩者之間的映射過程。一旦這種映射過程完成后,占據-部署工作也完成,而應用程序也已被遷移至目標環(huán)境。
云計算應用程序遷移服務應用程序遷移在混合云中也是一個相當大的問題,而當你希望將一個應用程序從你的數據中心遷移至公共云時,這可能就不再是一個問題了。但是,你可能仍然會遇到上面所討論的一些問題。
與處理潛在不兼容的云計算應用程序編程接口相比,應用程序遷移所涉及的內容要更為廣泛。如果你的源云環(huán)境和目標云環(huán)境在管理程序、操作系統(tǒng)、存儲系統(tǒng)和網絡配置以及驅動器等方面存在著差異,那么在應用程序棧的每個層次都存在著潛在的問題。
當你試圖進行應用程序遷移和創(chuàng)建云計算環(huán)境時,你需要對云計算環(huán)境間的差異做一次徹底的調查,審查你的應用程序架構以確定它們是否可以合理匹配。在本系列云計算應用程序遷移的第二部分中,我們將為那些困難的遷移實例提供一些可能的解決方案。