3月13日外電頭條:云服務顛覆開發傳統觀念
原創【51CTO.com快譯】云計算肯定已經成為2009年的熱點技術發展趨勢。云應用的數量將大幅增長,這將給開發者帶來新的利益,也會讓他們擔負起更多的責任。
云服務的主機放置在Internet上,用戶直接從Internet的服務器集群上獲取應用和服務,這樣的部署可以讓開發人員不必再過多關心底層架構問題,但其中有一些新的細微差別是他們必須處理的。這些問題包括改變數據庫的開發方式,無狀態的重點應用,以及對不同框架進行處理?!?FONT face=楷體_GB2312>51CTO.com編者注,無狀態即statelessness,是指云提供無狀態的服務,這種服務是短連接的,比如Session,云里不會保留一個會話狀態信息,云計算技術中包含了維護應用程序狀態變化的機制。 】
云服務固有的無狀態性和服務器故障
“在云計算中,軟件本身能夠提供應用所需要的資源,這是***的變化,”Sun公司云計算CTO Lew Tucker說。通過使用API,開發人員可以為云應用編寫程序,并直接向云提供商要求更多的資源。
開發人員需要進行冗余設計,因為云服務中的服務器是平均分配的,微軟Azure云平臺副總裁Amitabh Srivistava表示,“如果你不為云應用設計冗余的話,服務器出錯幾乎是不可避免的?!?/P>
云應用必須按照無狀態搭建,Srivistava說?!叭绻銚碛泄潭ǖ臓顟B,就會出現問題。云服務的模型則是:如果有的應用失效了,你可以移除它并取而代之,”當然這需要無狀態設計,他指出:在云中“沒有任何概念的本地磁盤,也沒有真正的登錄。云中所有的一切應用都被無狀態無形地包裹著?!?/P>
Tucker指出,“簡單的云應用絕對應該是無狀態的。然而,很多有趣的應用總是免不了記錄一些狀態,這就是為什么我們仍然需要數據庫或對象商店來存儲一些東西”。某些項目比如用戶信息可以存儲起來。但是,具有規模的應用程序比如網絡前端,在云中依然是無狀態的。
云應用的另一個差異是應用的組件可以在不同的云中運行。例如,一個應用可以調用Facebook的表現層,把數據儲存在Amazon的S3上,而邏輯運算則完全可以放置在其他地方,Tucker說,“以前,人們一般都會在自己的服務器上把整個應用開發出來,現在不需要這樣了。”
這些事情意味著,建設云應用需要新的系統架構和新的思維方法,需要把云服務的巨大規模重點考慮進來。Tucker說,“這里沒有魔法,構建可擴展的云應用需要堅實的工程基礎和設計”。
云平臺可以提供幫助。Tucker說,比如Google App Engine就為受限應用自動提供了擴展性,另外一些平臺提供了橫向的應用設計模式,比如Amazon的彈性云計算平臺EC2提供了Multiple Availability Zones,開發人員從設計開始就可以把應用分散到多個地點上。
不一樣的云數據庫
抽象和無狀態的使用也影響到數據庫。例如,Azure平臺提出了一個非標準關系數據庫的模型,可以從另一個角度建立數據庫。咨詢公司Benjamin Day Consulting總裁Ben Day指出,Azure的存儲引擎不使用標準的關系數據庫,因此“如果仍然按照標準的關系型數據庫來開發標準的應用,很多工作可能會變得沒有意義,”他舉了一個關系型數據庫存儲過程的例子,其中的查詢邏輯方法可以接近實際的數據,而這已經不再適用于Azure的云服務。
“但問題是Azure的數據沒有保證,你不知道你的數據到底保存在哪個服務器或Datacenter或任何設備中,” Day說。另外,Azure的存儲引擎與微軟提供的基于云服務的SQL Server版本是不同的,因此他指出,開發者在設計應用時必須小心。
據了解,微軟也正在加速開發Azure利用關系型數據庫的能力,同時為非關系型數據存儲也提供了數據表式的存儲選擇。
并不僅僅在Azure上出現了數據庫的分歧。例如,“Google App Engine不僅不會看到實際的物理硬件,最終連機器的概念也會被淡化,”Google App Engine產品經理Pete Koomen這樣說。這意味著開發者上傳代碼,然后Google進行管理并將數據庫分割?!耙驗槲覀兏雨P注于自動化的進程,數據處理有一定的模式,而開發人員必須遵循,”這與傳統的SQL模式完全不同,Koomen說。
App Engine中使用的數據庫模型稱作Big Table,開發者可以使用它來持久存儲數據?!癇ig Table不是SQL數據庫,原因是SQL數據庫支持的一些功能實在難以進行分割,這與我們跨機器存儲數據的想法無法結合,”Koomen說。
“在我們的系統中,我們已經發布了編程模型,反傳統從一開始就受到鼓勵,”開發者將數據存儲在多個地方的的好處是,這種做法可以讓應用的查詢功能非常有效,Koomen說。
當談到云環境中是否可以繼續使用關系型數據庫,Koomen的反應是伸出了大拇指——不過是向下的!“我們發現,在高流量的網絡條件下,關系型數據庫非常難以管理,而且最終會給開發者帶來巨大的資金和資源負擔。”
要習慣于云層的迅速變化
Model Metrics,一家咨詢公司,已經部署應用了Salesforce.com和其他公司的云服務。它發現的云服務應用和傳統的網絡客戶端應用的一個主要區別是,“在云服務中,一切都變化的太快了。”公司CTO John Barnes這樣認為。
就拿云服務的新貴Salesforce.com來說,每年都要發布好幾次新的版本,每次升級都會提供一些開發者用得著的地方,但Barnes并不反對這樣頻繁的升級?!白鳛殚_發人員,需要跟上事態發展,留意許多不同的博客,也要經常參與網絡研討會。”他說。
云中沒有管道
使用松散耦合結構的Web服務,使云服務成為了更容易的開發平臺,Barnes說。從此開發者可以專注于創新和業務邏輯而不再擔心管道負載和底層架構,如操作系統和硬件這類東西。比如Salesforce.com 提供的Force.com云平臺,為用戶全面提供了安全性、工作流、管理員和負載平衡功能。
Model Metrics的一位客戶原計劃使用微軟的.Net平臺建立一個入學申請應用,但經調查發現,使用Force.com進行開發,成本可以降低3至4倍,這在很大程度上是由于其采用了預先構建的功能設計。
云開發中的其他注意事項
***,云服務的開發者需要注意的是各種云平臺的不同授權模式,Barnes說,天空的云彩五顏六色,各種云平臺也各有各的定價機制。
Salesforce.com的開發營銷副總裁Adam Gross希望:開發人員在走入云服務開發時需要詳細了解他們準備選擇的供應商。而Google的Koomen這樣認為,“開發者應該以新的方式開發應用,他們的成果最終可以在不同的云平臺間移動?!盙oogle希望通過支持流行的Python語言和Django Web框架來達到這個目的,Koomen說,他們正在努力開發開源的上傳下載工具使開發者能夠在App Engine中自由移動數據。
【51CTO.com譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】
原文:Developing cloud apps: What's different 作者:Paul Krill