Ruddy Lee 分享空間

Emergent Design 演化設計

談雲端運算的一些謬誤思維

leave a comment »

遇到客戶(IT部門)辛苦的在比較該選擇那個廠商所提供的雲端解決方案最合用。我能作的就是提供了一些雲端供應商的比較資料( Cloud Server Performance: A Comparative Analysis of 5 Large Cloud IaaS Providers | Cloud Spectator ),以及自己的一些個感想,希望能有些幫助:

請用不同的思維方式看雲端


這或許要怪雲端的廣告太誇張(這年頭還真找不到不誇張的廣告),過度強調的功能容易造成即便是專業的工程人員也會產生的一些個誤解。其實大部份廣告上所喧染的功能都是需要經過程式設計的,並不是如廣告用詞那般的讓人們容易誤以為跑在雲端上的程式就能夠完全的自動化了。例如:我們以雲端大家耳熟能詳的四大優點來看:

1. 用不完的CPU power
2. 無限的記憶體空間
3. 無需管理人員的維護作業
4. 沒有地區限制,無時無刻都存在的雲端服務

真是這樣的嗎?這些個條例説明當然是千真萬確的,只是背後要再加上程式設計人員適當的努力及實踐,以及在正確的架構下運行,這些迷人的功能自然都能成真。

 

對專案屬性的正確理解才是王道

 

好的程式設計師跟不好的程式設計師的差異就在於正確的理解能力,身為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。讓資料也能俱有橫向擴充的能力(這是雲端相當基本的考量,必竟big data 是這個時代的產物)。

 

誤解三、幾乎所有的雲端供應商都保證提供大於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 的解決方案,讓應用程式的架構具有鬆散化的特性,也就是盡量將需要計算能力或大量相關性運算資料的功能要求改成呼叫雲端服務的方式(服務在雲端或本地端,呼叫者並不需要知道),以實踐服務導向的架構作規劃(SOA),如此便可以盡量在不浪費既有資源的情形下又能享受到雲端的便利性。

正確的架構才能發揮雲端的功能


當我們去存去一個網站而遇到 lag的情形時,我們經常會説:「他們一定沒有採用雲端的solution,才會發生這種現象。」但這句話合理嗎?試問,即便把程式搬到了雲端,lag的現象就會自動消失嗎?結論是當然不會,而正確的説法應該是它的架構設計不足以支撐它被存取的數量,也就是scaling 設計沒作好(話再說回來,廠商很少會為了瞬間的流量願意花錢花心思去提升web site 及程式的scaling能力的,所以程式設計之初即已經註定要暴表了,這時候好的程式設計便成了關鍵之鑰了!)。此刻,國內雲端還在緩慢的成長階段,程式師要先有正確的雲端思維才能設計出符合預期的架構。這一點比起在考慮選擇Windows Azure 或Amazon 或其它雲端供應商的考量,要重要太多了!

怎樣的架構才是正確的雲端架構呢?

別擔心,這是有跡可循的,我們下回再談〜

Written by ruddyllee

2013 年 07 月 26 日 於 00:10:38

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

你正使用 WordPress.com 帳號留言。 登出 / 變更 )

Twitter picture

你正使用 Twitter 帳號留言。 登出 / 變更 )

Facebook照片

你正使用 Facebook 帳號留言。 登出 / 變更 )

Google+ photo

你正使用 Google+ 帳號留言。 登出 / 變更 )

連結到 %s

%d 位部落客按了讚: