2011年4月26日

開放源碼的Cloud Foundry打造PaaS

「平台即服務」(PaaS, Platform as a Service),是雲端的一種發展型態。

先從過去的軟體發行方式演變談起吧!舉例來說,若公司需要一套「線上協作」軟體。最傳統軟體發行方式,就是去買伺服器、套裝軟體,上線之後,開放給員工或客戶使用。

這樣做產生了一些不必要的浪費,例如內部的維護人力,伺服器硬體和電力的消耗,後續的軟體升級更新費用。以伺服器硬體的採購來說,不可能買得剛剛好,初期可能只有30個人上線使用,但考量後續可能會有更多人,所以只好買了效能更好的機器。在使用率成長到恰恰好之前,硬體大多時候是閒置的,但仍然在消耗電力、折舊,而使用率超過預期之後,不管水平擴充或垂直擴充,都還要再花一筆錢。

所以之後有些軟體廠商不賣套裝軟體,而是把一些合適的軟體變成線上服務。例如協作平台,只要找到一家提供WIKI服務的供應商,依照需求人數、功能付費。由於軟體服務供應商,具有規模經濟效益,建設的軟硬體可以同時提供給許多家客戶,對客戶來說費用通常比自建較划算。這種軟體發行方式,就稱為「軟體即服務」(SaaS, Software as a Service)。

如果是一套軟體就可以服務所有客戶,架構上的問題就是怎麼達到水平擴充(scale out)。例如在3台機器可以提供3000位使用者同時上線,當需求增加到5000人時,可能只要擴充成5部機器,理論上一個適合水平擴充的架構,面對不斷成長的使用者,只要適時增家機器數量。

對使用者來說,只要購買「線上服務」形式的軟體,就不用理會前面說的維護及IT資源浪費問題。但是對於提供軟體服務的應用服務供應商(ASP, Application Service Provider),勢必還是要著手解決這些問題,而且是更棘手的問題,因為熱門的服務需要應付大量的使用需求,但萬一某些階段出現大批使用者退出使用,浪費的軟硬體資源就更可觀;對於突然增加大批新使用者,設備也可能趕不及擴充。

所以軟體服務的供應商,必須向「基礎設施即服務」(IaaS, Infrastructure as a Service),購買依照需求和使用量計費的虛擬化解決方案。提供IT基礎設施服務的廠商,可以建置好一櫃又一櫃的硬體,透過虛擬化技術,讓執行軟體服務的作業系統,可以在虛擬化的硬體平台運行。這些廠商本身可能就是電腦硬體的製造商或租賃商,可以運用高效能低耗能的硬體,透過虛擬化技術執行作業系統,減少硬體閒置的浪費,讓處理器效能、記憶體容量用得更徹底。

使用者並不在意他買的服務,背後是怎麼個運作,他只管付了錢,就能取用軟體服務。

有些使用者需要的軟體,必須由專業的資訊服務廠商,為其客製化量身打造專屬功能。

對於開發很多軟體,並把軟體變成一種服務來販售的廠商,租用虛擬化的IT基礎設施,其實只解決了一半問題。因為軟體開發者,仍必須在虛擬作業系統中,安裝軟體所需的網頁伺服器、資料庫等。

我們都知道一台網頁伺服器,可以同時運作多個網站;一台資料庫伺服器,可以同時運作多份資料庫。我們在一部虛擬化作業系統中,安裝一套網頁伺服器、一套資料庫,可以不用管背後的硬體設施怎麼配置。但仍未解決軟體部署的問題,一部虛擬作業系統的負載已滿時,我們必須再建立一部新的虛擬作業系統,之後的軟體必須部署到新作業系統;但各個軟體對系統消耗並不平均,我們不可能不斷在這些虛擬作業系統之間搬移網站、資料庫,只為了達到對系統消耗的均衡最佳化。

「平台即服務」(PaaS, Platform as a Service)為上述的問題提供解決方案,PaaS利用IaaS配置虛擬化系統,在上面提供網頁伺服器、資料庫的服務,並規範了應用軟體開發的架構。因此SaaS供應商開發的軟體,只要符合某個平台規範的架構,把軟體部署到這個平台,就不用管後端的網頁伺服器、資料庫伺服器怎麼運作。

PaaS的服務供應商,通常是大廠,如Google App Engine、Windows Azure。到底要靠哪邊站?應該讓不少人躊躇。

其實現在有了新的選擇,虛擬化技術的大廠VMWare,在這個月發佈一則消息,就是旗下的PaaS平台「Cloud Foundry」即將公開,目前可以開放測試帳號註冊,等待啟用通知的邀請。和其他家PaaS平台不同的地方,是Cloud Foundry為業界第一個「開放源碼(Open Source)」的PaaS平台。

Cloud Foundry允許軟體服務採用更多種開發框架(它主要是以Ruby語言開發),包括Spring(之前被VMWare收購)、Grails(隸屬於SpringSource)、Node.jsRuby on Rails,目前是VMWare自家的Spring/Grails比較推薦,未來的發展可以期待。以及支援多種儲存技術,例如關聯式資料庫MySQL、NOSQL資料庫RedisMongoDB、訊息佇列服務RabbitMQ等。

體驗Cloud Foundry應用軟體的開發,採用Grails可能會是一條捷徑,因為Grails本身有良好的測試及部署機制,不管用command-line或整合開發工具都很方便。Grails已有Cloud Foundry Plugin可使用,參考「Cloud Foundry Plugin Reference Documentation」。

開放源碼的PaaS,其靠山又是虛擬化技術的領導廠商VMWare,加上被VMWare併購的Spring是目前主流的Java開發框架之一,還有旗下的Grails是個優秀的輕量、敏捷開發框架,這些跡象似乎顯示Cloud Foundry可能走紅、佔有一席之地的機會。

Cloud Foundry的開放源碼授權採用Apache License 2.0,對於其他有意進軍PaaS市場的服務供應商,可以運用現成的Cloud Foundry提供PaaS服務;意謂著對軟體開發商而言,可能有更多不同廠商提供的Cloud Foundry服務可租用,服務品質和收費標準也有機會因競爭而變得更合理。

如果架構規畫得宜,用Grails開發的軟體,可以方便地在開發階段,部署到公司內的JavaEE伺服器,方便內部測試或給客戶預覽,待正式上線再部署到租用的Cloud Foundry平台,只要選擇不同計費方案,就可以擴充系統的負載量。

對於資源充足的軟體開發公司或客戶,也可以利用Cloud Foundry建立私有的PaaS平台。以學校的資訊中心來說,若能透過Cloud Foundry建立專屬PaaS,那麼學校各單位的資訊化需求,就可以直接向中心申請一組帳號,把軟體部署到PaaS平台上,就節省各單位自行維護網頁伺服器、資料庫的麻煩,中心機房集中控管的軟硬體資源可以更有效運用。

沒有留言:

張貼留言

lyhcode by lyhcode
歡迎轉載,請務必註明出處!