2013年3月16日 星期六

cloudstack 與 openstack 目前的發展趨勢

圖片來源:Kiwi He (殊途同歸)

最近參加許多研討會,或是在網路上的論壇,最常聽到的就是在詢問OpenstackCloudStack的比較與差異,網路上也有許多文章從各種角度去比較各個Open Source IaaS平台之間得差異,有的從功能面,有的從參與的廠商數,有的從社群的活躍度(Mail list 討論量,Bug Report量,Release 的速度,甚至活動的參與人數),舉例圖片如下:

 圖片來源:婉兮清扬 [3]

就我的觀察,目前Open Source IaaS 的兩大陣營 CloudStack 與 OpenStack,是分別從不同的設計理念出發,但是最終的目標就是希望能迎頭趕上Amazon ,成為像AWS一樣的Public Cloud。目前這兩個IaaS的所處位置就如圖下圖所示:

圖片來源:opennebula


OpenStack


從社群面來說:

OpenStack 去年呈現爆炸性的成長(參與人數),有許多大廠都跳進來搖旗吶喊,從正面的角度來看社群欣欣向榮,有這麼多大廠人力和財力的支持,發展起來一定很威,但是從反面角度思考,畢竟各家廠商都還是有商業利益考量,所以針對規格和發展方向就會進行拉扯與角力,這一點讓人隱憂。

從架構面來說:

此外OpenStack 的設計理念從一開始就是為了超大型的IaaS 架構在設計,所以所有的元件(Service) 一開始就是以分散式的架構在開發,每個Service 都可以獨立運作,也是由個社群團隊獨立開發,優點是如果整合的好的話,對於將來Scale out 整個系統會非常方便,但是目前的狀況卻似乎不是這樣,每個Service 的開發與整合感覺沒有那麼同步,所以不管在安裝上與整合上都有一定的門檻。不過隨著時間的演進這個問題應該會慢慢的解決。

從語言面來說:

OpenStack 主要是以Python 來開發,這部份我就不多評論,因為我跟pythone不熟~:P


CloudStack 


從社群面來說:

CloudStack 最早其實是Cloud.com所以開發的軟體,後來被Cirtix 所併購,所以這個產品一開始就算是一個成熟的產品,直到2012年Citrix 把 CloudStack 以Apache 的License 的方式捐獻出去,整個社群就開始蓬勃發展,這次去參加ApacheCon 2013 就有超過11個Session 就是跟CloudStack有關。

從架構面來說:

就我的觀察CloudStack的設計理念反而是從Private Cloud走向Public Cloud 架構,也就是CloudStack 在一開始開發時,主要是以管理較小的機房架構(Private Cloud)為主,所以不管在安裝的容易度上,和產品的整合度上都非常成熟,在這邊分別把我覺得不錯的優點和特色一一舉出:

1. 出色直覺化的UI

 最讓我覺得驚訝的就是建立Virtual Machine 的畫面,跟我之前開發MechCloud的想法一模一樣,利用圖像化直覺的設計,讓使用者很清楚他現在在做什麼,以及到哪個步驟了,下面第一張圖是當初MechCloud一開始的設計,第二張圖示Cloudstack的設計,是不是很像。








再來談談Architecute,下圖是Cloudstack的Architecture階層圖,管理階層是從Zone,Pod,Cluster,Host,到VM。直接看到這張架構圖應該是很好理解,但是如果在安裝與設定時要怎麼對應成這張圖呢?




Cloudstack 直接把上面階層的概念做成UI,讓你由圖片可以很清楚的了解整個Deploy 架構和網路設定



 2.支援多種網路架構(主要由Basic Mode and Advanced Mode去組合變化)

IaaS裡面最複雜的一部分就是網路規劃,以及Vlan的設定,CloudStack 同樣也是透過圖形化的方式讓管理者很容易去設定和了解網路的架構,下圖分別是Basic mode 和 Advanced Mode的畫面。






 詳情請參考:


3.歡迎各家廠商加入的Plugin-in 架構

這部份算是CloudStack最受歡迎的部份,這次參加ApacheCon 2013 裡面就有人提到OpenStack和CloudStack在這方便最大的差別:

Open source Community Leadership Drives Enterprise Grade innovation.Cloudstack's plug-in model permit enterprise-grade adapters.
Cloustack的理念是這樣,企業在尋找的是可以更客製化的Iaas環境,但是如果要客製化Iaas,必須先了解整個cloustack或是openstack實在是太困難,所以cloudstack 允許企業可以從 plug-in or adapter的架構切入,讓企業可以直接針對自己的需求與所需要支援的硬體去開發plugin,不用受限於社群的審查和投票流程,因為傳統在社群上要開發新Feature必須經過以下流程:
  • 在Maillist 宣布,讓大家都能知道,是否能接受
  • 公開Function Spec & Design
  • JIRA ticket for feature
  • Setup a Dev Environment
  • Branch on github use your own (publich) branch
  • Submit changes to Review board
  • Post-reviw for large package of changes
  • Decide on the wiki you want
所以Plugin 的架構可以讓企業在開發上增加彈性,不論是要直接捐獻給社群,或是沒有捐獻給社群直接拿來獲利都是可以。


4. 使用Java 開發

好啦,這其實是我的私心,因為Java比較熟,所以從Cloudstack切入會比較容易,不管是要改寫,patch 或是寫plugin都非常方便。


最後,就如同我說的cloudstack一開始就是從Private cloud的角度去開發,所以之前的架構是把所有servie 都綁在一起 ,如果要比較大規模的佈署時(類似AWS)可能就會遇到Scale 的問題,因此cloudstack社群也有注意到這個問題,在 4.1 已經開始在把系統架構重構(代號Javelin),目的是要把架構變成Loosely-coupled component oriented distributed architecture

結論:

青菜蘿蔔個有所愛,所以也不能因為我比較喜歡cloudstack就說openstack不好,一切還是要回歸企業的應用與需求為主,上面所寫的只是希望可以給各位在選擇解決方案時能有所參考。



延伸閱讀:
[1] CloudStack 與 OpenStack 誰將稱王
[2] OpenStack vs CloudStack: The Latest Score
[3] CY12-Q4 Community Analysis — OpenStack vs OpenNebula vs Eucalyptus vs CloudStack


張貼留言