臺灣團隊打造世界級瀏覽器,維運萬臺伺服器靠Docker



CloudMosa創辦人暨執行長沈修平(攝影/洪政偉)。

網頁瀏覽器間的戰爭,可以從至上世紀末90年代的網景Netscape與微軟IE說起,當時兩大公司角逐誰才是瀏覽器霸主,而在局勢大勢底定的20多年後,每每有人得知CloudMosa創辦人暨執行長沈修平仍要繼續投入瀏覽器開發時,「他們都跟我說:『老兄,War is over。』」他笑著說,雖然現階段局勢看似趨於穩定,「但是瀏覽器扮演的角色,始終非常重要。」

而沈修平表示,現在主流瀏覽器的使用體驗,都相當倚賴用戶端的硬體規格,導致本機設備的處理器、記憶體成為網頁應用執行的瓶頸,「我們需要一個完全不一樣的瀏覽器,才有辦法突破僵局,贏得勝利。」他舉例,在第一次世界大戰的壕溝戰模式,各國就陷入僵持戰,但是在英國發明坦克之後,很快大戰就畫上終點。

而對比至瀏覽器市場的競爭,沈修平認為,當多數人都認為瀏覽器已經可能不再有重大突破之時,「這對CloudMosa是個非常好的機會。」也因此,CloudMosa決定要押寶遠端瀏覽器的營運模式,「重點是打造一個良好的雲端環境」,利用雲端隨需使用的觀念來打造瀏覽器,不需要仰賴使用者自己的設備,而是依靠CloudMosa資料中心的運算力,創造更好的瀏覽體驗,由於每個使用者都僅使用短暫的時間,因此單臺伺服器至少可以處理100個使用者的瀏覽需求。而目前該公司的Puffin瀏覽器,下載次數已經超過8,000萬次,而每月活躍使用人數(MAU)也超過了1,200萬人。

在CloudMosa草創初期,IT架構完全仰賴公有雲。沈修平也解釋該選擇的原因,「新創公司的失敗機率很高,而公有雲可以降低失敗的成本。」反之,使用VM技術自建資料中心,「需要專業人才,但是使用公有雲,就可以聘用更平凡的工程師。」沈修平開玩笑著說,一家草創的新創公司,尋找資金與構思戰略才是重點,在使用流量不多時,IT基礎架構並不是重點,萬一失敗,自建機房會帶來很大的失敗成本。

Rackspace公有雲服務允許用戶使用閒置運算資源

當初CloudMosa是使用Rackspace而非AWS,沈修平表示,使用Rackspace的架構,「可以讓我們使用更多運算資源。」他解釋,這兩家公雲服務商最大的區別在於,AWS會將單一臺伺服器劃分成數臺VM,但是未使用完全的資源,企業不能自由運用,反之,Rackspace則允許運用戶自由使用閒置資源,「當鄰近的VM資源未有人使用時,CloudMosa可以使用那些運算資源」,沈修平笑著說,就跟臉書遊戲開心農場的偷菜一樣有趣。

但是隨著營運規模成長,偷菜用法卻讓CloudMosa開始承受痛點。當流量增加需要更多運算資源時,「加開伺服器也沒有效果」,原因在於,過去已習於使用超載資源,「這也使得增加資源變成一件非常不可預期的事情。」

偷菜模式導致運算資源難以預測,提高營運風險

在此階段沈修平發現,如果企業規模不大,僅有20至30臺伺服器時,使用Rackspace的服務就非常划算,但是當規模開始擴充至100至500臺伺服器時,就已經達到Rackspace的極限,「偷菜仍然有其風險。」而要穩定營運一家企業,勢必要減低風險。

所以,CloudMosa開始轉移至AWS,最初1個月支付的費用為1,000美元。而隨著使用人數增加,很快地費用水漲船高,公有雲月租費馬上增加至5,000美元,甚至還飆高至5萬美元,「5萬美元對於規模不大的企業仍是一筆支出。」他認為,新創公司的確可以仰賴公有雲,但是一旦事業開始順利,「企業就應該開始自建私有雲。」

這也讓沈修平開始思考,如何利用自建資料中心降低營運成本,「我們的目標是在1個月內建立起資料中心」,他表示,在AWS環境每多待一天,都是更多的額外花費。根據CloudMosa需求,租用單臺伺服器的價格是720美元,但如果自行購買的價格為1,200美元,「只需要一個半月就會回本。」

VM可以提升容錯度、備援能力,但不能解決所有問題

而開始自建資料中心後,起初實體伺服器的數量不多,CloudMosa先利用VM技術加強資源的利用率。而當規模達到50臺之後,CloudMosa也開始評估是否有繼續使用VM的必要。沈修平表示,一臺機器要提高4倍的效能,不只要花上4倍的成本,「如果真有需求,何必要把資源劃分為4份?」

他比喻,裸機伺服器就像是一顆大鑽石,而利用虛擬化技術,切成4顆小鑽石便不合理。因此,在某種程度上,虛擬化技術不全然可以解決所有問題,只有符合某些條件之下,像是企業的需求可以靠一臺實體伺服器滿足,這時候使用VM就非常恰當。

沈修平舉例,最早CloudMosa也使用VM作為基礎架構,「我們要降低失敗成本」,而在新創公司營運初期使用者規模並不大時,如果只有單一主機,沒有容錯能力,而借助VM便可提供容錯和備援能力。

不需浪費成本將過多服務部署在公有雲

隨著CloudMosa的服務量成長到一定規模後,因應不同任務需求,也開始進行伺服器角色的分工。他表示,第一種角色是工蜂(Worker bee),也因此,CloudMosa在自建資料中心的伺服器,主要都是以裸機為主,僅有少數伺服器為虛擬機。

沈修平表示,每一臺伺服器都有特定用途,而裸機部署才可以讓實體伺服器擁有最好的資源使用率,「工作節點都一律使用裸機部署,我們稱這些伺服器為工蜂。」

而CloudMosa也開始設計負載平衡機制,將流量導引至不同的工蜂伺服器,此時每一臺伺服器的重要性就大幅降低,「即便其中一臺伺服器當機,仍然有其他設備會接手。」

相比工蜂伺服器,某些不耗費過多資源的應用程式,便可以在VM環境中執行,「這些是我們重要的應用程式。」沈修平稱這些應用程式為聖牛(Sacred Cow),萬一這些系統當機,「公司就會倒閉。」也因此,沈修平才將這些應用程式部署在公有雲上,「利用公有雲服務,才可以確保應用當機、無法存取服務的機會更低。」

解決問題才是重點,不要為了追趕潮流而用,把技術視為炫耀財。──CloudMosa創辦人暨執行長 沈修平(攝影/洪政偉)


使用公有雲作為安全網,重要應用部署在公有雲環境即可

歸納搭配公有雲服務及自建資料中心的心得,沈修平認為,最佳的作法是將少數的重要應用程式留在AWS,但是大多數的伺服器都部署在自家機房內,自建可以節省成本,但相對較不穩定,「還好我們並不特別在意自建機房中伺服器的運作。」

此外,公有雲也可以做為安全網,可以分擔突如其來的爆量服務需求,使用公有雲分擔這些流量。CloudMosa也有一套目前還未啟動過的備援方案,「一旦天塌下來,就不需要再想如何省錢,重點是要活下去。」他笑著說 ,花一天昂貴的租金解決存亡之事,是筆非常划算的花費。

導入刀鋒伺服器提升機臺密度,同時還能改善IT維運工作

而當CloudMosa最後成長至3,000臺伺服器,接著又開始面臨到的下一個問題,就是伺服器規模過於龐大,如何快速部署?「因此CloudMosa開始使用刀鋒伺服器」,沈修平表示,刀鋒伺服器的機箱內可以容納多臺獨立的伺服器,同一個機箱內的伺服器可以共用網路資源,不需要每一臺伺服器都與網路連接。採用刀鋒伺服器後,無論是部署密度、速度,及維護工作都有相當程度的改善,「之後就完全轉移至刀鋒伺服器。」

同時CloudMosa也採用Network booting,當一臺伺服器開機時,也不需要安裝虛擬化平臺,與網路連接後,安裝該機器所需要的組態設定,之後便會自動加入正式環境。

不過當規模繼續擴增之後,如果要同時部署多臺伺服器,也會對負責執行部署工作的伺服器造成相當的工作負載。原先Master節點只需要負責數臺伺服器的部署工作,但是要部署上千臺伺服器的工作就非常耗時。

為了節省成本,CloudMosa也開始使用便宜的伺服器,「但每次重新啟動時,就有無法開機的風險,硬體失敗率開始提高了。」沈修平表示,CloudMosa定期會執行重開機的維護工作,或是更新應用程式時,都需要伺服器重開機。這也讓IT團隊每次重開都很擔心,這就是CloudMosa要解決的下一個考驗。

《全文請見iThome(https://www.ithome.com.tw/people/120933)》