網路城邦
上一篇 回創作列表 下一篇  字體:
雲端的背後其實不雲端
2013/11/09 14:21:30瀏覽6500|回應5|推薦33

雲端運算是個很浪漫的名詞,好像我們不必再花很多心思與資源在自己手邊的電腦,一切需求都有雲深不知處的某些超級電腦搞定。不必再去買很好的電腦,不必安裝很多軟體,不必擔心磁碟夠不夠用等等。對於一般使用者來說確實如此,雲端真好!但是做為一個網路程式的設計者應該知道,如果所有事情都被移往雲端運作,其實並不合理,甚至對於很多人以及環境保護來說會是一場災難!所以,事實上很多之前曾放在雲端執行的程式,這幾年已經悄悄地被移回到客戶端了!(重返地面?)預期這種趨勢還會更大,因為這比較符合多數人的經濟效益。

會談到這個話題是因為前天台中那位請我做車牌辨識系統的老闆來訪,談到了一些繼續合作的方向。其中一個有趣的案子是大甲鎮瀾宮繞境時的網頁即時資訊系統,據老闆說:之前是由台中某知名大學製作的,因為老闆自己也是信徒,會想上網看看是不是方便就近參拜,但是那個網頁卡得很厲害,常常長達十幾分鐘都不會動(即時更新)!他又剛好與廟宇管理單位有業務接觸,就說反正效能那麼差,明年讓他的公司來做看看,也得到允諾。

老闆是賣遊戲伺服器電腦設備起家的,他原本想到的加速方法也只是加開伺服器來因應罷了。我稍稍了解他們之前使用的網頁技術後判斷,問題應該是他們使用了太多伺服端的技術,也就是市面上已經普及到氾濫程度的ASP.NET!用那種方式寫網頁程式很容易,我之前七八年也都是用這種技術教學研究,開發了很多東西,也寫了好多論文,但前兩年開始也陸續發現它的某些缺點。

基本上任何網頁程式都會包含伺服端與客戶端程式兩個區塊,使用者只知道程式會跑,其實不知道哪些動作是在自己的電腦(瀏覽器)執行?哪些是在伺服端執行?只要速度夠快,其實也沒人會在意。要一個程式師同時會寫兩端的程式,也要自行掌握兩端的通訊其實很難,ASP.NET就是替程式師降低難度,寫程式時只要顧到功能邏輯就好,不必管程式是在客戶或伺服端執行。換言之,太依賴ASP.NET這種設計工具時,連程式師自己都不知道程式是在雲端或地面執行的了!

結果是ASP.NET會預設所有動作都要到伺服器報到處理,即使只是移動一下畫面,不需要伺服端任何的資源時,都會有一次網路聯繫與互動。我之前指導學生做網頁連線的象棋遊戲時就碰過這種麻煩,因為所有程式如棋盤狀況都是伺服器在管理,所以只要有個三五盤棋在進行,伺服器就開始卡卡了!所以根本不可能商業化,老闆一定會因為加開太多伺服器而賠死的!

後來我的客戶端JavaScript程式能力漸漸進步,就將下棋的程式逐步移到客戶端,伺服端不必再同時管理所有的棋局以及下棋的合法性,只需要轉傳客戶之間下棋的動作即可。隨便估計一下也知道,這樣使用伺服器的話,同時下上百盤棋也不會卡的!因為伺服器用的CPU運算與記憶體都非常的少。而且因為下棋程式是在客戶端執行,玩家玩得更順暢了!不必等伺服器告訴你這樣下棋可不可以。

據我目前的理解,多數卡卡的網頁程式都與伺服端擔任太多功能有關,我們真正非伺服器不可的功能其實只有兩項:一是資料取得,一是訊息轉傳,至於如氣象預測等等需要超級電腦來跑的計算工作,需求比例很低。換言之,我們一般人的日常需求,以「計算能力」來看,99.9%可以靠自己的電腦或手機算出來,不必找雲端的超級電腦來算。以鎮瀾宮繞境的例子來說應該只有即時的照片或影音直播,直播是用廣播模式其實不太會因為上線人多而塞車,至於照片,以目前網路速度來說下載幾十K的照片也不至於塞車的。如果網頁程式執行中沒有太多無謂的網路傳輸頻率,應該就不會卡了!

多數使用者不知道的秘密是:即使是大學選課系統的塞車也是用軟體技術就可以避免的,真的不必買很多台伺服器來負載平衡!只要程式師可以真的讓所有不必伺服器做的工作都直接寫成客戶端的JavaScript程式。最成功的實際案例就是Google公司了!他們以網路地圖起家,不知情的人都會以為他們的雲端伺服器很厲害!其實真正厲害的是他們的程式師很會寫客戶端程式,將所有可以分攤給客戶電腦的工作都在客戶端(地面)執行!所以變得又快又省錢,他們的伺服器成本相對於提供的功能來說是很低的!

老闆聽我分析後也嚇出幾滴冷汗,因為如果照他之前加開伺服器的想法,這個案子不做還好,要做好就一定會賠很大的!但是我相信我可以用軟體技術幫他提升很多效能,希望真的可以成功。對於我來說,可以從傳統名校(工科很強的學校)手中搶過來而且做得更好的案子,其價值不是可以用錢來衡量的。

或許有人會擔心,如果程式移到客戶端執行好像自己就「吃虧」了!我的電腦會不會太吃力而表現變差呢?應該不會的!現在連智慧型手機的記憶體與CPU都很好很夠用,如同幾年前的一台桌機了,不用才叫浪費,如果甚麼都丟回雲端,你只會多花冤枉錢付通訊費而已。最慘的是提供服務的公司要多付很多錢給雲端的大老闆!所以程式的重心從雲端回到地面是最合理,也最環保的負載平衡,唯一可能吃虧的是相信雲端很重要,大手筆投資雲端伺服器設備的老闆們,因為事實上可能不會有這麼多事情給他們作。

還有一個很重要的概念:無謂的通訊越多,表示更費電,消耗更多石油或核能,表示周遭的電磁波更多,這些都是無形中的環保與健康殺手,對於地球的環境很不友善。所以不要只關心網路傳播的速度,如果可以支持減少網路資訊流量,其實與減少垃圾有同樣的貢獻。

( 心情隨筆校園筆記 )
回應 推薦文章 列印 加入我的文摘
上一篇 回創作列表 下一篇

引用
引用網址:https://classic-blog.udn.com/article/trackback.jsp?uid=yccsonar&aid=9403552

 回應文章

stoneagee
等級:1
留言加入好友
2014/01/29 03:07
電腦這玩意兒是看創造力,邏輯思考力,整合力,諸多能力綜合而成,加上硬體架構,來解決大小諸端事體。最重要的是個人的能力,對團隊的瞭解。投資?當然要投資!只是知其所以然的人太少了。

鄉下老師
等級:8
留言加入好友
2013/11/18 16:51
仔細想想,現在流行的HTML5不就是大幅提升網頁內部程式的能力,增加客戶端(瀏覽器)可以做的事情嗎?這和本文闡述的理念其實是一致的!如果甚麼事情都等雲端伺服器處理,也不必用到HTML5了!所以我提的概念其實是資訊世界的主流思潮哦!


九里安西王(Julian)
等級:8
留言加入好友
2013/11/14 12:43
伺服端的平行運算及儲存!
鄉下老師(yccsonar) 於 2013-11-16 19:41 回覆:
其實我提到的這個現象與概念好像也不是甚麼全新的概念!因為之前所謂的網格(Grid)運算就是將大量的運算工作分散分配給電腦網絡中的一般電腦,讓「地面」上多數時間閒置的電腦分擔「雲端」伺服器的繁重工作。這種狀況也是將雲端工作實質回歸地面,只是兩者都一樣,使用者不會受到打擾,仍然以為事情是被丟到雲端做的!

530
等級:7
留言加入好友
2013/11/10 20:02

請問Google地圖跑得慢是我們自己的電腦太弱了?(程式運作在客戶端)



鄉下老師(yccsonar) 於 2013-11-10 20:59 回覆:
應該不是!主要是地圖還是必須自Google網站下載,網路速度是快慢的主因。

江山改 : 七月七日夢醒時分
等級:8
留言加入好友
行家出手 騰雲駕霧
2013/11/09 16:57
2010騰雲駕霧百萬程式競賽,即將開戰 - 國家競爭力篇
鄉下老師(yccsonar) 於 2013-11-09 17:42 回覆:

雲端是一個技術發展趨勢,本來就存在,但是雲端的程度我認為現在就夠了!並不需要為此大張旗鼓的投資建設,因為一定會賠錢的!雲端可以做的主要是提供資料與程式,加上轉傳訊息,大部分的「運算」還是應該在「地面」的一般電腦中執行才合理,因為極少複雜的運算必須用到超級電腦,所以根本就不必送到雲端,這樣才省錢快速省網路流量也環保!