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 的網頁。

16 則留言 :

  1. 李教授的網站上有放他發表的文章
    http://erdos.csie.ncnu.edu.tw/~rctlee/article/index.htm
    其中包含「雲端」那篇的全文

    回覆刪除
  2. 簡單來說..
    雲端運算我們早就在用..
    只是我們不知道..
    我們都用小雲...現在要用大雲...
    用交直流供電的服務,個人覺的不是那麼合適

    回覆刪除
  3. 謝謝好文,期待下篇。
    > 那為什麼雲端運算的技術到這幾年才廣受重視?
    > 雲端運算的技術有哪些?

    回覆刪除
  4. 前輩的意思是我們的虛擬主機提供者,
    將被Google和眾多號稱雲端技術的虛擬主機提供者取代掉嗎?
    可是怎麼看,早期提供PHP、ASP運行服務的伺服器廠商就已經算是已經交流電了吧(難道他們不必防禦DOS攻擊、不必管理流量、不必在乎其他之類的東西嗎?),呵呵。
    還是,我沒看懂你的文章了呢?
    就我而言,現在雲端只是因為Ajax、Javascript的API革新,讓client端的操作更friendly而已呀~呵呵。
    推出更多Web Application才是雲端的重點吧? XD?

    回覆刪除
  5. 李教授這段談話的意思是在談我們的政治人物還沒搞清楚甚麼是雲端就一窩蜂地把經費投入雲端或是假借雲端之名。其實他也說過我們早就已經在使用雲端,所以他並不是反對雲端。另外,本篇作者的解釋蠻不錯的。

    回覆刪除
  6. 拜讀李教授的文章之後,覺得李教授真是學問蓋世,查了一 下『雜誌』,就知道自己是個先知先覺者!李教授在民國91年用的東西叫做分散式檔案系統(distributed file system),那種東西在李教授的高足發展那一套軟體之前,就已經多的不得了,例如廣泛使用的NFS,在民國75年就有了。李教授文末希望『政府要有雄心壯志... 從此擺脫對外國的依賴』,這種情操相當值得欽佩,只可惜我們的業界在對電腦系統的真正實力和人家差上一大截,學界又不重視系統實作的價值,如果誤以為我們已經有相當不錯的系統,才會真的沒戲唱了。「知之為知之,不知為不知」,我對想做系統研究的學生說,你們要虛心學習,扎實做研究,天下聰明的人很多,不要成為自以為什麼事都懂的井底之蛙。

    回覆刪除
  7. 李家同教授的說法總是讓許多人誤解

    就像「打工的是笨蛋」、「不成功的人才用臉書」,其實他背後都有很深的含義,只是媒體聽不懂

    就現在現實社會裡面,我也會跟人講說,白痴才去研究雲端計算。因為太多假的雲端計算,你不小心就會搞錯方向,搞清楚雲端的本質(正如有人所提到的:分散式架構),而不是隨媒體起舞,去研究什麼雲端

    這才是李大師的本意啊

    回覆刪除
  8. 能用 Web 介面提供服務給海量使用者的運算方式,就是雲端運算。
    Web 應該可以說是網路的綜合統稱,可以用各种不同的通信規格標準做双方資訊處理不管是用特屬程式或溜覽器程式,不管是分散資訊或是資料庫或銀行,皆可統稱雲端運算模式。
    不管是 Mixed 點對點point,柱對柱post,海對海sea,池對池pool,銀行對銀行bank,未來的雲端只是小或大的區別,如果通信網路硬體速度夠快, 每一個都可以成為Server.

    回覆刪除
  9. 我是非常不贊同李教授(會叫的野獸)講的話,一位自己從來沒有做過任何雲端設計的人,任何批評雲端的字眼都是不公正的。

    一位學者,要嘛就拿數據出來,或是拿案例出來討論,而不是自是用很自大的觀點來做評論。

    回覆刪除
  10. 整篇文章,提到雲端除了綠色字以外,其他都是錯誤的見解

    回覆刪除
  11. arilang 可以解釋一下爲什麼這麼說嗎?
    我還蠻好奇的,why you said that?

    回覆刪除
  12. 話說只有這位作者(背後的公司)
    不管怎麼說都對耶
    Cloud 基本上是他們家定義的說
    他們如果說雲端就是在飛機上打電動
    雲端就是在飛機上打電動喔

    回覆刪除
  13. 台灣的雲端運算,我看快被政府毀了,整個非常後知後覺,後知後覺我認為是讓中華電信佔著用戶迴路,爽爽收電路費,沒有競爭,網路進步非常緩慢造成的,沒好的環境軟體網路產業發展個屁,只會喊!
    用戶迴路這種東西不就像馬路嗎?馬路可以給企業擁有嗎?
    現在的雲端和過去不同對企業大概算是AWS的誕生吧!對個人來說,技術部分差異不大,但網路環境不同,過去無法提供的服務現在可能可以,李家同那篇文章讓我覺得,他根本也不太懂雲端還造高談闊論,他文章提到的,根本不是現在國外雲端業者focus的事,就他講的那些能讓Microsoft跳進來?
    台灣IaaS和PaaS大概沒機會了,看SaaS能不能發展出需要高流量又有用的服務
    有種Microsoft的末日近了的預感,命根子Windows和Office第一次受到挑戰該不會以後只能賣Xbox

    回覆刪除
  14. 從直流電交流電的歷史拿來對比雲端,確實蠻有說服力的,以未來的網路資料量來看,發展雲端應該是勢在必行,不過也要仰賴基礎建設越來越好才行吧!

    回覆刪除