คู่มือเกมแลค › L13 สถาปัตยกรรมเซิร์ฟเวอร์และการดูแลระบบ
การพึ่งพาเซอร์วิสภายนอก External dependencies (auth, billing, platform)
ID สาเหตุ in-external · ผู้รับผิดชอบหลัก ภายนอก (ภายนอก) · ร่วมกับ พัฒนาเซิร์ฟเวอร์ (ทีมพัฒนาเกม)
เปิดการ์ดในฉบับหลักที่มีภาพและการทดลอง →
ถ้าเซอร์วิสภายนอก เช่น ล็อกอินผ่านแพลตฟอร์ม, การชำระเงิน หรือการยืนยันตัวตน ช้าหรือหยุดทำงาน ผู้เล่นจะติดอยู่ที่ขั้นตอนนั้น
ทำไม เซอร์วิสยืนยันตัวตนหรือชำระเงินภายนอกขัดข้องหรือช้า → ผลคือ รอคำตอบอยู่ที่ขั้นตอนนั้น → บนหน้าจอ ล็อกอินไม่ได้, ชำระเงินไม่สำเร็จ คนที่อยู่ในเกมแล้วเล่นได้ปกติ
- อาการ
- เข้าเกมไม่ได้/โหลดไม่จบ, กดไม่ติด/โรลแบ็ค
- ปัจจัย
- การหยุดชะงัก
- ใครเจอ
- ทั้งเซิร์ฟเวอร์, เฉพาะบางฟีเจอร์
- เกิดเมื่อไร
- หลังล็อกอิน/หลังปิดปรับปรุง, ตอนทำแอ็กชันบางอย่าง
- ผู้รับผิดชอบ
- ผู้รับผิดชอบหลัก ภายนอก (ภายนอก) · ร่วมกับ พัฒนาเซิร์ฟเวอร์ (ทีมพัฒนาเกม)
- งานฝั่งทีมพัฒนาเกม
- ตั้งไทม์เอาต์ให้การเรียกภายนอกพร้อมข้อความแจ้งที่เข้าใจง่าย, แคชผลการยืนยันตัวตน, ทำขั้นตอนลองชำระเงินใหม่และชดเชย
- งานฝั่งภายนอก
- แจ้งผู้ให้บริการยืนยันตัวตน, ชำระเงิน และแพลตฟอร์มให้ตรวจสอบเหตุขัดข้องและกู้ระบบ, แจ้งผู้เล่นว่าเป็นเหตุขัดข้องของเซอร์วิสภายนอก
- บนกราฟ
- ขึ้นเป็นขั้นบันไดจากจุดหนึ่ง · เวลาตอบสนอง/อัตราข้อผิดพลาดของการเรียกภายนอก, จำนวนล็อกอินที่สำเร็จ
- จุดที่ต้องดู
- เวลาตอบสนอง, อัตราข้อผิดพลาด และจำนวนไทม์เอาต์ของการเรียกภายนอกแต่ละประเภท เช่น ล็อกอินผ่านแพลตฟอร์ม, การชำระเงิน และการยืนยันตัวตน กับหน้าสถานะ (status page) ของผู้ให้บริการ
- สัญญาณว่าใช่
- ตั้งแต่ช่วงที่ล็อกอินหรือชำระเงินล้มเหลวกระจุกตัว error และไทม์เอาต์ของการเรียกภายนอกบางตัวเท่านั้นที่ขึ้นเป็นขั้นแล้วทรงตัวอยู่ระดับนั้น และหน้าสถานะของผู้ให้บริการมีเหตุขัดข้องในเวลาเดียวกัน
- สัญญาณว่าไม่ใช่
- การเรียกภายนอกปกติแต่ล็อกอินไม่ได้: น่าจะเป็นที่ตัวเซิร์ฟเวอร์ล็อกอินเอง (thread pool หมด, DB) หรือคิวรอเชื่อมต่อ (backlog) ของระบบปฏิบัติการ
- วิธีตรวจ
- ต้องมี log หรือเมตริกจากเซิร์ฟเวอร์/ไคลเอนต์เกม
- กรณีจริง
- Fastly 2021: Fastly CDN เกิด error ทั่วโลก
AWS 2021: เครือข่ายภายในของ AWS us-east-1 แออัด
AWS 2025: DNS ของ DynamoDB ใน AWS us-east-1 ขัดข้อง และการกู้คืนที่ยืดเยื้อ
แหล่งอ้างอิง
- Timeouts, retries, and backoff with jitter AWS
Amazon Builders' Library ระหว่างรอคำตอบจะถือครองทรัพยากร เช่น เธรดและการเชื่อมต่อ จึงต้องตั้งไทม์เอาต์ และ API ที่มีผลข้างเคียงให้ลองใหม่เฉพาะเมื่อรับประกัน idempotency ได้ - Circuit Breaker Pattern Microsoft Azure
การเรียกที่มีแนวโน้มล้มเหลวสูงให้ปฏิเสธทันทีโดยไม่ต้องรอถึงไทม์เอาต์ เพื่อรักษาเวลาตอบสนอง - REL05-BP01 Implement graceful degradation to transform applicable hard dependencies into soft dependencies AWS
AWS Well-Architected แม้เซอร์วิสที่พึ่งพาจะขัดข้อง ก็ยังรักษาฟีเจอร์หลักไว้ได้ด้วยข้อมูลที่เก่าไปเล็กน้อย (เป็นเหตุผลของการแคชผลการยืนยันตัวตน)
สาเหตุที่ควรดูประกอบ
ชั้นเดียวกัน: L13 สถาปัตยกรรมเซิร์ฟเวอร์และการดูแลระบบ
สาเหตุจากชั้นอื่นที่ทำให้เกิดอาการเดียวกัน (เข้าเกมไม่ได้/โหลดไม่จบ)
ดูการ์ดในฉบับหลักที่มีภาพและการทดลอง