Flavorus 透過 Microsoft Azure 建置售票系統,順利在 10 秒之內成功售出 150,000 張門票

感謝北科大劉建昌同學翻譯微軟公司 Azure 案例研究 Flavorus - Ticketing Company Scales to Sell 150,000 Tickets in 10 Seconds by Moving to Cloud Computing Solution https://www.microsoft.com/casestudies/Windows-Azure/Flavorus/Ticketing-Company-Scales-to-Sell-150-000-Tickets-in-10-Seconds-by-Moving-to-Cloud-Computing-Solution/4000011072,並將所提及之 Azure 相關服務修正為目前之正式名稱

Flavorus

透過雲端解決方案來建置售票系統,讓系統順利在 10 秒之內成功售出 150,000 張門票。

Flavorus 公司為美國一間知名的票務公司,透過自己的網站來販售演唱會、展覽、戲劇等活動的門票。

在 2011 年 1 月,Flavorus 公司負責了一個大型音樂祭的購票業務,為了要滿足購票可能湧入的大量流量,因此將票務系統從本地端自建機房移轉到雲端上。該公司建立了自己的 Jetstream 並且與 Microsoft Azure 結合,通過分區化 (sharding) 的技術,將售票流量平均分到不同的資料庫伺服器上。這個雲端解決方法經過了幾個月的開發與測試,在測試的過程中,Flavorus 成功地利用自己的Jetstream 結合 550 個 Microsoft Azure SQL Database,在 10 秒內將 15 萬張門票販售一空。而當這個解決方案在 2011 年 4 月 23 日正式上線的時候,其效能與運作都相當順利。

自此之後,這項雲端解決方案即被 Flavorus 公司用以處理所有可能會產生大流量的購票活動,也因為這項雲端解決方案具備高擴充性、資料高可靠度、快速的部屬等優點,讓 Flavorus 公司具備更強大的市場競爭力。

情況 :

從  1999年開始,Flavorus 其主要業務就是販售演唱會、展覽、戲劇等門票,並且收取服務費做為公司的主要營收。而 Flavorus 公司也常常需要負責全美最大的音樂祭的售票服務。其網站提供了簡單的操作讓售票客戶可以快速的建立售票頁面,並且結合靈活的票據付款方式以及即時的管理工具,讓客戶可以即時觀看預期的銷售量以及成本管理。

Flavorus 提供購票者多種不同的售票服務,也支援了傳統的紙本門票、列印門票甚至是行動門票等多種票種。Flavorus 亦推出了無紙化售票,透過與信用卡業者合作,可以在會場入口處透過掃描的方式加速入場。Flavorus 也將客戶的市場行銷工具與售票網站作連接,在 Flavorus 網站內也提供售票者置入自己的廣告、影片、社群網路等市場工具。

對於購票者而言,可用性是最重要的事情 — Flavorus CTO Reichardt 表示 ,” 我們希望購票者在進入大型活動會場時,能夠快速地進入,而不會受到驗證門票的時間拖累 "

販售門票這件事情在網路上是相當獨特的一項服務,因為它的需求隨著時間有時高有時低,也因此在過去的幾年之中,許多票務公司都面臨到流量巨變的重大問題。例如該票務網站在 2010 年的國際動漫展時,無法承受巨大的突發流量導致網站崩潰。而在 2011年1月,販售美國內華達州火人季 ( Burning Man organization ) 的門票時,也發生了其票務網站無法處理過多的購票程序。Reichardt 說明造成上述狀況最主要的原因就在於;大型售票活動有可能在同一時間有高達 30 萬人進入同一個票務網站來爭奪有限張數的票卷,而這些事件往往會在幾秒鐘之內就會發生,而這些購票的尖峰瞬間流量甚至有可能高過 Facebook 或 Google 所經歷過的。

Flavorus 自行擁有一座位於美國洛杉磯的資料中心,其規模足以應付一般中等規模的票務流量。 ” 過去雖然我們公司的資料中心規模不算是最大的,但是我們擁有先進的防火牆 (firewall) 技術以及附載平衡 (load balancing) 能力 ,也因此我們足夠處理相當大的工作流量,例如我們能夠為 Hollywood Palladium 舉辦的活動,在兩個小時內售出 2,000 張門票,相當於一分鐘可以處理 20 份訂票訂單”— Reichardt

其實早在 2011 年 1 月初,Flavorus 就為了每年六月在 Las Vegas 舉辦的全美音樂祭來尋求完整的售票解決方案。該音樂季在舉辦期間,每天都吸引近 15 萬人參與,也因此 Flavorus 在評估自己資料中心的硬體設備之後,發現該公司是無法承受前置售票的巨大流量。除此之外,Flavorus 在販售全美音樂祭門票的同時,也需要為其他同一時間舉辦的活動提供售票服務。在經過所有流量加總以及資料庫存取連線的數量限制評估之後,Flavorus 決定透過加強其內部資料中心的方式來處理這些巨大流量。但是為了這些突發的巨大流量來建置更大的資料庫、購買額外的網站伺服器以及使用更高的網路頻寬,以商業角度來看,是不合常理的。既違反成本原則而且也浪費時間,但是 Flavorus 公司又必須滿足他們客戶所需要的這些需求,也因此 Flavorus 開始朝雲端服務的方向來找尋解決方案。

Flavorus 開始審慎的評估將售票系統與雲端託管服務結合,藉此發展出一套易於維護且擴展快速的解決方案。而且這項解決方案還必須相當穩定,並且保證所有的雲端託管服務都能夠滿足售票當天的流量需求。此外,Flavorus 與所有票務公司都最重視的一樣售票功能,那就是售票系統需要確保所有在網站上售出的票卷都有寫入資料庫內部,並且也對應到每一張實體票卷。這代表著 Flavorus 還需要一個高存取速率的關聯性資料庫,這個資料庫結構必須相當完美,並且能夠滿足客戶在短期間內所有售票紀錄的寫入與輸出。

解決方案 :

Flavorus 最初的考慮是與雲端服務提供者合作,將網站託管至雲端,然而 Flavorus 做了一些基本的測試之後發現,該解決方案並無法完全的處理所有客戶的流量。"雲端服務提供者可以提供可擴充性的硬體設備,像是一台伺服器,並且在雲端運行虛擬機器,但是這僅是將網站運行在雲端上,整個票務系統還是沒有擴充到足以應付我們即將面臨的巨大流量”— Reichardt

也因此後來 Flavorus 選擇了將整個票務系統託管至 Microsoft Azure 平台上。開發人員能夠利用網路即時的調整票務網站在微軟資料中心的運作規模,並且能夠快速的管理。此外 Microsoft Azure 整合了微軟開發工具,其服務、管理系統等皆與 Flavorus 的需求相近。該公司通過使用 Microsoft .NET Framework 來建構解決方案,並且能夠完美的建置到 Microsoft Azure 平台上。

資料分區化 (Sharding the Data) :

在 2011 年 2 月中旬,Flavorus 開始將產品與 Microsoft Azure 平台整合。起初,Flavorus 公司撰寫了一套票務系統,其包含了使用Microsoft SQL Server 2008 做為開發環境,並且利用 ASP.NET 來建構動態網站、Web 應用程式,並且在評估 Microsoft Azure 上的所有儲存服務之後,發現 Microsoft Azure SQL Database 不僅能夠快速地建構,最重要的是其性能也完全符合票務系統的需求。Flavorus 使用 .NET Framework 來處理票務系統,也就是將整個 JetStream 在 Microsoft Azure 平台上開發、運行、託管。而JetStream 的運作程序也相當簡單,當動態網頁開始存取資料庫和處理客戶訂購的票據時,JetStream 負責收集客戶的資料以及購買的票據。

上述的解決方案,於 2011/2/17 測試到 2011/2/20,並且在 2/21 至 2/22 開始進行大流量的測試。第一次大流量測試的結果是失敗的,因為單一一個 Azure SQL Database 沒有辦法提供足夠的計算能力來處理大量的運算需求和流量,每個 Azure SQL Database 會在工作負載超過一定量時,就會限制連線數目,也因此對 Flavorus 的票務系統來說,它需要更多的計算能力和存取連線數目。

有了第一次的失敗經驗,Flavorus 決定將Azure SQL Database 進行分區化,將大量資料進行水平切割 ( horizontal partitioning ),並且平均分散到不同的資料庫做處理,利用一整個 Azure SQL Database 叢集來提供更強大的性能服務。有了這項技術,Flavorus 能夠將大量的流量做平均分配,再利用多個 Azure SQL Database 來做處理。

該公司在兩周內將原本的單資料庫解決方案提升到一個擁有分區化資料庫叢集的解決方案。通過這樣的提升,Flavorus 得到了更高的資料庫可用性 (一整個資料庫叢集 )。”透過使用 Azure SQL Database 搭配分區化架構,我們可以讓一個購票網站在同一時間服務上萬個客戶,而不用擔心被流量拖垮,同時也不用害怕單一資料庫發生故障,因為我們有一整個資料庫叢集來做服務。”— Reichardt

Flavorus 意識到使用分區化的方式來建構票務系統是相當理想的,只要擁有一個完整的分配負載機制,就能夠讓票務訂單平均分配到每一個伺服器上。

從 2011/2/22 至 2/24 期間,Flavorus 公司開始測試使用分區化解決方案來處理大量的流量。票務系統在這次的測試中能夠完美的處理大量流量,但是又衍生出另外一個問題,那就是面臨 Microsoft Azure 上的 Web 伺服器 IIS 7.5 的流量限制。為了解除這個限制,Flavorus 不得不重寫資料繞徑的邏輯 ( data-dependent routing logic )。透過 Microsoft Azure 的管理服務,Flavorus 能夠取得伺服器的 log (存取紀錄),藉此來進行除錯,找出並解決造成連線困難或是資料庫崩潰的原因。

修改了資料繞徑的邏輯之後,自 2011/3/2 至 3/24日,Flavorus 公司使用新的邏輯來測試票務系統,並且逐漸增加分區化切割的數量。而在 3/25日當天,Flavorus 成功的利用 550 個 Azure SQL Database,在10秒內售出了15萬張票。

 

image

圖 1. Flavorus 公司為了處理在很短的時間內產生的高流量門票銷售承載,使用了資料分區 ( shard )的方式,將售票資料分散至多個 Azure SQL Database ,綠色是資料庫數量,橘色為 Azure Cloud Services Web Role 虛擬機器的 Instance 數量,藍色線是花費多少時間完成銷售作業,從圖表中可以得知在 550 個 Azure SQL Database 搭配 ˙750 個 Web Role 虛擬機器的 Instance 時,10 秒鐘即可處理完銷售作業。

當我們達到這個速度的同時,我們也體認到 Flavorus 的票務系統能夠滿足美國任何大型售票活動。我們準備好了!!” 。— Reichardt

而在音樂季門票開賣的前夕,Flavorus 得知了音樂祭主辦單位要將門票分成八種價格出售,為了因應這種要求,Flavorus 將這八種不同票價的售票資料分別送到八組不同的伺服器上。例如 : VIP 門票使用了 20 個資料庫,而一般門票則使用了 400 個資料庫 。”分區化的Azure SQL Database不僅提供我們強大的資料庫效能之外,也讓我們可以在商業模式上更具有靈活性。” — Reichardt

在雲端上啟動 Jetstream :

要佈署 Jetstream 到 Microsoft Azure 上其實相當簡單,開發者只需要在 Microsoft Visual Studio 2010 Professional 版本上下達命令碼,而應用程式便會開始將 Jetstream 佈署到雲端上,之後再指派符合票務流量所需要的資料庫和 Web 伺服器數量即可。

門票在 2011/4/23日開始正式銷售,在這期間,Jetstream 的運作可說是完美無缺,在開賣日的第一天,為了支撐住流量達到最高峰的時段,Flavorus 公司使用了 Microsoft Azure 平台建立了 750 個 Web role instance 以及 550 個 Azure SQL Database。

經過這次大流量的考驗後,Flavorus公司恢復了在本地端運行自己的票務系統。 將 Jetstream 佈署到雲端的這項解決方案相當適用於處理大型活動所產生的流量,使用這項解決方案,我們可以將這些單一的大型業務與一般的業務做區隔,在這項大型業務結束之後,我能夠馬上將資料轉移並且關閉 Jetstream 而這整個過程都不會影響其他服務的運作。” — Reichardt

Flavorus公司的獲益 :

透過使用 Azure SQL Database 擴展 Jetstream 來處理大型活動所產生的流量,Flavorus 公司在提升服務效能的同時,也降低了建置與維護實體設備的成本。該公司利用了Microsoft Azure平台的技術,讓開發變得更加的迅速且穩定,並且滿足客戶的所有需求。

透過與 Microsoft Azure 做結合,它的服務能夠依照不同的業務需求作擴充,就像是我們使用分區化的方式來紓解單一個Azure SQL Database 的流量。使用這項雲端解決方案,Flavorus 能夠處理美國所有大量售票的活動,Azure 真的是一個相當優秀的雲端平台。” — Reichardt

成本上的獲益 :

Flavorus 使用了 Microsoft Azure 雲端解決方案,讓該公司不需要為了處理特定大型流量事件,而去購買多餘的實體建設以及頻寬。更不用說還省下了大筆後續維護和管理的成本。根據 Flavorus 估計,光是在硬體、軟體、頻寬這三項實體設備,使用雲端解決方案就為公司省下了超過 10 萬美元的成本。

當把Jetstream部屬到Microsoft Azure 平台上之後,Flavorus 公司只需要在這段期間付出成本開銷,一旦大型事件結束之後,就不需要再被收取任何費用。

在 Microsoft Azure 上運行 Jetstream 的成本是相當小的,但是他卻能夠為我們處理大量的票務流量,最讓人興奮的是,當我們不需要使用Jetstream的時候,只要將它關閉就不需要再被收取任何的費用。”— Reichardt

增加可擴充性 :

由於分區化的 Azure SQL Database 發揮強大的功效,Flavorus 公司不再需要擔心一旦流量太大而導致資料庫或是伺服器當機的問題。 分區化的 Azure SQL Database 讓我們的服務具有相當高的擴充性,你甚至可以發現,他這項解決方案幾乎可以無限地擴展,我們不需要擔心資料庫或伺服器不足的問題。” — Reichardt

符合市場需求的快速部屬 :

當 Flavorus 在 2011 年1月開始研擬大型售票方案時,本地端機房擴充與雲端解決方案兩項同時進行,本地端機房擴充的部分,Flavorus 向網路供應商詢問增加頻寬的處理方式,但是直到 2011 年 6 月,該公司還在等待他的頻寬增加。如果不得不使用內部擴展的方式來解決大型售票方案的話,要完成這項任務可能需要更多的時間來完成。

而在同一時間,Flavorus也持續在進行雲端解決方案的開發與測試,僅僅只花了幾個月,就將其票務系統佈署到雲端上。"從開始的第一天到結束,將票務系統建置到雲端的速度真的是相當驚人,工程師花了幾天寫了應用程式,而在幾個月之內就完成測試和bug修正。而我們在客戶所指定的時間內就完成了10秒內賣出15萬張票的功能,這讓我們相當振奮!” — Reichardt

增加企業競爭力 :

由於購票者都是相當敏感的,也因此票務公司的客戶都相當重視售票的可靠度。透過使用這項雲端解決方案,Flavorus 公司獲得了更強大的市場競爭力,因為他的票務系統能夠滿足市場上任何規模的活動。該公司也向客戶證明了其票務系統的可靠度和高擴展性。 使用 Microsoft Azure 可說是改變我們以往的服務型態,這意味著我們的業務可以開始去尋找更大的客戶了!”— Reichardt

Microsoft Azure 平台

Microsoft Azure 提供開發人員建構相當完善的雲端解決方案供客戶使用,其包含的關鍵組件有 :

Microsoft Azure

Microsoft Azure提供了不管是PaaS或是SaaS層級的雲端託管服務。儲存、網路、網站、虛擬機器…….等多項託管服務,使用者能夠依據自行業務的需求來做選擇。

Microsoft Azure SQL Database

Microsoft Azure SQL Database 是一個基於 Microsoft SQL Server 所發展的自主管理關聯式雲端資料庫。它提供了高可用性、高容錯、擴充快速的功能,讓企業能夠依照使用上的需求來做各種調整。

更多資訊 :

https://azure.microsoft.com/