เมื่อวิศวกรมองคำว่า ตรวจหวยผลสลากกินแบ่งรัฐบาลงวด พวกเขาไม่ได้เห็นแค่หน้าเว็บที่แสดงตัวเลขหกหลักสองครั้งต่อเดือน แต่เห็นระบบอ่านข้อมูลหนัก (read-heavy) ที่ต้องรักษาความถูกต้องระดับ 100% ภายใต้ทราฟฟิกที่พุ่งพรวดในช่วงเวลาไม่กี่นาทีหลังประกาศผล
ระบบตรวจหวยผลสลากกินแบ่งรัฐบาลงวดที่ดีไม่ใช่แค่ query ฐานข้อมูล แต่คือการออกแบบ distributed system ที่ต้องยอมรับความจริงว่าผลลัพธ์จาก unit of work หนึ่งชุดถูกอ่านหลายล้านครั้งใน 5 นาทีแรกหลังประกาศผล
ในบริบทของสำนักงานสลากกินแบ่งรัฐบาลไทย การออกรางวัลเกิดขึ้นเดือนละสองครั้ง งวดวันที่ 1 และ 16 ของทุกเดือน ผู้ใช้ส่วนใหญ่เปิดมือถือเพื่อตรวจผลพร้อมกันมหาศาล หน้าจอต้องแสดงผลเร็ว ข้อมูลต้องตรงกับประกาศทางการ และระบบต้องไม่ล่มเมื่อมีคนเข้าใช้งานพร้อมกันหลักล้าน คำถามเชิงวิศวกรรมจึงไม่ใช่ว่า "จะดึงข้อมูลจากตารางไหน" แต่เป็น "เราจะออกแบบ pipeline ที่รับข้อมูลจากแหล่งอ้างอิง ตรวจสอบความถูกต้อง แล้วกระจายไปยังผู้ใช้หลายล้านคนอย่างไรโดยไม่ทำลายความเชื่อมั่น" บทความนี้จะแยกส่วนปัญหาผ่านมุมมอง platform engineering, data engineering และ security
โจทย์เชิงวิศวกรรมของระบบตรวจหวยผลสลากกินแบ่งรัฐบาลงวด
ผลสลากกินแบ่งรัฐบาลมีโครงสร้างข้อมูลเฉพาะ เช่น รางวัลที่ 1 ตัวเลข 6 หลัก เลขหน้า 3 ตัว เลขท้าย 3 ตัว และเลขท้าย 2 ตัว ข้อมูลเหล่านี้มีขนาดเล็กมากเมื่อเทียบกับระบบ e-commerce หรือ social media แต่ปัญหาไม่ได้อยู่ที่ขนาดข้อมูล แต่อยู่ที่ burst traffic ที่ทวีคูณผิดปกติในช่วง 15:00-16:00 ของวันออกรางวัล
ในการออกแบบ production เราเคยวัดอัตราส่วน request ต่อนาทีของ API ตรวจหวยผลสลากกินแบ่งรัฐบาลงวดพบว่าเพิ่มขึ้นจากหลักสิบ request ต่อนาทีเป็นหลักแสน request ต่อนาทีภายในเวลาไม่ถึง 60 วินาที ระบบที่ใช้ architecture แบบ