爆量搶票有解嗎? 線上購票系統的設計考量 - 微軟雲端平台 Azure 可以幫上哪些忙?

線上訂票系統,如何在上線開放民眾訂購前,先做好準備呢? 例如一些演唱會的購票,或是連續假期預訂交通工具票證,因瞬間網友搶票的大流量,導致線上訂票系統無法提供服務造成民眾抱怨連連。當然線上購票系統的開發會因商務規則及流程的設計而有不同的複雜度,以採用不同的 AP 開發技術及架構設計,但雲端服務仍可在一些關鍵的問題上幫上大忙,本文簡單說明微軟雲端平台 Azure 及開發工具 Visual Studio Ultimate/MSDN 如何幫助你的電子商務及線上購票系統的開發及維運,讓你安心上線!

[快速連結] 雲端壓力測試怎麼做 | Azure 的 Auto Scale 機制應付瞬間流量 | 大型購票系統的案例 - 使用 .NET + Azure | 與我們連絡

 

 電子商務及購票網站因流量大且活動期間常有瞬間高峰流量產生,採用雲端的好處將更明顯

線上購票系統在程式開發及設計上,會與你所設定的商務規則及購票流程習習相關,進而影響網友的使用經驗 

 確保你的購票網站更快更好地服務網友 - Azure 上高可靠度的基礎設施及服務、Auto Scale 自動延展機制及 Cloud Load Test 雲端壓力測試

 

雲端壓力測試如何執行 - 確保上線前系統的穩定及可用性

若是一個大型系統、電子商務或是對外的公眾服務,常會面臨大量的同時線上使用者 (concurrent users) ,如何確保你的系統的可用性、可靠度及效能呢?大部份的開發者及系統維運團隊都知道可在上線前執行負載壓力測試 (Stress Test / Load Test),確保應用程式在大量壓力下的可用性,並盡早找出系統的 bottle-neck 並調整,例如調整系統架構、程式寫法、利用非同步 (async)、cache、queue 機制、分散機器及運用雲服務、或scale-up/scale-out。

要多少 concurrent users? 馬上變給你!Azure 上的 Visual Studio Online 雲端壓力測試服務 (Cloud Load Test)

但以往進行壓力測試,需準備產生壓力的機器當成是 agent,所需的機器數量通常是數10台以上,才能模擬大量的 (上萬/或數10 萬) 同時線上使用者 (concurrent users),即使在企業內部你準備好了這些機器及環境,一執行壓測時,馬上企業內的網路頻寬就被吃掉了,無法模擬出真正上線的運作。現在可以運用雲平台 Visual Studio Online 所提供 彈性的雲端壓力測試 (Cloud Load Test), 可以自動透過雲,有彈性且快速地產生這些壓力,馬上幫你省下準備機器及成本及安裝/設定相關軟體的時間。Visual Studio 使用者一樣使用相同的 IDE (需搭配 Visual Studio Ultimate 版本) 以管理、設定、執行負載壓力測試,並產生測試後的報表,快速找出系統的瓶頸點。

再加上從雲端發動壓力,才能用較真實的狀況模擬出真正網站上線對外服務,網友的購票行為,如此得到的壓力測試數據的可參考性才高,而不是於自家的Lab或內部測試環境中產生壓力模擬。

 模擬真實購票網站瞬間爆量 - 在 Visual Studio Ultimate 中設定負載壓力測試的同時上線人數 (Concurrent Users),或是逐步加壓,馬上從雲端產生大量壓力。

 模擬網友各種連線頻寬 - 如此才能測試出使用者真實操作網站的回應時間及使用經驗

模擬網友使用不同瀏覽器版本,如此壓力測試才有真實性

雲端壓力測試服務現在已正式發佈供各位使用,每個月有 20,000 virtual user minutes (虛擬使用者/分鐘數) 的免費額度,例如: 免費額度可模擬 2,000 線上使用者共10 分鐘 (2,000 x 10 = 20,000),因 Visual Studio Online 是 Microsoft Azure 其中一個服務,若需要更多,也可透過 Azure 的 billing 機制線上購買,如何購買可參考 [為帳戶取得更多負載測試容量]

想了解更多 Cloud Load Test 簡介,或馬上看 Demo! - [5分鐘影片看 Demo] 利用雲平台執行負載壓力測試 (Cloud Load Testing)

 

延展網站所需的資源 - Azure 上的 Scale 機制 (自動或手動)

大多數 AP 開發人員在開發測試的階段,會先將 Azure 上網站設成使用免費的價格方案,在一定的使用額度下來測試網站是否能正常運作,而當正式營運後再根據實際的狀況來調整運算資源、需要的虛擬機器數量等等。而調整網站所需要的資源是任何時間都可以做的,只要到 Azure 管理後台,隨時可以切換價格方案,或是虛擬機器的使用數量。


網站在 Azure 網站服務上運行後,隨時可以到後台調整需要用到多少運算資源

隨時可以根據需要調整價格方案——免費的方案有限制的流量,而且也只能使用一個 web 實體(instance);共享方案可以調整要用幾個實體運作網站;基本及標準的價格方案除了是使用保留的虛擬機器、可以調整實體的數量之外,還可以調整虛擬機器的大小。


Azure 的 VM 虛擬主機管理介面 - 雲端平台的特性就是能夠彈性地調整網站所需要的運算資源

自動延展 - Auto Scale

雖然網站的資源可以隨時調整很方便,但你也許會問:「我又沒辦法時時刻刻守在管理後台前,看到需求增長時才去調整資源,萬一在我睡覺的時候網站爆紅,誰能幫我調整運算資源?」

還好 Azure 網站服務也提供了自動延展(Auto Scale)的機制,你可以根據排程,或是設定一些數值(像是 CPU 運算量)的臨界點(threshold),當數值超過臨界點時就觸發自動延展的機制,如果低於臨界點就再調整下來,一切自動化處理。


設定好自動延展的機制後,你就不必擔心網站突然爆紅而撐不住了

當然這樣的機制不會無限制地往上延展,系統還是保留了彈性讓你可以設定自動延展機制可以調整的上限及下限,以確保一切的操作都符合你的預算,彈性及自動化,雲端運算的好處及價值就在此。


可以設定排程延展,或是根據 CPU 用量來調整

更多參考資料

  1. 如何調整 Azure 上的網站
  2. 線上課程學習如何設計一個大型又高可用性的網站 - Microsoft Azure 大型網站與服務架構規劃實務

[大型購票系統的案例] - Flavorus 透過 Microsoft Azure 建置售票系統,順利在 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 公司具備更強大的市場競爭力。

參考完整案例以了解架構設計及使用之技術。

[與我們連絡]

若您現在正在設計一個電子商務或購票系統,想了解更多微軟 Azure、開發工具平台及技術及應用情境!

很樂意為您服務! 請洽:台灣微軟開發工具服務窗口 - MSDNTW@microsoft.com / 02-3725-3888 #4922

若想了解 MSDN 權益好處、啟用及授權,請參考 - https://aka.ms/tw-msdn