第193期 / November 5, 2013

研發新視界

分享到臉書!分享到維特!分享到噗浪!分享到Google+!分享到微博!轉寄友人友善列印

以Windows Azure Compute快速創建專屬公有雲服務

作者/高易中

[發表日期:2013/11/4]

雲端運算的發展延燒至今,相對於各大企業所致力創建的私有雲方案,真正用戶數龐大並與所有人息息相關的公有雲,卻時常被雲端業者甚至是多數開發者所忽視。事實上除了提供廣域服務外,隨著相關平台的進化,任何企業甚至個人都可快速創建、管理專屬的公有雲服務。

有鑒於此,本文首先重新定義服務提供者、平台提供者的不同,並針對目前台灣公有雲發展與國際的變動趨勢,分析兩者間服務的主要差異。最後再以Microsoft所提供Windows Azure為例,說明公有雲服務提供者該如何正確判斷,選擇真正符合當前需求的Windows Azure Compute平台,建立或轉移專屬的商業邏輯,以求快速進入公有雲服務市場。

公有雲服務提供者、公有雲平台提供者

公有雲(Public Cloud)和私有雲(Private Cloud)是雲端議題最常聽到的兩大名詞,但實際區分上卻並不容易。對於企業來說,投資、建設獨立機房與虛擬機器管控系統,透過內部網路彈性調度所有硬體資源或提供企業內部專屬服務,即可稱為私有雲服務。但當企業開始將私有雲的伺服硬體、機房資源,用來建置新型服務,並將其對外開放給特定區域外甚至是全球範圍時,那對於所有外部使用者而言,該模式就可視為公有雲服務。

由於不需像私有雲或混和雲 (Hybrid Cloud)需複雜連結特殊商業功能或企業安全性,公有雲服務通常較易於區分不同的服務階層,以一般人最熟悉且涵蓋範圍廣大的Google Cloud為例 (見圖一),即可清楚看出根據實際提供的服務類型不同,可將公有雲服務歸類出IaaS (Infrastructure as a Service)、PaaS (Platform as a Service)、SaaS (Software as a Service)三階架構。


《圖一》使用雲端階層的區分Google Cloud


除了標準的三階層式分類外,為防止廣義名詞的混淆,本文在此更進一步定義,將硬體機房不需由用戶架設、管理,並提供給企業外廣大使用者的雲服務稱為「公有雲」。單純提供公有雲服務 (如:Google Search、Apple iCloud) 的業者稱為「公有雲服務提供者」。而提供讓使用者創建、管理專屬公有雲服務 (如:Windows Azure、Amazon Web Services)的平台業者則稱為「公有雲平台提供者」(不僅侷限在PaaS而是更廣義的創建平台定義)。

通常具規模的公有雲服務提供者會選擇直接以企業內既有機房來建置公有雲服務。但此模式對於中小型企業或無機房架設、維護經驗的傳統產業,甚至是個人創業者來說,卻是很大的技術與成本門檻,此時公有雲平台提供者的出現,即可讓所有企業、一般使用者,以更加便利、低投資成本、不須硬體維護等方式創建專屬公有雲服務,快速進入雲端服務產業。

台灣公有雲發展

以公有雲平台提供者來說,國內已有部分業者導入較新型的雲端平台概念與技術 (如中華電信 hicloud、神通 Micloud等)。但目前台灣平台服務始終集中於IaaS層,雖有逐漸朝向PaaS發展的趨勢但尚未成熟,仍以雲端虛擬主機、雲端儲存空間等模式為大宗。這樣的服務其實類似於早期ISP (Internet Service Provider)業者所謂主機代管、網站代管的進化,運用最新的主機虛擬化以及網管技術,來達成更有效率、無閒置的最佳化硬體分配,也就是在閒置的單位硬體資源上,塞進更多作業系統、應用程式以及連線使用者。對使用者而言,即可使用租賃模式,在不購買、架設、維護伺服主機與網路器材,以及節省機房電力空調等成本的情況下,24小時無間斷地自由使用網路主機與網路空間等基礎設備服務。

而在公有雲服務提供者方面,台灣其實也有不少希望搭上雲端列車,跟進提供雲端服務的小型廠商,但主要多以個人雲端硬碟 (雲端共享空間)等較基礎的IaaS層服務為主,畢竟買硬碟遠比設計SaaS層應用的進入門檻來得低上許多,且長期來看硬碟的單位價格還在持續下降中,確實不失為低投資成本、低技術門檻又能快速進入市場的公有雲服務。

但無論是公有雲平台或是服務,台灣公有雲提供者似乎都較著重在 IaaS 層的服務上,也就是將機房內CPU運算能力、硬碟空間、網路頻寬等資源,以最有效率不閒置的方式租借給廣大的外部使用者。對於使用者來說,公有雲的價值主要便是集中在降低機房硬體與管理維護等成本,以及任何時間地點甚至支援跨裝置平台的自由存取之重點。老實說,在服務多樣性、服務可延展的商業性,以及可涵蓋到的使用者客群上,都還有很大進步空間。

國際公有雲趨勢

相較於台灣,目前國外多數知名公有雲服務提供者,反而皆以SaaS層為主要營運導向。普遍將所有研發重心集中在,如何設計出更能吸引廣大用戶去使用,並且為之依賴的SaaS商業應用。如同Facebook、Google Gmail等服務的成功,雖然底層的伺服器硬體、作業系統、負載平衡器會影響服務效率、可靠性等因素,但這些畢竟不是用戶實際去接觸的對象,真正能從全球使用者直接或間接獲得出的龐大產值與商業利潤的,主要還是取決於放在SaaS層中最核心的軟體商業邏輯。當然國外也有以主推IaaS模式的雲端服務提供者如Dropbox。但也因服務的可複製性高,正面臨著與整合既有用戶帳戶的Google Drive、Microsoft SkyDrive等同質性服務的強烈競爭中。對此除了提供較對手更優惠的單位雲端空間價格等策略外,更重要的,即是思考如何提升服務本身的不可取代性與附加價值,諸如與第三方Apps的無縫整合,或利用現有雲端空間服務創造出更具魅力的創新商業應用,為此很明顯的現在Dropbox現在的雲端服務,其實已更趨向於SaaS定義。

而國際上主流的公有雲平台提供者 ,諸如Amazon Web Services、Windows Azure等業者畢竟起步較早,目前產品線幾乎都趨向完整化,其中又以同時涵蓋IaaS、PaaS,甚至提供專屬API等加值服務達成SaaS化的Windows Azure,擁有最多類型的平台創建模式,企業或個人,可根據實際需求不同,自由選擇這些結合來自Infrastructure 、Platform、Software 等多種不同層級軟硬體的組合方案 (如圖二),快速建立自己的專屬公有雲服務。


《圖二》Windows Azure提供多取向的公有雲解決方案


有別於台灣公有雲 IaaS層服務的密集,國際上具規模的服務提供者,則多數以SaaS為導向,或是利用SaaS化的方式來強化現有IaaS層的服務價值。而公有雲平台提供者除了已涵蓋服務到PaaS層外,甚至附加了與SaaS的整合解決方案,因此對國外業者來說,服務不再侷限於機房硬體設備的分享,有更多樣性的服務發展方向。而對使用者來說,在各式功能的SaaS應用加持下,公有雲的價值更偏向接近於日常生活上的全面科技輔助或娛樂性的存在。在供需雙方不斷交互碰撞下,公有雲服務可吸引和提供的使用客群數量將是倍數增長,代表潛其中在的各式商業價值與利潤更是無法預估的。

利用公有雲平台提供者創造服務

雖然許多台灣電子廠仍將雲端產業追求的商機放在「伺服器硬體」上, 但根據觀察其實不難發覺雲端的真正精華,其實就像電視節目的好題材、好劇本一樣,依然是內容為王(SaaS為重),至於拍片用的道具、器材以及攝影棚(IaaS、PaaS),雖然不可或缺但不是主角,至少絕對不會是吸引廣大觀眾準時收看的主要原因。

台灣公有雲提供者應更集中注意力於軟體核心的開發,設計出更具創意、簡易而直覺化、滿足使用者需求的SaaS商業邏輯或數位內容,不用花費過多精力在複雜、高成本的IaaS、PaaS,為此充分運用現有的公有雲平台提供者來架設服務,直接在已完善佈局網路設備、伺服主機、網域設定的公有雲平台上,專心進行SaaS的開發與測試,或將現有的服務進行雲端轉移,對於尤其是中小型企業和個人的雲端服務提供者來說,將省去莫大的人力、時間與硬體投資費用,對平台提供者來說,則能充分運用機房資源獲得利潤,可說是相當雙贏的策略。

本文在此將以完整涵蓋IaaS、PaaS且的公有雲平台提供者Windows Azure為例,介紹雲端服務提供者該如何根據實際需求、架構、服務類型的不同,選擇最適合的平台模式,進行測試、創建或轉移自行設計的商業邏輯與服務到公有雲,以提供給全球龐大用戶來使用。

根據需求選擇Windows Azure Compute

與同為國際知名雲端平台提供者Amazon Web Services不同,Windows Azure具備非常多樣化的服務型態,以COMPUTE、DATA SERVICES、應用程式服務、網路服務等四大主軸,同時涵蓋至少十九項不同的平台服務類型。(如圖三)。而本文此次則會將重點放在,實際讓廠商或個人創業者將現有主機、商業邏輯,轉化成雲端運算的COMPUTE為主要介紹、比較範圍。


《圖三》目前Windows Azure提供的多類型服務


Windows Azure Compute 共包含虛擬主機(Virtual Machines)、雲端服務(Cloud Services)、行動服務(Mobile Services)、網站(Web Sites)等四個不同面向的運算類型,可能看似有些複雜,但若與企業機房內主機自建服務 (On-premise)相比 (如圖四),即可發現使用者對這四種服務的軟硬體權限層級是呈現遞減趨勢 (由Windows Azure自行管控),這同時代表公有雲服務提供者可更加集中於Application與Data的開發,同時也因額外控制層面較少而架構單純,並減少開發者更多的硬體層、OS層的維護成本。


《圖四》自建服務與四種Windows Azure Compute之比較


若先不談針對行動APP需求的Mobile Services,通常Windows Azure Compute較令人感到困惑的,多發生在對於網站、雲端服務和虛擬機器之間的抉擇。其實三種服務都能在Windows Azure 中執行高擴充性的應用,差異僅在如何讓管理簡易性與額外控制度,這兩種背道而馳的需求面向達到平衡(如圖五)。


《圖五》Windows Azure Compute各服務在管理與控制的取向不同


Web Sites主要特點如下:
  • 主要目的為在Windows Azure上建置高度可擴展性的Web網站。

  • 以最快速、輕鬆佈署一高度可擴展的雲端運算 (甚至是極小規模)是其特色。

  • 支援FTP、Git、WebDeploy 或 TFS等多樣化的佈署模式。

  • 支援現在.NET、PHP、Node.js或Python等近代主流開發語言。

  • 仍能與其他Windows Azure 服務整合,如 SQL Database、Service Bus 和儲存體。

  • 目的在快速且管理容易,故只提供Application和Data層的Windows Azure功能。

  • 不支援如Startup Task,Native Code,Virtual Network等進階應用。

  • 不支援對執行個體的遠端連線,僅可透過Windows Azure入口網站進行簡單設定。

Cloud Services主要特點如下:
  • 主要目的為利用PaaS環境,建立高可用性、高擴展性的強大企業級應用程式。

  • 支援高級多層式架構,自動部署和彈性計算,以達到可支援全世界客戶的高性能的SaaS解決方案為目標。

  • 比Web Sites支援更多的開發類型,但不同的是多半先在開發環境 (如 Visual Studio) 中建立,再部署到 Windows Azure。若是 PHP等開發可在角色啟動時安裝架構的自訂開發步驟或工作來達成。

  • 主要優勢為支援更複雜、多層架構的能力,單一雲端服務可能由一個前端Web Role以及一個或多個Worker Role所組成。故每個階層都可以獨立擴充。

  • 在PaaS 環境中開發,故支援最有效利用平台的程式碼和架構選項。對於主機硬體、基礎結構的控制能力也會較Web Sites來得多。

  • 可使用遠端桌面連接到執行個體。也能在Role啟動時執行的更進階 IIS 和電腦組態變更,包括需要系統管理員控制的工作,如編寫指令碼。

  • 利用Virtual Network,可以將企業內網與Windows Azure公有雲網路做連接。讓企業網路享受公有雲帶來的高度彈性計算和互通性,同時也保證網路安全。

Virtual Machines主要特點如下:
  • 主要目的是將現有的企業自建服務,以虛擬機方式整個OS複製到Windows Azure,以最快速方式將連結複雜,或不被Web Sites / Cloud Services所支援的程式語言或架構所開發的企業服務,佈署上雲端並轉成公有雲服務。

  • 除上傳現有的虛擬機器映像外,也能透過Windows Azure入口網站建立新的 Windows Server 或 Linux 虛擬機器。且使用者對虛擬機器的作業系統、組態以及已安裝之軟體和服務,都能擁有最大控制能力。

  • 支援虛擬機的遠端存取,並直接擁有系統管理層級執行組態變更的能力。當然也因為是IaaS模式,不同於Web Sites和Cloud Services的,使用者必須在基礎結構層級完全管理自己的虛擬主機和裡面的所有應用程式與服務。

  • 支援Virtual Network,除了同樣也能以安全模式將企業內網與公有雲直接連接,享受雲端計算帶來的便利性外,也能讓虛擬機器連結回來佈署於企業網路。

總體來說,不管是Virtual Machines、Cloud Services、Web Sites,幾乎都有屬於自身的最適用範圍(如表一、表二),舉例而言若業者想轉移雲端的服務,一定要配合SQL Server、SharePoint Server等本地型服務,或是程式內主要商業邏輯與協同工具,是使用早期COM+或是其他不被Windows Azure所支援的開發架構,又或是開發者想獲得更高的系統管理權如自動重啟主機等,那麼Virtual Machines將會是幫助企業或個人最快速達成雲端化的途徑。

因其提供的是真正接近一般的虛擬機器環境,使用者可透過遠端連線的方式,來自由操作、安裝、設定整台主機,達到幾乎等同於本地主機的行為,只是要注意的是此模式僅支援Windows Server 2008 R2以上與部分版本Linux的OS系統,若現有服務的OS不再此範圍內,則需要額外進行系統OS升級的測試與轉換。


《表一》Virtual Machines、Cloud Services、Web Sites的適用範圍



《表二》Cloud Services (Web角色)、Web Sites細部功能比較


通常真正讓公有雲服務提供者難以抉擇的情況,多發生在具相似使用案例與優勢的Web Sites和Cloud Services上,若以較簡易的模式來區分,假如服務是基本的網站類型,使用純粹HTML、ASP.NET、PHP、Pyhon、Node.js等模式開發,或是開發者只使用較單純的開發工具(如內建的文字編輯器),那麼Web Sites將可以提供你更多元、簡單、快速的佈署方式,甚至可以使用GIT、FTP的模式快速在Windows Azure 中特化後的IIS佈署雲端網站,甚至可以針對需求或效能來調整要採用免費、共用、標準模式來節省架站與維護成本,此外由於定位在簡易卻高完整性的解決方案,故Web Sites預設就支援和SQL Database的整合,甚至提供了免費資料容量的優惠,給予使用者佈署容易、高整合性卻低成本的選擇。

但假如想轉移的服務,是以多層式架構進行設計,需要更高度的性能與調整性,或是需要特殊工具安裝與安全連回企業VPN等功能,那麼絕對會建議採用Cloud Services模式。其架構類似於在Windows Azure建立特化的Windows Server,雖然可使用的權限比不上Virtual Machines,但開發者仍可以透過遠端連線或是執行指令碼的方式,達成一定程度的自訂化。

更重要的是Cloud Services具備比Web Sites更好的負載平衡機制與狀態監控性,可讓多層式架構設計的網站服務,透過效能與連線監控器,根據不同需求在特定時間強化現有系統,比方說以擴充Web Role執行個體增加網路連線最大負荷數(過年時的訂票系統),或以擴充Worker Role執行個體增加瞬間運算效能 (需要複雜運算大批資料時)。Web Sites雖然也有類似的擴充功能,卻是針對整個網站擴充並無法針對單一層進行,當然這也要取決於當初系統設計時是否有做出多層式架構的切割。

也因為Windows Azure Compute具備的權限管控,是由Virtual Machines > Cloud Services> Web Sites這樣遞減的,故Virtual Machines幾乎可用於任何的應用程式架構。但這並不代表所有服務的轉移都選擇Virtual Machines就好,其實剛好相反,當三種模式都能滿足使用者需求時,絕對會建議採取Web Sites > Cloud Services> Virtual Machines的方案,將多餘的設定與OS層應用交給Windows Azure來管控,除了讓服務提供者專心在自身的開發外,且通常Windows Azure的自我管理機制絕對比使用者自己控制來得即時並具效果,更重要的是如此節省下來的龐大系統面維護成本,才是轉移產品至公有雲的重要目的之一。

最後介紹的Mobile Services則是 Windows Azure較近期推出的產品,算是給予開發Mobile App的企業或個人創業者,在公有雲架構的服務上多一種全新的選擇。因一般來說具規模且持有廣大用戶的App業者通常會面臨三種問題:
  • 將商業模式已成功的APP持續拓展到多種行動平台(如iOS、Android、Windows Phone)。

  • 確保APP不被破解與複製 (尤其是付費型APP)。

  • APP須具備強大且具彈性的承載力供應全球龐大的連線用者。

現行常見的作法是,以HTML5 (或各種原生語言)建立單純的UI層,將所有核心的商業邏輯撰寫在Web Services並建置在公有雲運算 (如Cloud Services),如此不僅能透過純UI層跨所有行動平台,且被破解複製的APP其實僅是UI框架,仍然無法竊取位於公有雲的核心邏輯,更大優勢的是不管再多用戶與行動裝置所產生的數十萬服務需求,只要Web Services使用公有雲平台的效能與流量彈性擴充,絕對能達到足以負荷的服務可靠性與負載量。

但上述作法仍有部分缺陷,諸如APP業者不具備或不熟悉Web UI或Web Services的技術與開發模式;部分重視反應性或運作效能的APP需要使用各行動平台的原生開發語言(Objective-C、Java、C#等)來撰寫;HTML Ajax Call Web Services的單向調用模式無法滿足商業需求等,為此 Mobile Services的出現 (如圖六),即可滿足更多行動服務提供者的進一步需求。


《圖六》Mobile Services可在三大行動平台達成資料儲存、整合驗證、推播通知


Mobile Services主要特點如下:
  • 支援Windows 8、Windows Phone 8、iOS SDK、Android SDK等各平台的原生開發語言,並可對不同平台產生對應的Sample Code,簡化多平台開發。

  • 支援Windows Phone、iOS 、Android 等不同行動平台的原生推播功能,也就是不再是只有客戶端APP呼叫服務端,也能做到由服務端將資訊推送給所有用戶的APP。

  • 為所有資料庫操作建立完善的服務端API可供各平台原生開發語言調用,避免APP直連資料庫或是需要客製化撰寫服務端操作資料庫的介面。

  • 直接整合Facebook、Twitter、Microsoft、Google等其他知名雲端帳戶的身分驗證,除了簡化自行撰寫帳號驗證機制外,也能避免用戶對新創雲端帳號的排斥。

  • 與 Cloud Services一樣,具備完整的監控能力(包含資料面),讓服務提供者更容易了解現在行動服務的使用情況,並可進行對應性能擴充。

故本文認為適用Mobile Services的情況如下:
  • APP有跨平台、防破解複製、高負載考量,卻無法採取HTML5+Web Services方案。

  • APP需要從服務端將資訊或通知給多種平台下龐大數量的用戶端。

  • APP有快速或簡易建立較高安全性並跨平台的資料庫連線需求。

  • APP希望能整合其他主流雲端帳戶的登入與驗證機制。

以上情況若符合任何一點,APP業者都有能採用Mobile Services的理由,實際上該服務層級介於Cloud Services與Web Sites間,並針對行動開發上進行許多功能與程序的簡化,當然企業或個人創業者,還是可根據自己的額外需求或成本考量,決定是否改採用此服務來協助、強化現有的行動APP。

Windows Azure Compute所提供的四種雲端運算服務,實際上絕對都有其各自的優勢存在,重點便在於使用者該如何依據實際需求,選擇其一或組合搭配讓現有商業邏輯轉化成更具全球龐大商機的公有雲服務,或是以共同雲端處理後台之模式,統一協助涵蓋多種行動平台,總計可能達數以萬計的客戶端APP。但無論是採取何種公有雲平台方案,服務提供者要面臨的真正抉擇,不外乎仍是要如何在管理簡易性、額外控制度、平台單位租賃成本上,取得一個最終平衡。

結語

有鑑於雲端議題發展至今,多數雲端業者與開發者對於和自身密切相關的公有雲認識尚淺,本文首先重新定義了公有雲、公有雲服務提供者、公有雲平台提供者等角色簡單定位後,開始分析台灣與國際在公有雲發展上的主要差異,進一步指出台灣公有雲業者對SaaS層級上仍有很大進步空間,並藉此說明有效利用公有雲平台提供者創建服務的快速與便利。最後再以Microsoft的Windows Azure Compute為例,說明四種雲端運算服務的目的和適用模式,進而協助公有雲提供者在符合目前需求與實際成本考量下,在管理、自訂控制、平台成本取得平衡點,選擇一真正適合的公有雲平台,進行自身公有雲服務的快速建置。(本文轉載至RUN!PC網站)

參考資料