挑戰有何不同!云環境中開發 vs 云環境中管理
原創云計算的優點已經被捧上了天,主要包括能夠帶來業務敏捷性、可擴展性、效率以及節省成本;而許多公司正以越來越快的步伐,遷移和構建專門面向云環境的關鍵任務型Java應用程序。我們最近采訪了AppDynamics 公司的工程技術主管Bhaskar Sunkara——這家應用程序性能公司專注于Java和云應用程序,探討了為云環境開發Java應用程序以及在云環境中管理這些應用程序面臨的挑戰。
為云環境進行開發面臨哪些挑戰?
為云環境進行開發面臨的主要挑戰之一是,了解應用程序與服務的依賴關系(application service dependencies)是如何處理的,這比了解編程語言還要重要。應用程序與服務的依賴關系包括:分布式環境中部署的數據庫、消息服務器或其他服務。這些傳統上是通過在部署過程中將服務引用映射到物理IP來處理的,但是云帶來了一個新的變化因素,連IP地址都不是事先知道的。
那么,您如何知道所有這些依賴關系在哪里、又該如何利用它們?
從根本上來講,當你擁有面向服務的環境時,會有許多服務彼此“會話”,并且利用眾多基礎架構元素。在任何一個特定的時間,你的服務可能使用所有其他這些服務。在傳統的靜態環境中,你很容易了解這些元素在哪里,然后編寫代碼。開發人員能夠確認資源,會知道應用程序一旦部署下去,要使用什么資源。可是在云環境中,無法保證應用程序會使用哪種IP,也無法保證它會如何查找服務或數據。
開發人員需要深入了解如何以一種非常明智的方式來使用服務。高效找到資源的功能需要成為應用程序的一部分,謹慎地使用這項功能方面要有可重復使用的模式。使用查找模式來找到你想使用的服務,是解決這個問題的流行方法之一。如果你在構建應用程序時沒有考慮到這些因素,就可能帶來無法管理的擴展性和重構問題。
至于正式的規范,J2EE在部署過程中借助資源映射,在資源依賴關系方面已經做得很到位。比如說,應用程序與數據庫進行聯系,而你與為你提供連接的邏輯資源進行聯系。當你部署應用程序時,把這個資源映射到實際的數據庫IP/URL,不需要硬編碼。
在J2EE開發模式中,開發人員得到JNDI命名上下文,讓他們可以查找所需要的服務——這需要用可以將IP依賴關系抽取出來的可感知云的命名上下文來加以包裝。這么做的話,可感知云的命名上下文是擁有“服務定位器”(Service Locator)元素的唯一元素,維護起來要容易得多。
為云環境進行開發面臨的另一個問題是處理橫向擴展——Java開發人員應該知道哪些東西?
云計算的一個基本前提是它能夠便于橫向擴展(horizontal scaling),但不是所有的應用程序天生都可以橫向擴展,它們也從來沒必要橫向擴展。必須確保云環境中的任何應用程序都具有無狀態性(Statelessness)。對于按需基礎架構而言,喜歡本地保留狀態的習性打破了一切。編寫的應用程序必須確保:需要擴展的任何應用層都具有橫向擴展的能力。在最近的幾年里,我們開始看到了比較新的應用程序中出現這種情況,但這對許多開發人員來說仍是個障礙。
如果讓您為從事云環境編程的Java開發人員提議一個最佳實踐,那會是什么?
別對數據存儲局部化!如果你這么做,這幾乎如同將數據處理局部化到某一個Java虛擬機(JVM),而不是把它當作云來對待。這可能會帶來局部化到JVM的依賴關系。數據管理應該總是分布式的。你一定要假設服務器會失效,而且是常常失效。關系數據庫不再是云環境中的常態。由于應用程序生態系統出現了那么多的變化,應用程序必須天生是無狀態的。
當然了,也不要使用物理IP或基于磁盤的定位器來查找你在應用程序中需要使用的服務。要依靠把物理IP抽取出來的位置模式或服務。
那真是個好點子。最后,開發人員將應用程序部署到云環境之前,應用程序測試方面要了解哪些東西?
如果你想測試處于開發周期的應用程序,如果你想看看它在云環境中怎樣運行,就面臨這個挑戰:從本地開發環境遷移到云環境。想從本地開發環境進入到云環境有難度。事實上,沒有辦法有效地模擬一旦應用程序部署下去,云環境的外觀感覺會怎么樣。能處理云環境的集成開發環境(IDE)同樣仍在不斷成熟當中。從本地測試環境切換到云環境的過程越順暢,開發周期的效率就越高。過去將應用程序部署到云環境上常常困難重重。現在要容易多了,但要讓整個過程變得真正的高效順暢,開發工具依然有很大的發展空間。
原文名:Developing for the cloud: How developing in the cloud is different 作者:Cameron McKenzie et al.
【本文乃51CTO精選譯文,轉載請標明出處!】
【編輯推薦】
- 微軟公布云計算平臺Azure收費模式細節
- 云計算意在長遠,微軟云計算服務Windows Azure已經啟用
- 技術透析:Windows Azure Platform框架與組成
- 微軟Windows Azure Platform技術解析
- 走近微軟云:SQL Server到Azure數據同步
- 當微軟Azure遭遇亞馬遜EC2:五大關鍵區別
- Windows Azure云計算平臺新增五大功能
- 云計算前途光明 Azure用戶數突破31000
- 如何把應用程序部署到Windows Azure中

























