php 编程 Android Python wordpress Firefox centos 云计算 apache Ubuntu mysql 程序员 微软 开源 google nginx java linux shell Windows

研發基於雲計算的應用軟件與傳統軟件的差異

本文講的是研發基於雲計算的應用軟件與傳統軟件的差異,【IT168 資訊】雲配置能幫助研發人員從應付基礎架構的瑣事中解脫出來,但又出現了一些必須應對的新差異。這些差異包括研發人員如何使用數據庫,對無國界應用軟件的使用範圍和如何應對不同的框架結構。
  雲上的無國界問題和服務器故障
  Sun公司負責雲計算業務的首席技術官Lew Tucker表示"如今最大的變化就是軟件本身就能夠提供應用軟件所需的資源"。研發人員為雲編譯應用軟件使用API(應用編程接口)就能實現設計,這樣他們就需要從雲供應商處獲得更多資源。
  微軟公司負責Windows Azure雲平臺的企業副總裁Amitabh Srivistava表示,研發人員必須針對商用設備在雲上的使用和冗余進行設計。他認為"這是設備出現故障時的保證,這樣你就必須設計能在雲上運行的冗余應用軟件"。
  創建雲需要設計無國界應用軟件,Srivistava表示"如果你有國界限制,就會成為問題。雲上的模式是通過設計無國界應用軟件,如果有軟件失靈,你就可以放棄它重新來過"。有了雲,就沒有了本地硬盤的概念。也沒有了國籍的限制,但這些都取決於你使用的是無國界應用軟件。
  Sun的Tucker強調說"應用軟件最容易的類型就是無國界。不過有趣的應用軟件總是有國界限制的,這也是為什麽我們仍然需要數據庫或者目標物來存儲某些國界屬性,保留諸如用戶信息的條款"。但是網絡前端這樣需要擴展的應用軟件的組成部分在雲上都是無國界的。
  雲的另一項不同之處:應用軟件不同部分可能會出現在雲上的不同地方。舉例來說,演示層可能在Facebook上,存儲是在亞馬遜在線的S3上,應用軟件邏輯層可能是在其他地方運行等。Tucker表示"在此之前,人們只是在自己的服務器上完成整個應用軟件的研發"。
  所有這些問題意味著創建雲需要對系統體系架構的新型思維和對大規模擴展的重視。Tucker表示"這裏沒有魔術可言。為雲創建可擴展應用軟件仍然需要紮實的技術基礎和高超的設計理念"。
  但雲平臺會對應用軟件研發有所幫助。在某些情況下,諸如使用谷歌的App Engine,某些應用軟件就能自動執行擴展,而在其他情況下,設計模板能用於水平擴展應用軟件。亞馬遜在線的彈性計算雲能提供多重可用區 (Multiple Availability Zones),這樣研發人員能將一個應用軟件分配到多個位置。發言人Kay Kinton表示"在此之前,只有非常大型的企業才有實力這麽做"。彈性計算雲中一種稱之為"彈性ip"(Elastic IP)的能力能實現將互聯網地址從失效實例到可用實例的快速重新定位。
雲上數據庫的不同點
  提取和無國界的應用也涉及到數據庫。Benjamin Day Consulting的總裁Ben Day就舉例說,Azure比起標準的關聯模板能為研發人員提供不同種類的數據庫。Azure存儲引擎不能用於標準的關聯數據庫,因此如果你使用標準關聯數據庫開發一款標準應用軟件,能用到的很多元素在雲數據庫中是無法使用的。他還以存儲流程中的關聯數據庫概念為例表示,查詢邏輯和真實的數據比較接近。在Azure雲上就無法使用。
  Day表示"問題是使用Azure的話,不能保證數據在任何特殊的位置,數據庫或者任何特殊設備上也能使用。這樣你就無法編譯SQL查詢,因為存儲流程無法再進行關聯"。另外,Azure存儲引擎與微軟規劃的SQL Server的SQL數據庫服務雲版本是不同的,Day強調說,因此研發人員在編譯時必須非常小心。比如說,SQL Server是將數據存儲在表格中,而Azure是將1MB文件作為二進制大對象來存儲的。
  而且並不只是Azure有這些數據庫的差異。谷歌的App Engine產品經理Pete Koomen舉例說,谷歌的App Engine不僅抽取了真實物理硬件而且還有設備的任何概念。這就意味著研發人員可以上傳代碼,然後谷歌對其在數據庫中進行管理和分類。Koomen表示"因為我們讓整個流程更加自動化,因此這種研發人員必須遵循的特定模式與傳統的結構化查詢語言模式是不同的"。
  使用App Engine,研發人員就可以利用谷歌的Big Table數據存儲來用於永久儲存。Koomen解釋說"Big Table不是一種結構化查詢語言數據庫,原因是某些由SQL數據庫支持的函數會讓數據庫在多重平臺上的分離非常困難"。
  Koomen還表示"使用我們的系統,我們實行的是從開始就采用反向思維的編程模式"。研發人員同時在不同地點存儲數據的好處是這種方法能讓應用軟件非常有效的進行查詢。
  Koomen反對在雲環境中使用關聯數據庫:"我們發現在流量高發的情況下,關聯數據庫非常難於管理,還會耗費研發人員大量的資金和資源"。
適應雲上的快速變化
  咨詢公司Model Metrics在Salesforce.com和其他雲上運行了應用軟件。公司的首席技術官約翰.巴恩斯表示,他們發現在雲基礎應用軟件研發和網絡客戶端服務器研發之間的主要不同是"雲上的變化更為迅速"。
  舉例來說,Salesforce.com一年會更新多次,每次升級可能都有一些研發人員需要利用的地方。巴恩斯表示"作為一名研發人員,你必須和這些研發變化保持同步。密切關註不同博客上發表的最新動向"。
  研發人員還應該了解不同的設計模型,比如最終連貫性對於應用軟件就是幾毫秒都會發生變化的屬性。巴恩斯表示"結果就是你無法利用數據庫來追蹤下一個價值點。出於類似原因,他們要想利用雲,就要針對輕微的差異進行編程"。
處理雲上的相關問題
  巴恩斯表示雲上提供的網絡服務讓研發平臺更加容易。研發人員只需關註創新和業務邏輯,而不用擔心諸如操作系統和硬件設備等基礎架構。舉例來說,Salesforce.com Force.com雲就能提供安全,工作流,管理和負載平衡。
  Model Metrics公司有一家用戶,本來計劃在微軟的.Net平臺上創建學院準入應用軟件,但是他們發現如果在Force.com上研發價格能便宜3到4倍,因為Force.com使用的是預先創建的功能函數。
對雲上研發人員的忠告
  不過研發人員必須謹記在雲平臺和許可證模式之間的差異,巴恩斯表示:不同的雲有不同的定價體制。
  Salesforce.com研發市場部門副總裁亞當.格裏斯向關註雲的研發人員提出了自己的忠告:研發人員必須了解他們選擇的供應商。Koomen也表示"他們應該以能脫離平臺的方式來研發他們的應用軟件"。谷歌就是通過支持常用的Python語言和Django網絡框架來實現這種靈活性。 Koomen還表示,谷歌正在研發開源上傳和下載工具來實現數據在App Engine上的進出。

延伸阅读

    评论