เผยสถาปัตยกรรมเบื้องหลัง Pokemon Go ใช้ Google Cloud, ทราฟฟิกมากกว่าที่คาด 50 เท่า

by mk
30 September 2016 - 14:27

ถ้ายังจำกันได้ ปัญหาของเกม Pokemon Go ในช่วงแรกๆ คือเซิร์ฟเวอร์ไม่พอกับความต้องการ แต่ท้ายที่สุดแล้วทาง Niantic ก็ไม่เคยเผยข้อมูลว่าเซิร์ฟเวอร์ของ Pokemon Go ใช้ระบบของอะไร

วันนี้ข้อมูลเผยออกมาแล้ว ว่าเป็น Google Cloud Platform ตามที่หลายคนคาดกัน สิ่งที่น่าสนใจคือทราฟฟิกของ Pokemon Go สูงกว่าที่ทีมงานคาดการณ์ไว้ถึง 50 เท่าเลยทีเดียว

เรื่องนี้เปิดเผยโดยทีมงาน Google Cloud Platform ที่ประเมินกันว่าทราฟฟิกระดับ worst case น่าจะมากกว่าทราฟฟิกที่ประเมินไว้ราว 5 เท่า แต่เอาเข้าจริง ทราฟฟิกกลับทะลุความคาดหมายอย่างรวดเร็วภายในเวลาเพียง 15 นาทีหลังเปิดให้ดาวน์โหลดในออสเตรเลียและนิวซีแลนด์ และจบที่ทราฟฟิกจริงสูงกว่าที่คาดไว้ 50 เท่า

หน้าที่ในการดูแลโหลดระดับนี้เป็นของทีม Google Customer Reliability Engineering (CRE) ทีมใหม่ที่กูเกิลตั้งขึ้นมาเพื่อดูแลลูกค้ารายใหญ่โดยเฉพาะ และลูกค้ารายแรกก็คือ Niantic กับ Pokemon Go นั่นเอง

หลังจากเปิดให้ดาวน์โหลดและทราฟฟิกโตเกินเป้า ทีมงาน Niantic ก็โทรหาทีม Google CRE เพื่อขอความช่วยเหลือทันที เพราะตามแผนต้องเปิดเซิร์ฟเวอร์ให้ผู้เล่นในสหรัฐอเมริกาในวันต่อไป

ทางทีม CRE ก็ตอบรับโดยการเพิ่มขีดความสามารถของคลาวด์แบบเต็มที่ให้ Niantic เพื่อรองรับความต้องการ แต่อุปสรรคก็ยังไม่หมด เพราะตัวเกมมีปัญหาเสถียรภาพ ทั้งสองทีมจึงต้องทำงานร่วมกันเพื่อแก้ปัญหาไปทีละเปลาะ โดยทีม CRE เข้าไปช่วยรีวิวสถาปัตยกรรมของ Pokemon Go ตลอดเวลา

ระบบเบื้องหลัง Pokemon Go ได้แก่

  • Google Cloud Datastore ฐานข้อมูลแบบ NoSQL ไว้เก็บข้อมูลของผู้เล่น
  • ตัวลอจิกของเกม รันอยู่บน Google Container Engine (GKE) ที่ใช้ซอฟต์แวร์จากโครงการ Kubernetes บริการคลัสเตอร์ จุดที่น่าสนใจคือทีมงานต้องเปลี่ยนเวอร์ชันของ GKE กลางคันเพื่อให้รับโหลดได้มากขึ้น ซึ่งต้องระวังไม่ให้ผู้เล่นได้รับผลกระทบ
  • HTTP/S Load Balancer สำหรับกระจายโหลดไปยังเซิร์ฟเวอร์ต่างๆ ตัวนี้เป็นซอฟต์แวร์ใหม่ที่เขียนขึ้นมาแทน Network Load Balancer เดิมของกูเกิล

หลังจากเปิดบริการในสหรัฐแล้ว ทางทีม Niantic และ CRE ก็มีประสบการณ์มากพอ และการปรับระบบเซิร์ฟเวอร์ในช่วงแรก ทั้งการขยายขีดความสามารถคลาวด์ และการปรับมาใช้ GKE กับ HTTP/S Load Balancer เวอร์ชันใหม่ ช่วยให้ระบบสามารถรองรับการเปิดบริการในญี่ปุ่นได้อย่างราบรื่นไม่มีสะดุด

ทีมงาน Google Cloud บอกว่า Pokemon Go คือระบบที่ใช้ Kubernetes บน Google Container Engine ที่ใหญ่ที่สุดตั้งแต่เคยมีมา (ไม่บอกจำนวนที่แน่ชัด แต่บอกว่าเป็นหลัก "หลายหมื่นคอร์") ทีมงานแก้ไขโค้ดจำนวนมากเพื่อรองรับสเกลระดับนี้ และส่งโค้ดกลับไปยังโครงการโอเพนซอร์สแล้ว

ที่มา - Google Cloud Platform Blog

Blognone Jobs Premium