2011年2月27日

雲端!雲端!多少文章假汝之名而行

〈利益揭露:作者寫作此文時在 Google 服務,但內容是個人的觀點,和公司的政策、觀點無關。〉

一兩個月前網路上不少人在傳閱李家同教授的文章:《原來,我早就在「雲端」》,不少人做了自己的評論,更多人全文引用,不過原文看來是被聯合報歸檔到付費使用者才能看的區域了,謝謝 @Sars 提供了教授文集中的文章連結

前一陣子又看到網友在傳這個教授演講的短片:


教授學識令人景仰,但顯然網路和媒體上眾多不求甚解寫出來的文字,讓教授誤解了雲端運算的真義。這種為了趕稿或銷量而囫圇吞棗寫出來的媒體文章,實在令人不敢恭維。

兔年開春,一元復始,萬象更新。看來,心中構思多時的雲端運算文章,該開始動筆了。

到底什麼是雲端運算?

講到雲端運算,有人說它是新技術、有人說它是老觀念;有人著重資料中心、有人著重行動裝置;有人強調「虛擬化」、有人強調「隨租即用」。

我個人的看法很簡單:

能用 Web 介面提供服務給海量使用者的運算方式,就是雲端運算。

依我的觀察和理解,絕大多數有關雲端運算的技術,都可以從這個運算方式衍生出來、或是因這個需求發展出來。

對一般使用者而言,雲端運算和 1990 年代末期開始築夢的 "Application Service Provider"(ASP)沒有什麼差別,同樣是讓應用程式執行在 Web 的遠端,使用者只需要瀏覽器就可以操作。更遠一點講,和 client-server 架構也很像,差別只是從 ftp、gopher、news、HTTP 等等每個服務協定都有一個 client,簡化到一個瀏覽器通吃大多數協定。(以後如果聊到 mobile clients 再談分合問題。)

因為很多媒體講到雲端都強調「以 Web 和瀏覽器做為使用介面」這個 ASP 時代就開始講的老觀念,造成了這個誤解。

那 2007 年開始出現的「雲端運算」只是新瓶裝舊酒的騙錢口號?

當然不是。

我拿當年電燈發展的歷史來打個比方也許會容易了解一點。讀者如果熟悉這個歷史和對比,可以跳到雲端運算在技術上的革新一節。

電燈發展簡史

(參考資料:Wikipedia。)

古早的年代,人們用油燈來照明。後來伏特發明了電池,開始有人發明電器,最有名的當然是愛迪生和電燈的故事(註:電燈可不是愛迪生發明的,下文會再提到)。在 1880 年以前,要用電燈的家庭或公共場所,除了要安裝電燈之外,還要安裝足夠的電池或發電機。不同人做的電燈,需要的電源不同。


伏特的電池 "The Voltaic Pile"

最早的電燈不是愛迪生發明的,但為什麼一般人講到電燈只記得他?主要原因是愛迪生是真正讓電燈普及而進入家庭的人。這有幾個因素:

  • 他發明的燈泡比前人的耐用,讓「換燈泡」不會比「換燈油」麻煩。
  • 他發明的燈泡需要的電流比較低,使得「用單一發電機驅動多個電燈」成為可能,降低使用電燈所需分攤的發電成本。
  • 他還設計了相應的發電機和供電線路,把「供電」的電池或發電機和「用電」的電燈分開,讓用電的人不用買也不用懂電池或發電機。日後「插座」和「插頭」成為人人都能懂的用電介面。

這些因素加起來,使得電燈離開了實驗室而商業化,進一步成為普及的照明工具,也使得愛迪生和電燈在大眾的印象中永遠連結起來。(也難怪有些美國人認為 Bill Gates 發明了 Internet。)

這還促成了用電介面的統一:愛迪生的公司在 1882 年首度提供 110 V 直流電給紐約曼哈頓的 59 個顧客,日後 110 V 還成為美國用電的標準,不管是什麼電器,都用這個電壓工作。

愛迪生的輸電網路另外還帶來了「租用」的觀念,需要用電的人不再需要自備發電機,只要按用量付費就好了。



後來愛迪生特斯拉在 1880 年代末期展開了《電流大戰》,愛迪生的發電站輸出的是直流電,特斯拉開發出來的是交流電,直流交流之爭持續了好幾年,最後特斯拉的交流電全面勝利。

可是對於用電者來說,直流交流有什麼差別?反正電燈插上去都會亮!

交流電之所以能擊敗直流電,關鍵在於規模經濟帶來的低廉成本:因為輸送效率的因素,直流電必須每幾個街口就要有個發電站,不然成本會太高;反之,交流電輕易升壓、降壓的能力,可以用高電壓和低電流來降低輸送過程的損耗,因此發電的地方和用電的地方可以相距數十甚至上百公里,這樣就能在水壩之類的偏遠地方建造巨大的發電廠,讓單一發電廠供給整個城市甚至更大範圍的用電,達到經濟規模,降低平均成本。


德國 Koepchenwerk 發電廠

雲端運算在技術上的革新

需要不同協定、不同近端軟體的 client-server 時期,就像是需要自備發電機的年代,電器和電源要搭配使用。

ASP 時期,不管是什麼應用程式,用瀏覽器和 HTTP 單一協定就可以操作,「透過網路租用軟體」的觀念也在這個時期開始出現。然而,ASP 時期就像是直流電年代,一個直流電的發電站只能供電給 2 公里之內的顧客,一台 Web server 也只能服務為數有限的使用者。

雲端運算時期,協定仍然是 HTTP,近端 client 仍然是瀏覽器,使用者感覺不到和 ASP 的差別,但是在資料中心執行的 Web application 可以服務一個城市、一個國家、甚至更大範圍的使用者,就像是以發電廠為主要電力來源的交流電年代。

製造發電機、供電給幾十戶人家的技術,和建造發電廠、供電給幾百萬戶家庭的技術,讀者覺得一樣嗎?

建造發電廠所需的技術不再只是發電機的技術,還包括電力傳輸、負載調配、不斷電檢測維修等等的技術。同樣的,雲端運算不只是起一個 web server 而已,還包括流量調配、海量資料的提供/儲存/管理/處理/檢索、服務不中斷的檢測維修、阻斷攻擊的防禦等等技術。唯有雲端運算的技術成熟,才能讓一個 web application 服務幾千萬、甚至上億位的使用者,這不是一個實驗室中一兩台伺服器做得到的事。

換句話說,雲端運算雖然強調 Web 簡單的瀏覽器介面、普及的 HTTP 80 port、隨之而來的多元終端設備(電腦、手機、平板、電視...)、還有行動上網的便利性,但技術重點不在 Web,那是 ASP 時代的重點,而是如何處理簡單和普及所帶來的爆炸性流量和海量資料。反過來說,如果雲端運算技術沒有到位,那些搜尋引擎、Web mail、入口網站、社交網站等等網路應用就服務不了那麼多使用者,使用者想用的時候可能要漫長地等待、甚至連不上,愛用的人就不會那麼多,Web 就不會像今天這麼普及。因此可以說 Web 和雲端運算是相輔相成的。

小結

直流電在市場上存在了近十年,在特斯拉的交流電技術問市之後,愛迪生還憑藉已經建立的權威地位和商業規模四處打擊交流電,但是終究不敵交流電因規模化帶來的成本優勢和其他好處,最後還是擁抱了交流電的技術。ASP 觀念也存在了近十年,在規模化和分散式運算技術逐漸成熟後,雲端運算這個詞才出現。換句話說:

雲端運算是 Web 普及和規模化的自然結果。

雲端運算這個名詞雖然是 2007 年才正式出場的,但其相關技術早在十幾年前就開始發芽,甚至可以回溯到網格運算和更早的分散式運算的技術。Yahoo! 的入口網站、微軟的 Hotmail、Google 的搜尋引擎、Amazon 等等,都有自家的規模化技術。「雲端運算」只是把各公司長期發展出來的規模化技術,用一個新名詞來統稱。

雲端運算不是不確定的未來式,而是長期的現在進行式。

那為什麼雲端運算的技術到這幾年才廣受重視?雲端運算的技術有哪些?如果有時間我再來寫點個人的想法。

後記:感謝 @Sars 提供李家同教授文集的網址,更新文章中的連結。


附註:照片版權宣告:

  1. 伏特電池照片版權屬 I, GuidoB 所有,CC-by-sa。
  2. 電燈泡照片版權屬 Phrontis 所有,CC-by-sa。
  3. 發電機照片版權屬 Gbleem 所有,CC-by-sa。
  4. 發電廠照片版權屬 Markus Schweiss 所有,CC-by-sa。
點擊照片都會回到照片在 Wikimedia Commons 的網頁。