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