從訂票網站塞爆現像,談雲端擴充服務的好處與做法

魯蛇實驗室

前一陣子知名網站大市集,代售張惠妹世界巡演台北場門票,一次性開放6場共計6萬張門票。開放購票當天瞬間有1萬7至1萬8人次湧入。最高成交紀錄為每分鐘720張,最低票價區600元門票於30分鐘內售完,而800元以及2,800元搖滾區也全數出清,7小時共計售出5萬5張門票,是目前台灣演唱史上賣票最快的紀錄。

萬人購票,系統塞

有訂票經驗的人都知道,每當知名歌手開演唱會,國內售票系統不論是大市集或是年代都需花上好幾個小時,才能夠完成訂票。當辛辛苦苦搶到了位置,卻因10分鐘的付款期限逾時和搖滾區絕緣,還得重新訂位。到底是業者無心改善,還是營運上確實有難度?

▲圖為大市集近3個月的網路連線數統計圖,9月22當天的網路連線數高達400多萬,比平日的連線數高出幾百倍。以實體機器可負荷的數量為例,若單台實體主機可同時容納1000個連線數,則平日營運所需的實體主機只要5~10台即可。

硬體擴充,成本增

為了應付大型演唱會,賣票當天需20~40台實體主機才可負荷400萬的連線數。而企業用伺服器依配備等級的不同,價位差異較大,初期可負荷的價位約在每台10萬到20萬之間,若企業為了維持這短暫幾天的購票需求而多添購10~20台主機,光實體機器的購入成本就增加了100萬到400萬,而營運成本還包括人力管理費、機器維護費及機房佔地等。單單購入實體機器的成本來說,企業就不可能採納這樣的方案。當然,使用者每次訂票都得苦等而無法連上系統,或是擠上系統卻爆掉,真囧。

▲尖離峰設備使用比較圖:設備多只能應付偶發的大量訂單,平時大多閒置不用,對於設備與能源成本來說相當吃緊。

短期租借,效益高

面對這樣的問題,業者轉而尋求「租借硬體資源」的方式來運作穩定、有品質的服務,而雲端服務的其中一種方法正是透過實體資源虛擬化的方式來「租借資源」。

▲透過虛擬化技術,就能在少量設備上模擬出大量的電腦。但是受限於硬體效能,虛擬數量越多、使用人次越多,勢必會影響到效能。

傳統的電腦可以想成硬體設備(桌機及筆電等),加上作業系統(如Windows、Linux及Mac OS等)。所謂實體資源虛擬化或硬體虛擬化(hardware virtualization),便是在原有的電腦上(硬體加作業系統)建構一虛擬層,使得虛擬機器virtual machine,亦即新的作業系統,可以透過虛擬層使用硬體資源,如處理器、記憶體及硬碟空間,且各虛擬系統之間互不影響。

▲虛擬系統的用途很廣,最常用的還是Virtual Box,可讓電腦橫跨多種作業系統,且彼此之間互不干擾。

舉例來說,如果你的電腦是Windows作業系統,則可安裝Virtual Box,在上面建立新的作業系統。安裝過程就像安裝一台新的電腦,但不同的是,多個作業系統透過虛擬層彼此獨立,互不干擾;亦即你可以在同一部電腦上,開啟多個像Windows、Fedora及Ubuntu等作業系統,也不用擔心安裝失敗後會對原有的電腦或其他作業系統產生影響,運作起來與傳統認知的電腦沒有什麼不同。

▲Virtual Box可支援的系統相當多,Windows、Linux或是Mac OS都包括在內。

(後面還有:用虛擬層中介硬體資源)

用虛擬層中介硬體資源

傳統X86將指令的權限分為ring 0 ~ 3共4個層級,而控制硬體的指令就是存取權限最高的ring 0。但礙於ring 0通常只有kernel(核心)及driver(驅動)可以使用,故虛擬機器需透過其他方式才能使用硬體資源。

虛擬層(統稱為hypervisor)就是為了能夠呼叫ring 0層級的指令而產生的軟體,讓虛擬機器可以透過虛擬層使用硬體資源。而使用者開發的應用程式,使用到的指令權限只到ring 3,並不影響資源虛擬化的過程。又依據虛擬化管理方案的不同,大致上可分為全虛擬(full virtualization)及半虛擬(paravirtualization)。全虛擬的解決方案中又以KVM較為著名(http://www.linux-kvm.org/),而半虛擬比較有名的則是Xen(http://xen.org/)。

虛擬化有2種

所謂的全虛擬,即虛擬機器透過hypervisor,以binary translation(二進制碼轉譯)的技術來呼叫ring 0 層級的指令,再將需求送至硬體,並模擬出所有需要的硬體元件。其中包括處理器、記憶體、網路卡及硬碟等設備。而全虛擬的好處就是虛擬機器的獨立性很高,但binary translation技術會讓虛擬機器的運作效能受到限制。

▲全虛擬技術會透過binary translation導致效能降低。

半虛擬效能較佳

半虛擬則是為了提升虛擬機器的效能,其解決方案就是讓hypervisor不必透過binary translation,就能夠呼叫ring 0層級指令來使用硬體的資源。但如同前述,ring 0的指令通常只有kernel及driver能夠直接使用,因此半虛擬必需修改虛擬機器的及實體機器的核心,故硬體的相容性相對全虛擬來得差。

▲半虛擬則可透過hypervisor呼叫ring 0指令,效能表現較佳。

因為半虛擬是透過hypervisor直接呼叫ring 0的指令,相當於虛擬機器直接使用硬體元件,虛擬機器的硬體元件不全然是hypervisor模擬出來的,而稱此解決方案為半虛擬。

非開源系統限制多

若以半虛擬的Xen為例,虛擬機器透過修改過後的作業系統(又稱為DomU),來呼叫hypervisor存取硬體裝置,而hypervisor是透過Xen修改過的主作業系統Dorm直接驅動硬體裝置。如此一來,雖然可以提升效能,但也因為需要修改作業系統的核心,對於未開放原始碼的作業系統來說,會造成很大的限制。

(後面還有:雲端服務在哪裡?)

雲端服務在哪裡?

目前較有名的雲端服務供應商莫過於亞馬遜(Amazon)的EC2、微軟(Microsoft)的Azure以及VMware。而亞馬遜的AWS(Amazon Web Service),是一種透過網頁讓使用者租用虛擬機器的公有雲。所謂的公有雲即使用者可以透過承租的方式來使用虛擬機器,而虛擬機器的計費方式多以租用資源規格的量來計價,如CPU核心數、記憶體大小等。

▲進入亞馬遜官網(http://aws.amazon.com)就能看到EC2相關介紹,上網就能承租公有雲。

相對公有雲,另一種雲為私有雲,即公司為了內部營運及其他考量而自行建置的雲端環境,並不開放對外申請及租借虛擬機器等服務,但企業可使用內部的雲端作業系統建置對外的服務系統,如本文所述的購票系統便是其應用之一。

▲虛擬機器租用費用如圖所示,依照效能高低價位也有差異。

目前能媲美亞馬遜的就是VMware,它和亞馬遜最大的不同是公司發展方向。VMware以軟體開發為主,並致力於虛擬化,公司成立於1998年,和亞馬遜相差無幾。

▲免費版本VMware Player下載流程很簡單,安裝後可讓玩家管理私有雲。

而VMware 的產品線很多,這邊介紹一套讀者可以免費下載的軟體:VMware Player,它是一套免費的「虛擬機器(virtual machine)」軟體,是VMware Workstation(付費版本)的精簡版。
由於是免付費版本,所以提供的服務並沒有EC2這麼完整。且該軟體的應用偏向私有雲,亦即所有的資源管理及虛擬機器服務,將會跑在玩家的主機端,自行管理一朵私有雲。

▲VMware Player目前最新版本為4.0.2,於官網就能下載。

國內的雲端服務CAKE

除了國外的雲端服務外,從經濟部科技專案得知,其實台灣也有自行研發的雲端管理系統,如資策會開發的雲端作業管理系統「CAKE」(Cloud Appliance Kernel Environment)。CAKE是實現基礎設施服務(IasS: Infrastructure as a Service)的雲端作業管理系統,負責實體機器的資源分配、管理及虛擬機器的維護運作。

吃CAKE很簡單

CAKE將用戶分成管理者及使用者,這2種身份的用戶只要透過web介面,輸入帳號及密碼,即可進入該系統進行相關的操作。若無帳號密碼,可透過網頁申請後直接至信箱點選認證連結即可完成申請。鑒於市面上管理系統操作介面繁雜,難以上手,CAKE操作介面很簡單,讓使用者不必上課也能夠輕鬆駕馭。但CAKE目前僅為私有雲的解決方案,市面上無公有雲可以體驗,但該服務已導入學校及廠商,未來可望於公有雲上提供服務。

▲這是CAKE的安裝過程畫面,把實體儲存裝置加入後,就可以向本機硬碟一樣來安裝作業系統,完成後就是透或他來中介、調配眾多硬體資源與虛擬系統。

▲操作介面

▲監控訊息

自動擴增解除負載瓶頸

在我們了解什麼是虛擬化及相關管理實體資源的雲端作業系統後,接著探討如何透過虛擬化的方式,解決前述的購票問題。或是網站架設業者常面臨硬體資源,隨使用者操作大幅度變動,使得系統無法承載或過度閒置的狀況。
雲端服務供應商提供的解決方案為,虛擬機器自動擴增機制(auto-scaling mechanism)」。當現有伺服器的負載過重,它會自動新增伺服器數,來分擔工作量。反之亦然,當伺服器大部分都在閒置時,則將工作集中,減少伺服器,以避免資源浪費,降低營運成本。

這類的服務在亞馬遜的EC2、微軟的Azure以及其它第三方以VMware發展的解決方案都可以見到。若讀者想試用該服務,建議至亞馬遜提供的公有雲EC2申請。該服務適用的範圍很廣,像是建置一個購物網站、交友網站等需要大量連線或運算等應用都可以搭配。

看到這,你一定會想說,難到非得透過雲端才能達到這樣的效果嗎?不能自行建立類似的環境來節省成本嗎?接著我們來研究看看,傳統上以實體機器為伺服器的架構,和改用虛擬化之後的架構差異,最後再比較資源擴充的實行辦法(虛擬機器自動擴充)及難易度。

▲實體伺服器架構分為3層,分別是負載平衡器(load balancer or DNS server)、實體伺服器(physical server)及其他如資料中心(data center)等元件,各層之間皆以網路的型態連結。

▲雲端虛擬化是透過實體機器虛擬化(Physical-to-Virtual,P2V)的技術,將實體伺服器轉為虛擬機器,使得多台虛擬機器能在單一台實體伺服器上運作。而架構方面變化不大,仍分為3層,分別是負載平衡器、中間實體伺服器則由虛擬機器取代,最後一層為資料中心,其資料仍放置於存儲設備中。

(後面還有:模擬運作大考驗)

模擬運作大考驗

假設以訂購阿妹演唱會門票為例(以下舉例非大市集官網實際運作方式),使用者輸入購票網站的網址後,會連線至服務供應商的網頁。接著會先經過負載分流器,將流量導至合適的實體機器上,實體機器再透過網路的方式至存放資料的儲存設備讀取資料。

當儲存設備收到來自實體機器的要求,並確實將所需資料回傳至實體伺服器後,實體伺服器再對取回的資料做適當的運算處理,最後送回使用者端,使用者就可以看到該購票系統的網頁及目前的訂位情形。

▲點選活動選擇的流程

▲點選票區座位的流程

即使是上網買張演唱會門票這麼簡單的動作,背後還是需要經過層層關卡。受限於第二層負責運算的實體伺服器數量,當購票流量過大就可能造成效能低落、無法運算等問題,相信經常去端點購票的玩家都能了解這種情況。

前述系統無法承載過大的流量,即是第二層負責運算處理的實體伺服器數量不足造成。因此若能在熱門活動期間,擴充第二層伺服器以分擔工作量,而在平時需求量低的時候用少量的伺服器,將會是企業比較能接受的解決方案。以下我們就以三個步驟來比對實體和虛擬方案的不同。

步驟一:建制伺服器

在第一步驟的機器採購,我們將傳統做法、公有雲、私有雲3種方案的做法一併列出來,至於後續步驟由於公有雲、私有雲的優缺點大致相同,就合併為一項說明。

未採用雲端管理系統:

首先需要先添購伺服器,並架設伺服器(包含供電、冷卻等系統)。在營運前需作完整的設備評估,若低估營運績效,則需重復進行此步驟,再添購新的伺服器。若高估營運績效而添購過多的伺服器,則需承擔龐大的維護成本,如前文提及的企業為了負擔活動期間的服務,則需多負擔100萬至400萬。

採用公有雲的解決模式:

添購伺服器的營運負擔已由雲端服務供應商解決,而廠商只需評估租用金額即可。若採用雲端服務供應商的租借服務,即使低估營運績效,使虛擬機器無法負載,也可以立即申請新的虛擬機器並架上服務即可營運。若高估營運績效而申請過多的虛擬機器,也可立即停用適當數量的虛擬機器,以減少營運成本。但現有的服務供應商所訂定的租用價格並不便宜,此方案較適合個人架設服務網站,或服務處於試營運的階段。

▲擴充彈性高、建構成本低,是虛擬化擴充最大的好處,且不少營運成本都已經由雲端服務商吸收,只需要付出租金就能使用。

自行建立私有雲:

中小企業只需採購包含管理雲端的作業系統即可,如:VMware的vSphere或資策會的CAKE等。下表可看出硬體的節省成本高達四百萬之多,維運成本更只有未虛擬化前的四分之一。

▲資料來源:中華電信數據通信分公司。

步驟二:負載設定

伺服器搞定後,接著建構服務網站,進行負載平衡設定。

未採用雲端管理系統:

以購票系統為例,當採購了新的實體伺服器,並千辛萬苦的組裝、拉線及確認實體機器是否能運行後,第二個面臨的問題則是將舊有的網頁服務等設定裝至新的實體機器,雖然實體機器的解決方案可透過Ghost的方式達成,但實體機器在安裝完所需的套件及服務模組後,仍需將該台實體機器的相關資訊以手動的方式加至負載平衡器中,換句話說,裝機人員還得懂如何使用負載分流器。

採用雲端管理系統:

而雲端服務只需要將相同功能的虛擬機器設定成群組的樣版機器後,即可快速複製多份功能相同的虛擬機器。並自動將複製好的虛擬機器加入負載平衡器中,達到分擔負載的效果。

以資策會的自動增減虛擬機器為例,使用者只需在申請自動增減虛擬叢集時,點選現有的虛擬機器(若以購票網站為例,即為提供服務的伺服器),並設定服務時最大、最小的虛擬機器數量,亦即選擇分擔工作的伺服器數量,申請通過後所有的相關設定一步到位,使用者無需擔心設定問題。

▲同樣是租借虛擬機器,設定auto-scaling(自動增減)可讓尖離峰資源分配更有效率,當然就能夠節省更多成本。

步驟三:設定監控機制

上述步驟都完成後,最後需要設定監控條件,當負載過重時能夠自動啟用新的機器,或負載較低時能夠自動停用使用中的機器。

未採用雲端管理系統:

若自行建置實體環境,最直接的辦法就是把所有實體主機開機,但是這種方式耗費的資源過大,若要達到有效的資源管理,必需自行開發管理實體主機的軟體,亦即需要透過此中介軟體收集各實體主機的負載情形,並依照實體主機的狀態做開關機的動作。

採用雲端管理系統:

而雲端服務供應商通常會提供他們研發的管理軟體幫你配置資源,使用者只需套用其開發好的模組,即可進行監控條件的設定。當監控條件達到負載過高或過低的警示時,便自動增減虛擬機器,並重設負載分流器設定。過程中皆自動運行,使用者無需擔心負載過重無法負荷,當然這是在虛擬機器數量及資源能夠負荷的前提下才能達成。

虛擬與實體優劣比較
  實體方案 虛擬方案
伺服器採購 風險高 風險低
服務網站建構 複雜性高 複雜性低
負載平衡設定 手動設定 自動設定
監控伺服器負載 自行開發 現成套件
自動擴增伺服器 額外開發 直接設定

雲端虛擬化彈性高

顯而易見地,未採取虛擬化且欲達成虛擬化所帶來的好處,所耗費的時間、人力及資金將難以評估,且開發完後至採用此解決方案仍需做嚴格的壓力測試,日後還得面臨維修等工作。而採用已開發完善的雲端管理系統,已提供優良的資源利用管理及監控模組,使用者只需使用其模組即可達成內部的需求,不需對實體機器做維修,且人力可以集中於虛擬機器的管理及服務開發即可。

對中小企業來說,透過雲端的方式來試探市場對「新服務」的評價是不錯的選擇,而自動增減虛擬機器的雲端服務,無疑是新產品過度期的最佳因應策略。當人氣高系統負載重,則自動擴充虛擬機器以分擔工作。當人氣低迷時,則減少虛擬機器以減少支出。

變動量大就靠雲端擴充

若市場對新服務的評價不錯,即可依成本考慮自行採購實體機器、建置私有雲端環境或投入更多的經費於公有雲。相反的,當新服務的評價不如預期熱烈,並達到停損點設定時,即可立即終止該服務,不用承擔實體機器買回而無用的窘境,減少內部政策及計畫統籌失敗使公司倒閉的風險。

另外,如前述的購票網站等系統,其系統負擔變動量較大,且於特定時間點負載會大量激增的服務,也適合採用「虛擬機器自動增減」的服務,透過雲的加值來穩定服務品質。由此可知,雲端擴充不但在硬體資源的管理表現出色,應用更是廣泛,若利用得當,雲端技術所創造價值將會非常可觀。

文章來源:電腦王91期/作者:劉坤星

延伸閱讀:

Google Drive 雲端儲存即將出現,進攻 Dropbox 市場

25個好用雲端服務:雲端硬碟、記事、音樂、轉檔通通有

檔案同步到雲端、專業公司幫你管,Dropbox 以外的好選擇

原文網址:https://t17.techbang.com/topics/12433-blast-from-the-booking-site-is-like-talk-about-the-benefits-of-the-cloud-to-expand-service-and-practices?page=1