字體:小 中 大 | |
|
|
2013/11/15 17:19:06瀏覽39|回應0|推薦3 | |
雲端的背後其實不雲端
2013/11/09 14:21
雲端運算是個很浪漫的名詞,好像我們不必再花很多心思與資源在自己手邊的電腦,一切需求都有雲深不知處的某些超級電腦搞定。不必再去買很好的電腦,不必安裝很多軟體,不必擔心磁碟夠不夠用等等。對於一般使用者來說確實如此,雲端真好!但是做為一個網路程式的設計者就會知道,其實並不是所有事情都被移往雲端運作,相反的!很多之前放在雲端執行的程式,這幾年已經偷偷地被移回到客戶端了!(重返地面?) 會談到這個話題是因為前天台中那位請我做車牌辨識系統的老闆來訪,談到了一些繼續合作的方向。其中一個有趣的案子是大甲鎮瀾宮繞境時的網頁即時資訊系統,據老闆說:之前是由台中某知名大學製作的,因為老闆自己也是信徒,會想上網看看是不是方便就近參拜,但是那個網頁卡得很厲害,常常長達十幾分鐘都不會動(即時更新)!他又剛好與廟宇管理單位有業務接觸,就說反正效能那麼差,明年讓他的公司來做看看,也得到允諾。 老闆是賣遊戲伺服器電腦設備起家的,他原本想到的加速方法也只是加開伺服器來因應罷了。我稍稍了解他們之前使用的網頁技術後判斷,問題應該是他們使用了太多伺服端的技術,也就是市面上已經普及到氾濫程度的ASP.NET!用那種方式寫網頁程式很容易,我之前七八年也都是用這種技術教學研究,開發了很多東西,也寫了好多論文,但前兩年開始也陸續發現它的某些缺點。 基本上任何網頁程式都會包含伺服端與客戶端程式兩個區塊,使用者只知道程式會跑,其實不知道哪些動作是在自己的電腦(瀏覽器)執行?哪些是在伺服端執行?只要速度夠快,其實也沒人會在意。要一個程式師同時會寫兩端的程式,也要自行掌握兩端的通訊其實很難,ASP.NET就是替程式師降低難度,寫程式時只要顧到功能邏輯就好,不必管程式是在客戶或伺服端執行。換言之,太依賴ASPNET這種設計工具時,連程式師自己都不知道程式是在雲端或地面執行的了! 結果是ASP.NET會預設所有動作都要到伺服器報到處理,即使只是移動一下畫面,不需要伺服端任何的資源時,都會有一次網路聯繫與互動。我之前指導學生做網頁連線的象棋遊戲時就碰過這種麻煩,因為所有程式如棋盤狀況都是伺服器在管理,所以只要有個三五盤棋在進行,伺服器就開始卡卡了!所以根本不可能商業化,老闆一定會因為加開太多伺服器而賠死的! 後來我的客戶端JavaScript程式漸漸進步,就將下棋的程式逐步移到客戶端,伺服端不必再同時管理所有的棋局以及下棋的合法性,只需要轉傳客戶之間下棋的動作即可。隨便估計一下也知道,這樣使用伺服器的話,同時下上百盤棋也不會卡的!因為伺服器用的CPU運算與記憶體都非常的少。而且因為下棋程式是在客戶端執行,玩家玩得更順暢了!不必等伺服器告訴你這樣下棋可不可以。 據我目前的理解,多數卡卡的網頁程式都與伺服端擔任太多功能有關,我們真正非伺服器不可的功能其實只有兩項:一是資料取得,一是訊息轉傳。後者是用於聊天室或線上遊戲,以鎮瀾宮繞境的例子來說應該只有即時的照片或影音直播,直播是用廣播模式其實不太會因為上線人多而塞車,至於照片,以目前網路速度來說下載幾十K的照片也不至於塞車的。 多數使用者不知道的秘密是:即使是大學選課系統的塞車也是用軟體技術就可以避免的,真的不必買很多台伺服器來負載平衡!只要程式師可以真的讓所有不必伺服器做的工作都直接寫成客戶端的JavaScript程式。最成功的實際案例就是Google公司了!他們以網路地圖起家,不知情的人都會以為他們的雲端伺服器很厲害!其實真正厲害的是他們的程式師很會寫客戶端程式,將所有可以分攤給客戶電腦的工作都在客戶端(地面)執行!所以變得又快又省錢,他們的伺服器成本相對於提供的功能來說是很低的! 老闆聽我分析後也嚇出幾滴冷汗,因為如果照他之前加開伺服器的想法,這個案子不做還好,要做好就一定會賠很大的!但是我相信我可以用軟體技術幫他提升很多效能,希望真的可以成功。對於我來說,可以從傳統名校(工科很強的學校)手中搶過來而且做得更好的案子,其價值不是可以用錢來衡量的。 或許有人會擔心,如果程式移到客戶端執行好像自己就「吃虧」了!我的電腦會不會太吃力而表現變差呢?應該不會的!現在連智慧型手機的記憶體與CPU都很好很夠用,如同幾年前的一台桌機了!如果甚麼都丟回雲端,你只會多花冤枉錢付無謂的通訊費而已。最慘的是提供服務的公司要多付很多錢給雲端的大老闆!所以程式從雲端回到地面是最合理,也最環保的負載平衡,唯一可能吃虧的是相信雲端很重要,大手筆投資雲端伺服器設備的老闆們,因為事實上可能不會有這麼多事情給他們作。 |
|
( 時事評論|公共議題 ) |