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