本日主要是分享
Pavan Belagatti
於2019/8/5
發表在網路上的文章:
Pokemon Go - A Successful Kubernetes Story
進行翻譯。
Pokémon Go
如何有效率地擴充服務因應上圖中顯示的資料存取量?是的。答案是Kubernetes
。
500+ 佰萬下載次數以及 20+ 佰萬玩家於日常生活中進行遊玩互動,造成資料流量是如此的巨大。
Pokémon Go的開發者從沒想過推出這款遊戲時,玩家人數會在那麼短的時間內呈現指數爆炸的快速增加,即便再多的伺服器也無法在短時間內處理這樣巨大的資料傳輸。
面臨的挑戰 : 除了水平擴充增加服務的數量外,Pokémon Go還須面對全世界百萬以上玩家即時遊玩的資訊量。當他們進行垂直擴充時,資料的存取及運算是否還能正確也是一大挑戰。Niantic在當時還沒準備好因應這些問題。註
:垂直/水平擴充有興趣的可自行閱讀此篇
解決方案 : 魔法般地把服務容器化
。藉由開源的Kubernetes計畫,促使該遊戲得以在Google Container Engine(GKE)上實現。
Niantic選擇採用GKE來部署他們的容器叢集,理由是GKE本身易於擴充服務的能力,讓他們能夠自由地面對現實中玩家數量增長挑戰。依照這種做法,Niantic使用Google Cloud作為Pokémon GO的遊戲平台,用來服務數以百萬以上的玩家,持續地增長並改進。這讓他們有更多的時間專注於遊戲的邏輯及功能上的開發,而非擔心如何去擴充他們的服務。
「如同病毒散布般地快速」,玩家的增長不易預期,但是你總是可以選擇Kubernetes這個技術來解決這個問題。
開發者能夠時常推送更新版本,已滿足企業能夠快速回覆客戶需求並取得客戶更高的信任感。為了實現這個情境,使用CI/CD是一個實現這個情境的方式。
在Kubernetes上設定一個CI/CD的傳輸管道(ex: Jenkins)將加速你/妳的服務生命週期 - 你/妳將能夠在一天中釋出多次更新版本並在你/妳的容器服務中快速迭代啟動。
有興趣的可進一步閱讀Rob Scott的文章:CI/CD with Kubernetes
或者,試試這個簡單案例: 5-step Kubernetes CI/CD process
Kubernetes叢集在自動部署大量容器服務上
的表現,在軟體工程
上掀起一波巨浪引發關注。現今的程式設計師也能夠透過JFrog Artifactory整合Kubernetes與Docker Registry,並使用容器化的服務實現自動化生產流程。
你/妳對於Kubernetes有什麼樣的看法?你/妳正在使用或者計劃在未來使用它嗎?
我有省略原文中的
提示(tip)
部分。
這部分要完整解釋,又是另一個30天的鐵人賽了。
原作者最後給出的問題,未來有打算使用Kubernetes嗎?
我的答案是:如果你/妳計畫採用分散式架構
,Kubernetes會是一個非常好用的工具。非分散式架構
,其實Docker
就夠用了。VM
也行。
例如一般公司內部在用的出勤系統,用Kubernetes就有點殺雞用牛刀了。