為什么Bet365對云計算說不?
當很多網站轉向敏捷開發模式、使用云服務、采用Java和JavaScript語言時,Bet365(全球知名博彩服務商)仍堅持自己的IT路線。
構建Bet365體育博彩APP的是一種由愛立信發布的開源函數式編程語言和中間件 -- 支持電信交換網絡中的分布式、容錯和實時軟件。
Alan Reed是Bet365的系統開發和支持總監,管理這一個65人的團隊,負責開發用戶界面并對公司核心產品的中間件提供支持,當前的項目包括橫跨Bet365網站、桌面、移動設備和平板電腦的各類博彩產品。
Reed表示:“之所以采用函數式語言而非過程式語言,是因為我們面臨著和電信業類似的問題。”
因此,在2012年,Bet365決定用Erlang取代Java作為主要開發語言。
Erlang由愛立信在上世紀90年代提出。電信業者在那個年代所面臨的問題,與體育博彩網站有極大的雷同,即可靠性(reliability)、可擴展性(scalability)和簡單性(simplicity)。
基于Erlang,Bet365在2014年推出了主打的新產品,其最主要的特性在于可以讓用戶在賽事結束前就提前結束投注。這需要進行大量概率方面的實時計算。在將數據庫遷移到NoSQL的過程中,Erlang也發揮了作用。
跟上創新的步伐
Bet365網站的后臺主要處理大量的事務交易,用泛型語言編寫,而其前端則主要考慮一致性。“我們力圖交付輕量級的產品,讓前端代碼盡量簡潔、通用。”Reed表示。但是,為了適配各類終端設備,需要在保持用戶界面一致性和支持設備本地特性之間達成微妙的平衡。
HTML5讓Bet365可以構建通用的產品,其中只有少量的代碼是基于設備的。“HTML5使我們能夠寫出通用性較高的產品。”Reed解釋到。
“雖然不可能涵蓋當前所有的設備,但我們仍然盡力保證代碼的通用性。在此基礎上,這款APP還有一定程度的差異化。比如,對于iPhone,我們支持特定的手勢。對于各類智能手機上按鍵的不同,Bet365的應用也盡量提供本地化的體驗。”Reed說。
“以技術為基礎,我們在差異化方面竭盡全力。”Reed補充到。比如,由于可以支持視頻功能,Objective C就被用于開發iPhone上的應用;類似的,當HTML5力有不逮時,就使用原生的安卓代碼進行開發。
和其他很多網站一樣,Bet365也使用了JavaScript。但是,其員工沒有直接編寫JavaScript代碼的權限,而是必須通過 TypeScripts(來自于微軟的開源腳本語言)生成JavaScript代碼。“這種以規定格式生成Java代碼的方式,可以確保代碼的純凈,從而 降低錯誤出現的概率。這一點,對大型團隊尤其重要。”Reed表示。
代碼的標準性對于網站是極其重要的。“我們必須要面對的一個問題就是,由于代碼生命周期很長,相應的維護工作就會變得比較重要。按規定的標準進行開發,有利于減輕維護方面的工作量。”Reed解釋到。
Bet365模式
關于敏捷開發的模式,Reed的觀點是:“我們還是傾向于使用傳統的方法,很適合我們。”用Reed的話來說,就是Bet365是“博取各家精華”。
“在開發實踐上我們的態度非常開放,凡是可取之處都會引入。”Reed補充說。
Reed表示,Bet365在軟件開發上面臨的很多挑戰是非常獨特的,新員工必須接受嚴格的培訓。
不過,Bet365在開發工作上的確借鑒了敏捷模式的某些特質。“我們每天都發布新代碼并且持續更新,但是技術規格和需求文檔不能頻繁變動。”
由于移動互聯網應用需要持續地改進,傳統的瀑布型開發模式不再適用。因此,Bet365需要在兩者之間進行平衡。“我們所面臨的情況,只采用瀑布模式或敏捷模式都不是很合適。”Reed表示。
獨辟蹊徑的技術路線
出乎意料,Bet365基于自有的數據中心構建了基礎架構,而不是采用云方案。
對此,Reed回應到:“我們傾向于自建系統,這是最適用于Bet365的策略。”
在軟件開發的諸多方面,Bet365的這個策略都始終貫徹如一 – 獨有的開發模式、基于Erlang而非Java的后端系統、用TypeScript對JavaScript(內嵌于微軟的Visual Studio 2013中)進行標準化約束等。所有這些,都體現了Bet365不隨波逐流人云亦云,而是根據自身業務選定技術路線的理念。