Rate Limiting และ Backpressure: ปกป้องระบบเมื่อโหลดพุ่ง

เว็บล่มตอนแคมเปญใหญ่ ไม่ใช่เพราะคนเยอะเกินไปเสมอไป แต่เพราะระบบไม่มีกลไกชะลอเมื่อโหลดพุ่ง Rate Limiting และ Backpressure คือวิธีให้ระบบยังยืนได้ แม้ในวันที่คนเข้ามากที่สุด
วันที่ธุรกิจรอคอยที่สุด เช่น วันแคมเปญใหญ่ มักเป็นวันที่ระบบล่ม ไม่ใช่เพราะลูกค้ามากเกินไปอย่างเดียว แต่เพราะระบบพยายามรับทุกคำขอพร้อมกันจนทรัพยากรหมด แล้วล้มทั้งระบบ Rate Limiting และ Backpressure คือกลไกที่ทำให้ระบบ ปฏิเสธอย่างสุภาพ หรือ ชะลอ ดีกว่าล้มทั้งหมด
Rate Limiting: กำหนดเพดานที่ยอมรับได้
Rate Limiting คือการจำกัดจำนวนคำขอต่อช่วงเวลา เพื่อไม่ให้ผู้ใช้คนเดียวหรือบอตตัวเดียวกินทรัพยากรจนคนอื่นใช้ไม่ได้ มันยังกันการโจมตีแบบยิงถล่ม และทำให้ระบบคาดการณ์โหลดสูงสุดได้ จุดสำคัญคือเมื่อปฏิเสธ ต้องบอกผู้ใช้อย่างชัดเจนและให้ลองใหม่ได้ ไม่ใช่เงียบหายหรือค้าง
Backpressure: ส่งสัญญาณย้อนกลับเมื่อรับไม่ไหว
Backpressure คือการที่ส่วนที่รับงานไม่ไหว ส่งสัญญาณกลับไปให้ส่วนที่ส่งงานชะลอลง แทนที่จะรับมาเรื่อย ๆ จนล้น เหมือนพนักงานครัวบอกหน้าร้านว่าออร์เดอร์เต็มมือแล้ว ขอรับเพิ่มช้าลง ระบบที่มี Backpressure จะช้าลงอย่างมีระเบียบ แทนที่จะพังแบบกะทันหัน
ก่อนแคมเปญใหญ่ครั้งหน้า อย่าถามแค่ว่าระบบรับได้กี่คน แต่ถามว่าเมื่อเกินกว่าที่รับได้ ระบบจะทำตัวอย่างไร คำตอบของคำถามนี้ คือความต่างระหว่างวันที่ทำเงินสูงสุด กับวันที่กลายเป็นข่าวร้าย
บริการที่เกี่ยวข้อง
รับพัฒนาเว็บแอปพลิเคชัน
สร้างเว็บแอปที่รองรับการเติบโตและเชื่อมกับระบบอื่นได้
WhaleScope
ดูโครงสร้างตลาดของทุกหมวดธุรกิจไทย บน WhaleScope
รายชื่อบริษัท ผู้เล่นรายใหญ่ และอัตราคงอยู่ของแต่ละหมวด — จากข้อมูลจดทะเบียน 2 ล้านนิติบุคคล
อ่านต่อ

Load Balancer คืออะไร: กระจายงานให้ระบบรับโหลดได้มากขึ้นและไม่ล่มง่าย
เมื่อเครื่องเดียวรับไม่ไหว คำตอบไม่ใช่ซื้อเครื่องใหญ่ขึ้นเสมอไป แต่คือกระจายงานไปหลายเครื่องด้วย Load Balancer ซึ่งช่วยทั้งเรื่องรองรับคนมากขึ้นและทนต่อการที่เครื่องหนึ่งล่ม

Stateless: ทำไมการออกแบบไร้สถานะถึงสเกลง่ายกว่า
เมื่อระบบเก็บข้อมูลผู้ใช้ไว้ในเครื่องที่ให้บริการ การเพิ่มเครื่องหรือย้ายงานจะยุ่งยาก การออกแบบแบบ Stateless แยกสถานะออกไปเก็บที่ส่วนกลาง ทำให้กระจายงานและขยายระบบได้ง่ายขึ้นมาก

Database Sharding: แบ่งฐานข้อมูลเมื่อใหญ่เกินเครื่องเดียว
เมื่อข้อมูลใหญ่จนเครื่องเดียวรับไม่ไหว การเพิ่มเครื่องให้แรงขึ้นมีเพดาน Sharding คือการแบ่งข้อมูลออกไปหลายเครื่อง ช่วยให้ขยายต่อได้ แต่ก็เพิ่มความซับซ้อนที่ต้องแลก

Read Replica: แยกงานอ่านออกจากงานเขียน เพื่อให้ระบบไหว
ระบบส่วนใหญ่อ่านข้อมูลบ่อยกว่าเขียนมาก เมื่อฐานข้อมูลเดียวรับทั้งสองไม่ไหว Read Replica คือการทำสำเนาไว้รับงานอ่าน ช่วยให้รายงานและหน้าเว็บเร็วขึ้นโดยไม่กระทบงานเขียน
