前言
作為云計(jì)算的推崇者,我一直關(guān)注關(guān)于云計(jì)算的問(wèn)題,從Iaas的技術(shù)實(shí)現(xiàn)到PaaS的遷移實(shí)踐甚至SaaS的運(yùn)營(yíng)模式。不過(guò)因?yàn)閭€(gè)人的技術(shù)和見(jiàn)識(shí)都很有限,我更關(guān)注于作為應(yīng)用程序提供者,該怎樣設(shè)計(jì)一個(gè)對(duì)云計(jì)算友好的應(yīng)用程序,這種應(yīng)用程序不單可以在云計(jì)算平臺(tái)上運(yùn)行,更重要的是可以更好的享受云計(jì)算帶來(lái)的優(yōu)勢(shì)。趁著微軟主推Azure云計(jì)算的TechEd2010落幕不久,我將寫(xiě)四篇文章和大家分享一下關(guān)于云計(jì)算中一些問(wèn)題的看法。這四篇文章分別為
《“云”領(lǐng)天下(一): 最近的云計(jì)算-IaaS》
《“云”領(lǐng)天下(二): 更遠(yuǎn)一點(diǎn)的云計(jì)算-PaaS》
《“云”領(lǐng)天下(三): 云上的數(shù)據(jù)-反規(guī)范化》
《“云”領(lǐng)天下(四): 云上的事務(wù)-BASE原則》
希望這些文章在您考慮向云計(jì)算遷移或基于云平臺(tái)開(kāi)發(fā)新的應(yīng)用程序時(shí)有所參考。當(dāng)然,我在這些文章不會(huì)用某一指定的開(kāi)發(fā)語(yǔ)言來(lái)做完整示例——雖然我很喜歡C#——所以,所有的代碼示例都是不保證運(yùn)行的,請(qǐng)諒解。
IaaS
我們從一個(gè)故事說(shuō)起,假設(shè)有這樣一個(gè)軟件公司,他的業(yè)務(wù)就是運(yùn)營(yíng)一個(gè)大的網(wǎng)站,因?yàn)楣窘?jīng)營(yíng)這個(gè)領(lǐng)域的時(shí)間比較久了,網(wǎng)絡(luò)管理員很清楚每年的四月份訪問(wèn)量會(huì)比平時(shí)大好幾倍,一個(gè)月之后又會(huì)恢復(fù)正常。
幾年前,公司按照當(dāng)時(shí)用戶(hù)在四月份的訪問(wèn)量峰值搭建了一套服務(wù)器環(huán)境,這是一個(gè)比較完整的數(shù)據(jù)中心,包含一臺(tái)硬件負(fù)載均衡機(jī)器,四臺(tái)應(yīng)用服務(wù)器,一臺(tái)數(shù)據(jù)庫(kù)服務(wù)器和一個(gè)備份服務(wù)器。起初這看似是一個(gè)比較好的解決方案,除了在剛剛上線的時(shí)候因?yàn)樨?fù)載均衡動(dòng)態(tài)切換服務(wù)器導(dǎo)致會(huì)話(huà)狀態(tài)不正常起效讓開(kāi)發(fā)團(tuán)隊(duì)發(fā)了若干個(gè)補(bǔ)丁。然而,一年又一年過(guò)去了,用戶(hù)的需求,網(wǎng)站的范圍越來(lái)越大,對(duì)計(jì)算量的要求也在逐漸加大,直到某一年的四月份用戶(hù)訪問(wèn)峰值到來(lái)時(shí),已經(jīng)運(yùn)行幾年的數(shù)據(jù)中心開(kāi)始力不從心,用戶(hù)訪問(wèn)速度的下降甚至超時(shí)報(bào)錯(cuò);加上隨著服務(wù)器硬件的老化,幾次出現(xiàn)的服務(wù)器網(wǎng)卡損壞,硬盤(pán)損壞等險(xiǎn)情,現(xiàn)有數(shù)據(jù)中心的老邁終于引起了公司的重視。
系統(tǒng)管理員會(huì)同開(kāi)發(fā)團(tuán)隊(duì)受命解決這個(gè)已經(jīng)開(kāi)始影響公司盈利水平的關(guān)鍵問(wèn)題。根據(jù)對(duì)日志和監(jiān)控?cái)?shù)據(jù)的分析,性能的瓶頸出現(xiàn)在了數(shù)據(jù)庫(kù)服務(wù)器上——相信多數(shù)應(yīng)用都是這樣的。在開(kāi)發(fā)團(tuán)隊(duì)看來(lái)問(wèn)題似乎并不難解決,更換數(shù)據(jù)庫(kù)服務(wù)器的硬件,換更大的內(nèi)存,更強(qiáng)悍的CPU和更快速硬盤(pán)組成的磁盤(pán)陣列就可以一舉解決這個(gè)問(wèn)題。不過(guò)這個(gè)方案在提交后得到的卻是兩個(gè)質(zhì)疑,分別來(lái)自系統(tǒng)管理員和管理者。問(wèn)題1: 如何可以快速,安全的將數(shù)據(jù)遷移到新的服務(wù)器?這次服務(wù)器告急執(zhí)行了升級(jí)數(shù)據(jù)庫(kù)服務(wù)器硬件的操作,下次再出現(xiàn)性能缺口,是不是還得重復(fù)一次遷移?問(wèn)題2:除了訪問(wèn)高峰期的四月份,其他時(shí)候用戶(hù)的請(qǐng)求靠現(xiàn)在的服務(wù)器性能完全可以得到滿(mǎn)足,這種情況下升級(jí)服務(wù)器的硬件是不是一種資源的浪費(fèi)?對(duì)于第一個(gè)問(wèn)題,他們的疑問(wèn)是無(wú)法快速的增加服務(wù)器的計(jì)算能力;對(duì)于第二個(gè)問(wèn)題,他們的希望是能快速的通過(guò)減少服務(wù)器的計(jì)算能力來(lái)降低運(yùn)行成本。
在傳統(tǒng)的數(shù)據(jù)中心中,公司遇到的兩個(gè)問(wèn)題目前看是無(wú)解的,直到有一個(gè)概念隨著高性能計(jì)算機(jī)集群技術(shù)和虛擬機(jī)技術(shù)的發(fā)展開(kāi)始走進(jìn)我們的視野——基礎(chǔ)設(shè)施即服務(wù)(IaaS)。在IaaS中,服務(wù)提供商把硬件計(jì)算資源,網(wǎng)絡(luò),冗余,負(fù)載均衡等等設(shè)施打包成服務(wù),我們可以直接購(gòu)買(mǎi)這樣的服務(wù),而不需要自己去組建負(fù)載均衡來(lái)平衡用戶(hù)請(qǐng)求的壓力,不需要自己建立冗余服務(wù)器來(lái)保證無(wú)故障運(yùn)行時(shí)間。更重要的是,這種服務(wù)可以按照自己的需要隨時(shí)增加購(gòu)買(mǎi)量,相比于自己更換服務(wù)器,簡(jiǎn)單到幾乎修改配置后即時(shí)起效。更重要的是,在你的應(yīng)用不需要那么高計(jì)算能力的時(shí)候,你“竟然”可以減少服務(wù)的購(gòu)買(mǎi)量來(lái)節(jié)約成本。這個(gè)在自己搭建的數(shù)據(jù)中心方案里是不可能做到的,因?yàn)槲覀兌贾廊绻u(mài)掉一臺(tái)服務(wù)器收回來(lái)的錢(qián)可能只有采購(gòu)費(fèi)用的一半多一點(diǎn)了。
值得慶幸的是當(dāng)更新數(shù)據(jù)庫(kù)服務(wù)器硬件的方案被無(wú)情的否決后,公司的開(kāi)發(fā)團(tuán)隊(duì)和系統(tǒng)管理員發(fā)現(xiàn)了IaaS,于是他們展開(kāi)了相關(guān)的評(píng)估。他們的評(píng)估結(jié)果是比較樂(lè)觀的,因?yàn)樵诒敬紊?jí)之前,開(kāi)發(fā)團(tuán)隊(duì)已經(jīng)為負(fù)載均衡機(jī)實(shí)現(xiàn)了狀態(tài)轉(zhuǎn)移等功能(如將ASP.Net的Session從默認(rèn)的In-Proc切換為Sql Server,嚴(yán)格控制使用靜態(tài)變量等),從現(xiàn)有的數(shù)據(jù)中心遷移到云端的IaaS沒(méi)有技術(shù)難點(diǎn),直接遷移時(shí)可以運(yùn)行的。而對(duì)于管理層來(lái)說(shuō),僅僅“可以運(yùn)行”是不夠的,像所有的企業(yè)一樣,最終決策的依據(jù)往往來(lái)自于商業(yè)的收益而不是技術(shù)。從云計(jì)算提供商(比如IIJ的GIO)獲得的“單價(jià)”(購(gòu)買(mǎi)一段時(shí)間的CPU,內(nèi)存,磁盤(pán)空間和網(wǎng)絡(luò)帶寬等的費(fèi)用)還是比較誘人的,剩下的問(wèn)題就是 “我們需要買(mǎi)多少服務(wù)?”。被各種虛假?gòu)V告已經(jīng)產(chǎn)生了強(qiáng)大免疫力的開(kāi)發(fā)團(tuán)隊(duì)選擇不相信云計(jì)算提供商的技術(shù)參數(shù),而使用實(shí)驗(yàn)的方式去計(jì)算每個(gè)計(jì)算單元的真實(shí)承載能力。當(dāng)然,對(duì)于在國(guó)外“誠(chéng)信社會(huì)”長(zhǎng)大的管理層,這個(gè)方案又以浪費(fèi)資源的理由無(wú)情的否決了。在往后就剩下來(lái)純商務(wù)的談判,這個(gè)過(guò)程中一系列參數(shù)將被確定下來(lái),比如無(wú)故障運(yùn)行時(shí)間,擴(kuò)/減容(增加/減少計(jì)算能力)的響應(yīng)時(shí)間等等。與此同時(shí),開(kāi)發(fā)團(tuán)隊(duì)將包含有測(cè)試用數(shù)據(jù)的網(wǎng)站架設(shè)在了IaaS平臺(tái)開(kāi)始進(jìn)行測(cè)試。剩下的工作就只剩下找一個(gè)合適的時(shí)間,暫停網(wǎng)站服務(wù)并正式遷移到IaaS云計(jì)算平臺(tái)了。
到此,故事講完了,我們可以在這里小小總結(jié)一下。對(duì)于計(jì)算量需求隨時(shí)間變化的應(yīng)用系統(tǒng)而言,IaaS可以有效地處理服務(wù)器性能的擴(kuò)展與緊縮,更方便的隨著業(yè)務(wù)計(jì)算量的變化而改變服務(wù)器的計(jì)算能力,在提供優(yōu)秀用戶(hù)體驗(yàn)的同時(shí)降低運(yùn)營(yíng)成本。更關(guān)鍵的一點(diǎn)是,對(duì)于一個(gè)本身支持多點(diǎn)部署的應(yīng)用系統(tǒng)而言,遷移到IaaS可以說(shuō)不需要修改任何的代碼,這無(wú)疑是開(kāi)發(fā)人員的福音。
軟件界有句名言“沒(méi)有銀彈”。誠(chéng)然IaaS有著這么美妙的樣子,但是不是說(shuō)IaaS就擁有了“舍我其誰(shuí)”的氣勢(shì)呢?答案當(dāng)然是否定的,至少在管理層看來(lái)。在基礎(chǔ)設(shè)施即服務(wù)之外,云計(jì)算還有一種形式的服務(wù):平臺(tái)即服務(wù)(PaaS),對(duì)于管理層而言,PaaS有著一樣更誘人的特點(diǎn),那就是價(jià)格更加低廉——這足以成為PaaS相對(duì)于IaaS的最大優(yōu)勢(shì),雖然從傳統(tǒng)數(shù)據(jù)中心遷移到PaaS的過(guò)程可能會(huì)讓開(kāi)發(fā)團(tuán)隊(duì)經(jīng)歷一場(chǎng)煉獄,雖然基于PaaS開(kāi)發(fā)一套應(yīng)用系統(tǒng)需要打掉開(kāi)發(fā)團(tuán)隊(duì)心中“理所當(dāng)然”的原則。那么,這個(gè)對(duì)管理者是“靈丹妙藥”對(duì)開(kāi)發(fā)者是“第一只螃蟹”的PaaS是什么呢,將傳統(tǒng)的應(yīng)用網(wǎng)站遷往PaaS需要做哪些事情呢?請(qǐng)期待本系列文章的下期《更遠(yuǎn)一點(diǎn)的云計(jì)算——PaaS》。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
