時至今日,上至行政院長,下至房地產廣告,「雲端運算」一詞,像是「奈米科技」一般,許多人朗朗上口,我們資工系搞系統的內行人,看了有些人大言慚慚,不禁啞然失笑,甚至搖頭嘆息。台灣有多少受過高度訓練,有實務背景的優秀軟體工程和資訊系統人才,能夠一起努力把雲端運算這塊餅做好做大?現在,產官學很多人都來搞雲端運算,文章東抄西抄的,說的比唱的好聽,很多人看了幾篇文章,瞬間都變成了專家了。實際上,到底拿得出什麼東西出來呢?我們不是要唱衰這個局面,而是希望大家務實一點,一步一腳印從根本技術面紮根,才會真正成功。
事實上,不只是在台灣,全世界都在講cloud,還有很多不同的講法。很多人把cloud講得太神了,幾乎是無所不能。吹牛的、騙錢的浮誇(hype)滿天飛,惹來不少物議。重量級的批評者,如以GNU計畫聞名的Richard Stallman警告大家cloud是個大陷阱,Oracle的Larry Ellison把cloud批評的一文不值。實際的情況究竟如何呢?
個人還在學習階段,因為雲端運算很好玩,相關的基礎技術多得不勝枚舉,正好適合個人這種喜歡軟硬通吃、東拉西扯的習性。還好身在學術界,不需要聽公司的命令行事,可以比較自由找尋研發方向。「雲端運算」的商機究竟如何,必須看個案來決定,不可人云亦云。極端保守地說,學習雲端運算的學生,若是本身資質不錯,博學多聞,未來有很大的成功機會。
個人傾向從「系統設計與運作」的觀點來看雲端運算,如何將成千上萬台廉價的電腦,經過適當的網路連結起來,加上高效能分散式容錯的檔案儲存系統,結合主機虛擬化技術和分散式平行處理,達成系統運作的目標:降低系統及運作成本、縮短處理時間、確保資料儲存、服務大量使用者等等。要建構一個好的系統並且讓他保持在最佳的執行狀態並不容易,Google和Amazon內部用了多少軟體工程師和研發人員,才能有今天的局面?
雲端運算技術?
什麼是所謂的雲端運算技術?其實,雲端運算能夠成功地提供前所未有的服務或計算能力,並不是單單靠著某一兩項新技術。從系統層面來看,雲端運算是累積結合許多技術之後,所產生的一種概念。概念很簡單,讓使用者和應用開發者都能夠很方便地運用在雲深不知處的彼端所提供的服務。還記得十年前紅極一時的電子商務,五年前家喻戶曉的P2P網路,都只是抽象的概念而已。沒有在背後支持的基礎技術,也不會有今天的雲端服務。
那麼,雲端服務的背後,有哪些基礎建設呢?
- 計算能力越來越強,售價確越來越便宜的低階伺服器
- Internet、行動網路(3G)與智慧型可上網的行動裝置(iPhone,電子書)的普及
- 開源碼與高效率的Linux作業系統,網路通信應用中介軟體
- 虛擬機器的成熟,高效率虛擬化技術
- 大容量的記憶體和磁碟機,高效率的分散式檔案系統
- 網路時代使用者與服務提供者所建構與累積的大量資料
- 使用者對網路服務的信賴度與依存度與日俱增
- (還有許多,無法一一列舉)
技術層面
先把一些個人認為重要的基礎技術列舉如下,日後有空再加以補充或引申。
- Programming on Linux systems
- Linux operating system and kernel
- I/O, Storage, network
- Computer architecture
- Parallel processing
- Distributed computing
- System-level performance monitoring
- Performance analysis and tuning
- Software engineering
- Virtualization technology
- Network security
(未完,待續)