ทำไมเพิ่มเซิร์ฟเวอร์ตอนแอปฯ โคตรฮิตถึงพังกว่าเดิม
เมื่อผู้ใช้แห่เข้าแอปฯ ทะลักแสนคนแล้วระบบล่ม การเพิ่มเซิร์ฟเวอร์อาจไม่ใช่ทางออกเสมอไป มาดูสาเหตุและกฎเหล็กในการแก้คอขวดก่อนขยายระบบ

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
- แอปฯ ไวรัลมีผู้ใช้แสนคนเข้าพร้อมกันจนระบบล่มกลางดึก
- การเพิ่มเซิร์ฟเวอร์ทันทีอาจทำให้ระบบแย่ลงกว่าเดิม
- ต้องค้นหาจุดที่คำขอติดคอขวดก่อนเพิ่มความจุระบบ
- การแก้ไขปัญหาคือการย้ายจุดคอขวดไปเรื่อยๆ อย่างต่อเนื่อง
ลองจินตนาการภาพเหตุการณ์ในช่วงกลางดึก จู่ๆ มีบุคคลสำคัญแชร์แอปพลิเคชันของคุณ ส่งผลให้มีผู้ใช้งานทะลักเข้ามาถึงหนึ่งแสนคนในทันที แน่นอนว่าหน้าเว็บไซต์หรือแอปฯ ของคุณย่อมเกิดอาการล่มตามระเบียบ ปฏิกิริยาอัตโนมัติของนักพัฒนาหลายคนคือการรีบเพิ่มเซิร์ฟเวอร์เข้าไปอีกสามตัวเพื่อรองรับทราฟฟิก แต่ผลลัพธ์ที่ได้กลับกลายเป็นว่าระบบยิ่งแย่ลงไปกว่าเดิมเสียอย่างนั้น
กฎเหล็กข้อสำคัญที่จะช่วยให้คุณเข้าใจเรื่องนี้อย่างถ่องแท้คือ ก่อนที่คุณจะตัดสินใจเพิ่มความจุหรือขยายทรัพยากรระบบ สิ่งแรกที่ต้องทำคือการตรวจสอบให้แน่ชัดว่าคำขอ (Request) กำลังรอคอยอยู่ที่ขั้นตอนไหนกันแน่
ในทางวิศวกรรมซอฟต์แวร์ ปรากฏการณ์ที่เพิ่มเซิร์ฟเวอร์แล้วระบบแย่ลงมักเกิดจากปัญหาการแย่งชิงทรัพยากร (Resource Contention) หรือปัญหาคอขวดที่ย้ายจากจุดหนึ่งไปยังอีกจุด เช่น เมื่อแก้ปัญหาเรื่องทราฟฟิกหน้าบ้านได้แล้ว ฐานข้อมูลหลังบ้าน (Database) อาจกลายเป็นจุดคอขวดใหม่ที่รับโหลดไม่ไหวและล่มเร็วกว่าเดิม การทำความเข้าใจโครงสร้างคำขอจึงมีความสำคัญมากกว่าการสาดเงินซื้อเซิร์ฟเวอร์เพิ่ม
หากเราลองติดตามเส้นทางของคำขอที่ทำงานช้าเพียงหนึ่งคำขอ ภาพรวมทั้งหมดเกี่ยวกับการขยายขนาดระบบ (Scaling) จะเรียงร้อยออกมาเป็นขั้นตอนที่ชัดเจนทันที

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
กระบวนการแก้ไขปัญหาคอขวดในระบบซอฟต์แวร์มีแนวทางหลักๆ ดังนี้
- ติดตามและวิเคราะห์เส้นทางของคำขอที่ช้าในแต่ละส่วน
- ค้นหาตำแหน่งที่คำขอติดขัดและรอนานที่สุด
- แก้ไขปัญหาคอขวดทีละจุดโดยไม่เพิ่มเซิร์ฟเวอร์อย่างไร้ทิศทาง
- ทำความเข้าใจว่าการแก้ไขแต่ละครั้งเป็นเพียงการย้ายคอขวด ซึ่งถือเป็นงานปกติของนักพัฒนา
ความจริงที่นักพัฒนาทุกคนต้องยอมรับก็คือ การแก้ไขปัญหาทุกครั้งมักจะเปลี่ยนตำแหน่งของคอขวดไปเรื่อยๆ ซึ่งนี่ไม่ใช่ความล้มเหลวในการทำงาน แต่มันคือเนื้อแท้ของงานพัฒนาซอฟต์แวร์ที่คุณต้องเผชิญ
ที่มา: Dev.to
พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้
ความคิดเห็น
แสดงความคิดเห็น