破解云計(jì)算應(yīng)用程序的遷移問(wèn)題
在IT行業(yè)中,在應(yīng)用程序的可移植性方面的嘗試已花費(fèi)了大家大量的時(shí)間和金錢(qián)。毫不奇怪,云計(jì)算中應(yīng)用程序遷移的目的在于以某種方式使應(yīng)用程序更具云計(jì)算可移植性。我們至少可以在以下三個(gè)方面入手:
• 使應(yīng)用程序的架構(gòu)更趨合理,以提升其在云中的可移植性。
• 為云計(jì)算開(kāi)發(fā)開(kāi)放式標(biāo)準(zhǔn)。
• 尋找無(wú)需修改就可在云中實(shí)現(xiàn)應(yīng)用程序遷移的工具。
當(dāng)前,絕大多數(shù)的大型、老式、單一的應(yīng)用程序都不具備可移植性,必須對(duì)它們進(jìn)行重新編寫(xiě)以適應(yīng)目標(biāo)環(huán)境。其他有些需要特殊硬件支持的應(yīng)用程序是不具備較高的可移植性,甚至許多最近發(fā)布的較新應(yīng)用程序也不具可移植性,更不用說(shuō)他們?cè)谠朴?jì)算中的可移植性了。
應(yīng)用程序架構(gòu)與云計(jì)算
許多云計(jì)算專(zhuān)家都指出了應(yīng)用程序的架構(gòu)對(duì)于應(yīng)用程序在云間遷移能力的重要意義。合適的云計(jì)算應(yīng)用程序架構(gòu)是云計(jì)算互操作性解決方案的一部分,而現(xiàn)有的應(yīng)用程序可能需要重新進(jìn)行架構(gòu)設(shè)計(jì)以滿足可移植性的要求。其關(guān)鍵在于應(yīng)用程序的架構(gòu)應(yīng)當(dāng)能夠減少或消除應(yīng)用程序棧與云計(jì)算服務(wù)供應(yīng)商所提供功能之間難以解決的依賴性。
HyperStratus公司的CEO Bernard Golden指出,為了挖掘云計(jì)算環(huán)境的靈活性,一定要了解哪些應(yīng)用程序架構(gòu)有助于應(yīng)用程序在云中正常運(yùn)行,哪些種類(lèi)的應(yīng)用程序和數(shù)據(jù)能夠在云計(jì)算環(huán)境中、數(shù)據(jù)備份需求中以及系統(tǒng)負(fù)載中運(yùn)行良好。
目前,至少有三種流行的云計(jì)算應(yīng)用程序架構(gòu):
• 傳統(tǒng)應(yīng)用程序架構(gòu)(如三層架構(gòu)),可用于穩(wěn)定負(fù)載的應(yīng)用中。這類(lèi)應(yīng)用不需要負(fù)載有變化的架構(gòu)。
• 同步應(yīng)用程序架構(gòu),這一架構(gòu)中最終用戶交互是主要的關(guān)注點(diǎn)。通常情況下,在短時(shí)間內(nèi)大量的用戶的集中使用會(huì)對(duì)網(wǎng)絡(luò)應(yīng)用程序造成極大的沖擊,并對(duì)應(yīng)用程序和系統(tǒng)的穩(wěn)定性造成不良影響。
• 異步應(yīng)用程序架構(gòu),基本上所有這一架構(gòu)的批處理應(yīng)用程序都不支持最終用戶交互。它們基于數(shù)據(jù)集工作,在數(shù)據(jù)庫(kù)中提取和插入數(shù)據(jù)。云計(jì)算實(shí)現(xiàn)了服務(wù)器資源的可擴(kuò)展性,用不同的方法實(shí)現(xiàn)了將長(zhǎng)期運(yùn)行的異步工作分散部署在若干服務(wù)器,以實(shí)現(xiàn)處理負(fù)載共享。
平臺(tái)即服務(wù)(PaaS)供應(yīng)商為開(kāi)發(fā)應(yīng)用程序提供工具,為運(yùn)行這些應(yīng)用程序提供環(huán)境。為了發(fā)布一個(gè)PaaS平臺(tái)下的應(yīng)用程序,你必須在該平臺(tái)下開(kāi)發(fā)和部署該應(yīng)用程序;這就是Google應(yīng)用程序引擎的工作方式。你只能在Google 服務(wù)上部署應(yīng)用程序引擎的應(yīng)用程序,但是諸如Appistry CloudIO之類(lèi)的云計(jì)算應(yīng)用程序平臺(tái)允許進(jìn)行內(nèi)部私有云部署和在諸如Amazon EC2之類(lèi)的公共云基礎(chǔ)設(shè)施上的部署。
應(yīng)用程序的開(kāi)發(fā)環(huán)境與運(yùn)行環(huán)境都是設(shè)計(jì)應(yīng)用程序架構(gòu)時(shí)應(yīng)當(dāng)納入考慮范圍的重要因素。例如,如果你在一個(gè)無(wú)租戶的私有云環(huán)境中進(jìn)行開(kāi)發(fā)工作,那么這樣的應(yīng)用程序是否能夠在多租戶情況普遍的目標(biāo)云環(huán)境中正常工作呢?將新的應(yīng)用程序與原有應(yīng)用程序進(jìn)行集成也是應(yīng)用程序開(kāi)發(fā)中的關(guān)鍵內(nèi)容部分。如果集成工作涉及到云計(jì)算供應(yīng)商,那么其難度將不言而喻,因?yàn)樵朴?jì)算供應(yīng)商一般沒(méi)有訪問(wèn)基礎(chǔ)設(shè)施、應(yīng)用程序以及集成平臺(tái)的公開(kāi)通道。
依賴于部分特定硬件的較舊應(yīng)用程序(即這些應(yīng)用程序需要某種特定類(lèi)型的網(wǎng)絡(luò)控制器或磁盤(pán))也是非常的麻煩。云計(jì)算供應(yīng)商可能不會(huì)考慮在其基礎(chǔ)設(shè)施中繼續(xù)使用這些較老的硬件。
在應(yīng)用程序遷移的工作中,你可以決定使用一個(gè)云計(jì)算供應(yīng)商模板進(jìn)行啟動(dòng),在這個(gè)模板中有一個(gè)供應(yīng)商為你提供的操作系統(tǒng),其典型代表是CentOS或Red Hat公司的企業(yè)版Linux模板。然后,你就需要在這個(gè)操作系統(tǒng)上運(yùn)行你的應(yīng)用程序,調(diào)試并消除源應(yīng)用程序環(huán)境和目標(biāo)環(huán)境之間的不匹配。真正的挑戰(zhàn)是,這一方法變成了一個(gè)伴隨著很多變通方法和變更的未知過(guò)程。
隨著不斷地遇到一連串的問(wèn)題,不斷地解決這些問(wèn)題,你就會(huì)發(fā)現(xiàn)你幾乎就是在重新編寫(xiě)這個(gè)應(yīng)用程序了。希望你并不是必須完全重寫(xiě)這個(gè)程序,但是毫無(wú)疑問(wèn)你一定會(huì)修改某些配置以及其他的關(guān)鍵細(xì)節(jié)。然后,在你面前的就是一個(gè)完全不同的應(yīng)用程序了。這可能是好事也可能是壞事,但至少你已經(jīng)至少有了這個(gè)應(yīng)用程序的兩個(gè)版本——數(shù)據(jù)中心版和云計(jì)算版。
如果在數(shù)據(jù)中心和云之間(或者在云之間)遷移一個(gè)應(yīng)用程序會(huì)導(dǎo)致產(chǎn)生一個(gè)應(yīng)用程序的兩個(gè)不同版本,那么等待你的將是一個(gè)應(yīng)用程序的眾多版本集了。當(dāng)你調(diào)試和遇到問(wèn)題時(shí),你就必須面對(duì)這一具有眾多版本的應(yīng)用程序集了。