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