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


















