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