Race Condition: เมื่อสองงานชนกัน แล้วข้อมูลเพี้ยน

ลูกค้าสองคนกดซื้อของชิ้นสุดท้ายพร้อมกัน ระบบควรขายได้คนเดียว แต่ถ้าออกแบบไม่ดี อาจขายได้ทั้งคู่ นี่คือ Race Condition ปัญหาที่เกิดเมื่อสองงานทำพร้อมกันบนข้อมูลเดียว
Race Condition เกิดเมื่อสองงานทำงานพร้อมกันบนข้อมูลเดียวกัน แล้วผลลัพธ์ขึ้นกับว่าใครเสร็จก่อน ตัวอย่างคลาสสิกคือสินค้ามีชิ้นสุดท้าย ลูกค้าสองคนกดซื้อพร้อมกัน ถ้าทั้งสองคำขออ่านเห็นว่ายังมีของหนึ่งชิ้นในเสี้ยววินาทีเดียวกัน ระบบอาจขายให้ทั้งคู่ แล้วสต็อกติดลบ ปัญหานี้ไม่โผล่ตอนทดสอบทีละคน แต่จะเกิดเมื่อมีคนใช้พร้อมกันจริง
ทำไมถึงตรวจยากและอันตราย
Race Condition เป็นบั๊กที่เกิดเป็นครั้งคราวตามจังหวะเวลา จึงทำซ้ำให้เห็นได้ยาก และมักรอดผ่านการทดสอบปกติไปขึ้นระบบจริง ผลกระทบมีตั้งแต่ขายเกินสต็อก ตัดเงินซ้ำ ไปจนถึงยอดคงเหลือผิด ซึ่งล้วนกระทบความเชื่อมั่นและบัญชีของธุรกิจโดยตรง
- ใช้กลไกล็อกหรือธุรกรรมของฐานข้อมูล เพื่อให้สองงานไม่แก้พร้อมกัน
- ตรวจเงื่อนไขตอนเขียนจริง ไม่ใช่เชื่อค่าที่อ่านมาก่อนหน้า
- ทดสอบด้วยการยิงคำขอพร้อมกันจำนวนมาก เพื่อจับปัญหาแบบนี้
Race Condition เป็นเครื่องเตือนว่าระบบที่ทำงานถูกตอนคนใช้ทีละคน อาจพังเมื่อคนใช้พร้อมกัน การออกแบบให้รองรับการทำงานพร้อมกันอย่างถูกต้อง เป็นหนึ่งในสิ่งที่แยกระบบที่พร้อมรับการเติบโต ออกจากระบบที่พังในวันที่ลูกค้าเข้าเยอะที่สุด
บริการที่เกี่ยวข้อง
รับพัฒนาเว็บแอปพลิเคชัน
สร้างเว็บแอปที่รองรับการเติบโตและเชื่อมกับระบบอื่นได้
WhaleScope
ดูโครงสร้างตลาดของธุรกิจซอฟต์แวร์ สื่อ และไอที บน WhaleScope
รายชื่อบริษัท ผู้เล่นรายใหญ่ อัตราคงอยู่ และการกระจายรายจังหวัดของหมวดการจัดทำโปรแกรมคอมพิวเตอร์ — จากข้อมูลจดทะเบียน 2 ล้านนิติบุคคล
อ่านต่อ

Optimistic หรือ Pessimistic Locking: กันข้อมูลชนกันเมื่อหลายคนแก้พร้อมกัน
เมื่อสองคนแก้ข้อมูลเดียวกันพร้อมกัน ใครจะชนะ และอีกคนจะรู้ไหมว่างานถูกทับ Optimistic กับ Pessimistic Locking คือสองวิธีจัดการ ที่เหมาะกับสถานการณ์ต่างกัน

Idempotency และ Retry: ออกแบบระบบที่ทำงานซ้ำได้โดยไม่พัง
ลูกค้ากดจ่ายเงินสองครั้งเพราะเน็ตหลุด ระบบควรตัดเงินครั้งเดียวหรือสองครั้ง? คำตอบอยู่ที่ Idempotency หลักการที่ทำให้การลองใหม่ปลอดภัย และเป็นหัวใจของระบบที่เชื่อถือได้

N+1 Query: ปัญหายอดฮิตที่ทำให้ระบบช้าโดยไม่รู้ตัว
หน้าจอที่แสดงรายการ 100 รายการ อาจยิงคำขอไปฐานข้อมูลถึง 101 ครั้งโดยไม่จำเป็น นี่คือปัญหา N+1 Query ที่พบบ่อยมาก ฟังดูเล็กแต่ทำให้ระบบช้าลงหลายเท่า

Uptime Monitoring คืออะไร: รู้ว่าเว็บล่มก่อนลูกค้าโทรมาบอก
เว็บหรือระบบล่มตอนกลางคืนหรือช่วงที่ไม่มีใครดู อาจไม่มีใครรู้จนลูกค้าบ่นหรือยอดขายหาย Uptime monitoring คือระบบที่คอยเช็กว่าเว็บและระบบยังทำงานอยู่ตลอดเวลา และแจ้งเตือนทันทีที่ล่ม เพื่อให้แก้ได้ก่อนความเสียหายลาม
