初識雲端計算

最近“雲端計算”被炒的很熱,但是由於工作重點主要是做WinForm的控制元件開發,對雲端計算的接觸比較少,甚至一直沒搞清楚到底什麼是“雲端計算”,感覺上“雲”是個神乎其神的東西。這次借參加Tech-ed的機會重點了解了下“雲端計算”。寫篇博文分享一下自己的理解。初次接觸,理解的比較膚淺,如果有誤歡迎大家指正。

1. 為什麼需要雲端計算
微軟給了個很有意思的比喻。
很多年以前,一個很牛的人發明的電燈泡,導致人們需要電,這個牛人就成立了一個公司,這個公司專門賣發電機,所有需要使用電燈泡的人都要買發電機,於是這個牛人發了大財。後來,人們發現買發電機自己發電好貴呀。於是有些大公司就建立了大型的發電站,個人和小公司只要按時交電費就可以得到電,這種新方法比買發電機省錢,到今天一直在使用。
很多年以後,一個很牛的人發明了計算機網路,導致人們需要網路服務。人們為了提供網路服務(電氣時代的電燈泡),每家公司都要買伺服器(電氣時代的發電機),後來,人們發現買伺服器好貴呀。於是一些大公司建立了大型的資料中心(就是很多很多…的伺服器)。個人和小公司只要按時交使用費就可以使用伺服器,這種新方法比買伺服器省錢。對於這個新方法,大家給起了個很抽象的名字——“雲端計算”。

2. 什麼是雲端計算
據說在2008年的一次國際雲端計算大會上,主持人對於“什麼是雲端計算?”這個問題上隨機採訪了20個聽眾,結果得到了22種答案。對於雲端計算準確定義的爭論,至今也沒有停止過(怪不得我一直沒搞清楚什麼是雲端計算J)。
在維基百科裡給出了這樣的描述性定義“雲端計算就是基於網際網路的計算,它能像電網供電一樣,按需把共享的資源,軟體和資訊提供給計算機和其他裝置。”
可能有人像我一樣思考過,“雲端計算”和“分散式計算”有什麼區別。對於這個問題,我的理解是,雲端計算強調的是服務,是一項租賃業務。而分散式計算強調的是技術實現。

3. 雲端計算的作用
雲端計算最重要的作用當然是被提到好幾次的一點——“省錢”,不能省錢估計就沒人用了,呵呵。那麼,它為什麼能省錢呢?原來自己買伺服器,現在租大公司的伺服器,多轉一次手,應該費錢才對。就好象租房住顯然沒有買房住合算呀(除非房東是慈善家或者腦袋有問題)。
就我的理解,雲端計算是基於兩個考慮來省錢的。
一是避免浪費。
最簡單的例子,一個網路公司,一般高負載都是在晚上8點到11點左右。這段時間需要20臺伺服器才能保證穩定的訪問,不當機。而其他時段可能只需要2臺伺服器就可以了。這種情況下如果用買的,公司就必須一直保持20臺甚至30臺伺服器(以備突發的大規模訪問),而如果是使用雲服務,就可以根據負載,動態的調整使用伺服器的個數,8點的時候租20臺,10點的時候如果突然訪問量變大就租30臺,過11點網民都睡覺了就把多餘的退掉,就留一兩臺。這樣就可以省錢了。
二是集中管理,降低成本。
在傳統模式中,並不是伺服器買回來就萬事大吉了,幾十臺伺服器的機房要面臨著場地費用,人工管理成本,軟體升級,伺服器備份,維護,甚至佈線,租用寬頻等等的成本。而使用“雲端計算”的模式,以上問題都由提供商來集中解決,而集中管理的成本顯然是低於分散到所有小公司的管理成本的。

4. 如何使用“雲端計算”資源
說了這麼多,還不知道“雲”怎麼用呢,其實,上雲是比較簡單的,很多大公司提供了這樣的服務。由於Tech-ed是微軟搞的,當然微軟介紹的都是他自己的東西Windows Azure。
對於使用微軟的雲,有個講師說的很有意思,他說,只需要兩步:一.到微軟網站上註冊帳號,二. 刷信用卡。他尤其強調,千萬不要刷自己的信用卡,一定要刷老闆的,要不你會很快破產的J。
微軟的雲要求雲端的應用程式分成兩個模組,一個是WorkRole,一個是WebRole,WorkRole負責後臺邏輯,WebRole負責前端展示邏輯,兩者靠一個佇列通訊。如果裝了Windows Azure SDK,可以在VS2010中建立出相應的工程模板。也有對應的嚮導把應用程式部署到雲上。對於既有的ASP.net專案,如果想遷移到雲上則首先需要對程式進行重構,按微軟的結構要求把程式劃分成WorkRole和WebRole在部署上去。

5. “雲端計算”可以為控制元件開發帶來什麼好處
最後一個部分是我對自己工作的一個思考,畢竟我不是做網路應用的,第一感覺是暫時還用不上雲。但是有一個點上可能還是可以在雲端計算上得到實惠的。場景是這樣的,在每一個控制元件產品釋出前,都需要對很多環境做整合測試,如不同的作業系統,WindowsXP,WindowVista,Windows7,不同的系統語言版本,英文,中文,日文,不同的IDE版本,如VS2005,VS2008,VS2010,這些條件組合起來的環境是非常多的,我們不得不準備很多的環境,有實機也有虛機,管理起來很麻煩。尤其是測試在特定環境下發現的bug在開發的環境裡又很難重現和修復。最重要的是這個環境測試一年中可能只有一個月是需要的,其他時間這麼的機器就會顯得比較浪費。 而“雲”的使用可能可以很好的解決這個問題,雲服務中有一種模式叫平臺即服務,當我需要時,我就可以根據我的要求到雲上申請一個特定環境的機器,用完就歸還。是不是可以少很多麻煩呢?
這一部分都是基於我的理解想象的,還沒有實踐過。也不知道成本上是否划得來,要知道改變傳統的做法本身就是要付出很大成本的。但是,所有的實現不都是從想象開始的麼J

6. 最後
我對於雲的很多理解都是比較膚淺的,接觸雲的時間比較短,也沒有在專案中真正使用過。說真的,現在對於雲的使用還是比較麻煩的,計費方法也比較抽象,不容易理解。但是我覺得,雲端計算確實是當前軟體發展的一個趨勢(單省錢這一點就足夠了)也是軟體應用模式的一次革命,值得深入研究探討。相信將來使用雲可以像在家裡使用電一樣方便。
以上個人意見,歡迎拍磚~