[閒聊] 談雲端運算的一些謬誤思維 (轉貼)

作者: felaray (傲嬌魚)   2013-07-29 10:54:42
談雲端運算的一些謬誤思維 (轉貼)
http://ruddyblog.wordpress.com/2013/07/26/
遇到客戶(IT部門)辛苦的在比較該選擇那個廠商所提供的雲端解決方案最合用。我能作
的就是提供了一些雲端供應商的比較資料( Cloud Server Performance: A Comparative
Analysis of 5 Large Cloud IaaS Providers | Cloud Spectator ),以及自己的一些個
感想:
請用不同的思維方式看雲端
這或許要怪雲端的廣告太誇張(這年頭還真找不到不誇張的廣告),過度強調的功能容易
造成即便是專業的工程人員也會產生的一些個誤解。其實大部份廣告上所喧染的功能都是
需要經過程式設計的,並不是如廣告用詞那般的讓人們容易誤以為跑在雲端上的程式就能
夠完全的自動化了。例如:我們以雲端大家耳熟能詳的四大優點來看:
1. 用不完的CPU power
2. 無限的記憶體空間
3. 無需管理人員的維護作業
4. 沒有地區限制,無時無刻都存在的雲端服務
真是這樣的嗎?這些個條例説明當然是千真萬確的,只是背後要再加上程式設計人員適當
的努力及實踐,以及在正確的架構下運行,這些迷人的功能自然都能成真。
一些認知上的謬誤
話說從Microsoft 的 windows azure誕生至今也已經有三個年頭了,但國内不論是IT部門
或是一般工程師,卻對雲端的應用仍存在許多的誤解,我們就試著來説一下:
對專案屬性的正確理解才是王道:好的程式設計師跟不好的程式設計師的差異就在於正確
的理解能力,身為programmer要時時修正自己的觀念才能更上一層樓。話說回來,要不寫
出糟糕的程式,就必須要有正確的觀念。雲端撰寫程式跟既有的程式撰寫方式是有許多不
同之處的,或許你已經習慣將本地執行良好的程式直接安裝在VM裡頭,只待上傳完成就搞
定了,如果你這麼想,但那就很難去發揮雲端的效益了!請看以下的誤解…
誤解一、雲端的硬體是不會失敗的?
錯!它會失敗的。即使是在雲端上一貨櫃一貨櫃的機房也有故障的機會,也需要定期或不
定期的維修,停下來,或是為了更新軟體或是修補bug不得不停。所以在架構的設計上,
千萬不要把雲端想成是不會故障的機器,相反地;它提供了你龐大且簡易的方式來處理這
些故障的情境(身為程式設計師的你必須把它考慮進去),讓你對客戶所提供的服務不會
因此而中斷,平白的損失了信譽。
誤解二、 雲端有用不完的記憶體,效能不足時增加記憶體就成了!
錯!vm 最大可以到127G, 你可以選最小的: Extra Small(XS)配一顆1.0GHz 的
CPU,RAM 為768MB,本地端儲存體為20GB,這是最省的。那最大的呢?Extra Large(XL)
有8 顆 1.6GHz的CPU,RAM 14GB 及高達2040GB的儲存體大小。明顯的它不是無限的,所以
你是必須精打細算細細思量一個符合客戶工作形態的架構,來確實發揮記憶體的容量。
彈性的運用Scale out: 我們常常會在資料庫運算力不足時,就採用加RAM的方式來解決這
個問題(這招真是好用,完全無需害怕會出新狀況),但scale up不是萬靈丹,其時它們
還是有大小限制的,這時候該考慮的就不是scale up,而是scale out.
誤解三、幾乎所有的雲端供應商都保證提供大於99.9%以上的使用率,所以我們也能夠提
供給客戶這樣的擔保。
重視High available 能夠持續提供客戶服務是絕對重要的,但相對於客戶的業務需求,
它是否是絕對必要的呢?!它跟你即將付出的高成本是否是成正比嗎?
要探討這個問題,首先你必須先弄清楚你的雲端服務確實有必要擁有99.9%的需求嗎?因
為,除非你是單一的系統,完全沒有協作的上、下層,否則在幾個一同協作的複合環境下
,你很容易因為其它系統的效能而失去達成99.9%的availability(例如: 三個99.9%的
系統成串聯方式的架構時,試想你還會有99.9%的產值嗎? 串聯的效能實質上將只有99.7%
的availability)。
Bicycle
誤解四、雲端具有scaling的能力,但這不代表你把程式port到雲端,它就具有scaling的
能力了,你必須透過架構設計才成,程式不會因為在雲端的機器上執行就自動具有這種能
力的。
誤解五、Move everything to cloud, 對嗎?!
又回到公有雲和私有雲孰對孰非的話題,這當然是不切實際且又耗時的行為。目前的趨勢
則是走向 hybrid cloud 的解決方案才是王道,可以在不浪費既有資源的情形下又能享受
到雲端的便利性。
正確的架構才能發揮雲端的功能
當我們去存去一個網站而遇到lag的情形時,我們經常會説:「他們一定沒有採用雲端的
solution,才會發生這種現象。」但這句話合理嗎?試問,即便把程式搬到了雲端,lag
的現象就會自動消失嗎?結論是當然不會,而正確的説法應該是它的架構設計不足以支撐
它被存取的數量,也就是scaling 設計沒作好(話說回來,廠商很少會為了瞬間的流量願
意花錢花心思去提升web site 及程式的scaling能力的,所以程式設計之初即已經註定要
暴表了,所以好的程式設計便成了關鍵之鑰)。此刻,國內雲端還在緩慢的成長階段,程
式師要先有正確的雲端思維才能設計出符合預期的架構。這一點比起在考慮選擇Windows
Azure 或Amazon 或其它雲端供應商的考量,要重要太多了!
怎樣的架構才是正確的雲端架構呢?
別擔心,這是有跡可循的,我們下回再談~

Links booklink

Contact Us: admin [ a t ] ucptt.com