網上售票:甚麼技術才算令網站「運作暢順」?

A+A-
去年 5 月,MIRROR 舉行成軍兩周年演唱會。 圖片來源:VCG/VCG via Getty Images

MIRROR 紅館演唱會門票前日公開發售,但售票系統嚴重擠塞,37,700 張門票花近 12 小時方售罄,問題在於城市電腦售票網仍未改用雲端運算。美國大型售票系統 SeatGeek 的工程部幕後功臣,早前在倫敦軟件開發會議 QCon London 分享雲端架構的優勢,不但可按照需求擴增雲端運算容量,他們的售票系統還加設「虛擬等候室」的排隊機制,避免超載以加快系統運作。

SeatGeek 售票平台經常要應付突如其來的龐大數據流量,工程總監 Vitor Pellegrino 接受軟件開發新聞網 InfoQ 的 Podcast 訪問時解釋,以英超球會利物浦的賽事為例,假設門票在星期三下午 2 時開售,成千上萬球迷便會同時登入系統購票。「對我們來說,這是常見的情況,所以我們系統必須能夠應付這些需求。」

然而,系統能夠處理大流量數據是不足夠的,在企業營運的角度,理想的系統必須有彈性,24 小時保持高運算容量並不符合經濟原則。這時雲端運算就能夠發揮優勢,它不但可維持固定流量,確保日常運作穩定,每當遇到大型活動門票開售,客戶需求突然急增時,還可利用 Auto Scaling 技術自動擴增雲端運算容量,以加強系統處理能力,而不用自行購買伺服器應付。

但高級軟件工程師 Anderson Parra 坦言,有時系統要在一秒間面對極龐大數據,即使有 Auto Scaling 也無濟於事,因此必須有排隊機制疏導,也就是「虛擬等候室」(Virtual Waiting Room)的源起,簡稱為 Vroom。

在開發初期,工程師必須手動建立保護區,如今所有程序都已經自動化,每當有人創辦新活動、設定門票數量和開售日期,系統已經懂得自動建立「虛擬等候室」,意味著購票程序受到排隊機制保護,不再需要動用工程師的腦力勞動。目前系統營運仍然有手動部分,譬如可在確認系統負荷後,增加同時購票的人數上限,「比如每分鐘 300 人,現在加至 500 至 1,000 人」。類似工序未來仍有減省人手、邁向全自動化的空間。

售票系統特別要著重公平原則,每人登入系統時都獲發時間戳記,以便按照登入先後排序,務求先到先得,與現實世界排隊購票相似。當然,不論現實還是虛擬世界,排隊都不是良好體驗,因此系統會定期推行促銷活動,以優惠吸引觀眾提早購票,避免所有人同時湧入系統,以致排隊人龍增長。

Pellegrino 提醒,系統還會阻止欺詐活動和自動搶票程式,「虛擬等候室」的排隊機制也有助識別真實用戶,並踢走搶票機器人,從而贏取客戶信任,但其實過程也有漏洞,而且衍生不同問題。譬如有客戶利用自動化工具 Selenium 購票,是否購買 1 張門票都算違規,抑或購買 10 張門票才算數?這是公司必須與客戶合作取得的共識。

當然,購買過程中還有無數複雜狀況,譬如多名客戶同時爭奪同一座位,其他座位卻乏人問津,系統要如何決定優先次序?是以預留座位的時間,還是以信用卡交易的時間決定?這是系統必須處理的問題,也說明了系統為何不能容許所有人同時購票。