【Google Cloud OnBoard 成功案例】遊戲部署全球也不怕!Pokémon GO 透過 GCP 做到了

Pokémon GO 如何在 GCP 上部署服務?

自從《Pokémon GO》在上週六(8/6)開放台灣玩家下載,全民陷入一陣瘋狂,紛紛走出戶外,開啟抓寶之旅。不論是在校園,車站附近,公園或是一些熱門景點,總是聚集著訓練家們,拿著手機,瘋狂地丟出寶貝球,希望跟隨卡通主角小智的步伐,收服世界上所有神奇寶貝,往神奇寶貝大師的道路邁進!

Google-Cloud-Platform-Pokemon《Pokémon GO》遊戲畫面。圖/截圖自Pokémon GO日本官網

可是你知道嗎?在抓寶的同時,手機正不停地與遊戲伺服器做溝通,利用你的地理位置座標(GPS)進行相關運算,比如載入附近地圖資訊,偵測附近的寶可夢,監控移動速度等等。面對全世界這麼多的玩家,這麼大的流量,該如何部署後端伺服器,如何做優化,確保這些運算能正常運作,是一項挑戰,也是讓遊戲能持續風靡的重要關鍵!


不只關注攻略、寶可夢地圖,你該思考的是背後的雲端架構

這麼火紅的遊戲,網路上不斷地有相關討論,訓練家們關注著各種攻略、密技,從Google Trends 的分析之中,也發現大家為了要能長時間的抓寶、孵蛋,開始關注行動電源,為了要快速的提升等級,紛紛尋找能夠直接看到寶可夢分布的地圖以及自動遊玩外掛 (necrobot) 等等。

pg-trend-b
行動電源的搜尋聲浪在《Pokémon GO》發表後增加。圖/截圖自Google Trends

pg-trend
《Pokémon GO》的相關搜尋趨勢。圖/截圖自Google Trends

然而在遊玩之餘,你有想過後端如何運作嗎? 在國外的知識問答平台 Quora,已經有人在探討技術層面的議題,探究背後的伺服器架構怎麼部署,應該如何設計。根據Apps-gcp 所做的實驗,以封包擷取軟體 (Wireshark) 來檢測遊戲發出的封包,從目的地伺服器的 IP 網段,合理推測出《Pokémon GO》的確採用了 GCP (Google Cloud Platform)。此外,我們也能從遊戲開發商 Niantic 釋出的職缺消息看出來,服務建置在 GKE (Google Container Engine) 並且運用輕量化的虛擬技術 Docker 與 Google 提供的開源容器調度工具 Kubernetes 來完成後端部署。

gcp-docker-kubernetes

在《Pokémon GO》的世界裡,無時無刻都有人在地圖間游走,尋找寶可夢,也不停地有人向道館發出挑戰,而且根據不同的時間與地點,玩家的數量也會有所變化。對於這樣的需求,背後的系統需要有相當大的彈性以及便攜性,Docker 正是為此而生。同樣的硬體資源下,Docker 可以跑的應用程式數量比虛擬機器 (Virtual machine)多 4 到 6 倍,且通常在幾秒鐘的時間內即可啟動容器。也就是因為如此,可以應付突如其來的流量,讓玩家有流暢的抓寶體驗,而當流量變小的時候,系統能根據設定減少容器數量,降低營運成本。


用聰明的方式,讓遊戲無痛上雲端

GCP 專門家在 8/9 日舉辦的第二場雲端小聚『遊戲無痛轉移上雲端』,就搭上了寶可夢列車,分別由 Gene 與 Taco 以自身經驗與實際案例出發,介紹該如何利用 Docker 來簡化開發與部署流程,並分享 Kubernetes 的使用心得。

如果你是企業用戶,可以透過 Kubernetes 來控管 Docker Cluster,做負載平衡 (Load Balance),Auto scaling,還有 Self-healing 等等設定,讓系統可以依據事先設定的判斷機制,動態的改變服務數量,並在服務出問題時自動重新啟動,維持遊戲穩定。如果只想簡單做測試,又不想管這麼多複雜設定,別怕,這些 Google 都幫我們做好了!透過 GCP Cloud Console 圖形化介面,可以很輕易地完成相關設定,架起一個 Docker 叢集。

container-engine在Google Container Engine 設定容器叢集。圖/截圖自 GCP Cloud Console

《Pokémon GO》的成功,是經過多年累積的努力,很大程度也仰賴在《Ingress》汲取的經驗,網友也笑稱《Pokémon GO》其實做了三年的 beta 測試,在這之中了解不同廠牌手機的 GPS 定位效果,做適當修正,同時蒐集了玩家活動的時間、範圍與相關資訊,應用到這款遊戲上。面對多人連線遊戲的需求,以及巨量資料的處理,自己建立機房已不符合經濟效益,如何快速使用現有資源打造產品,才是在生命週期短暫的手機遊戲產業中生存的關鍵!透過 GCP,您可以快速整合 Google 旗下服務以及各種 API,並使用 Stackdriver 監控資源與系統紀錄,隨時掌握狀況。

如果各位對於雲端相關的議題有興趣,請持續追蹤 GCP 部落格唷!後續我們會分享當日活動的剪輯影片,並發布雲端小聚下次聚會的訊息!最後,祝福各位都能成為神奇寶貝大師,一起收服神奇寶貝吧!

(本文來自合作部落客 李振皓:傑瑞窩在這,GCP 專門家授權轉載。)

 


連絡「GCP 專門家」