Case Study: Event Streaming Backbone — เมื่อข้อมูลโรงงานอาหาร 3 ไซต์ ไหลเร็วกว่าสินค้าขึ้นหน้าร้าน
โจทย์: โรงงานอาหาร 3 ไซต์ ที่ข้อมูลเดินทางช้ากว่าสินค้า ลองนึกภาพโรงงานอาหารกลางในภาคตะวันออก ผลิตของว่างบรรจุถุงส่งให้ร้านค้าปลีกทั่วประเทศ มี 3 ไซต์ผลิต แต่ละไซต์มีสายการผลิต 4–6 ไลน์ ปัญหาที่ฝ่ายผู้อำนวยการเล่าให้ฟังตอนเริ่มโครงการคือ — "ตอนสินค้าถึงมือหน้าร้าน ข้อมูลการผลิตยังไปไม่ถึงโต๊ะผม" รายงาน OEE รายไลน์ต้องรอรวบรวมถึงเช้าวันถัดไป ส่วนข้อมูล lot ที่ถูกเรียกคืน (recall) ต้องใช้เวลานานหลายชั่วโมงในการไล่หาว่าวัตถุดิบก้อนไหนเข้าสายการผลิตไหน สายการผลิตอาหารบรรจุพร้อมส่ง — สินค้าออกจากไลน์เร็วกว่าข้อมูลขึ้นรายงานหลายชั่วโมง (ภาพ: Wikimedia Commons) เมื่อไล่ปัญหาลึกลงไป เจอรากที่แท้จริง 3 ข้อ: Point-to-Point เต็มระบบ — MES ดึงข้อมูลจาก SCADA ทุกไลน์ด้วย interface เฉพาะ 6 ชุด, ระบบคลังดึงจาก MES อีกชุด, ฝ่ายพลังงานต่อมิเตอร์แบบแยกเดียว รวมแล้ว interface ที่ต้องดูแลเกือบ 20 จุด แก้ทีไรกระทบลูกโซ่ทุกครั้ง รูปแบบข้อมูลไม่เหมือนกัน — แต่ละไซต์ตั้งชื่อ tag ตามใจ integrator ที่ติดตั้งปีไหนปีนั้น คำว่า "อุณหภูมิห้องเย็น" มีถึง 4 ชื่อต่างกันข้ามไซต์ ข้อมูลถึงสาย แต่ไม่มีใครกล้าใช้ — เพราะไม่มีใครรับประกันว่าค่าที่เห็นบน dashboard เป็นค่าปัจจุบันหรือค่าค้างจากอุปกรณ์ที่หลุดไปแล้ว ทางออก: วาง Event Streaming Backbone พร้อม Event Carried State Transfer ทีม integrator เสนอแนวทางที่ไม่ใช่การซื้อ "อีกระบบนึงมาต่อพ่วง" แต่เป็นการวาง แกนกลางกระจายเหตุการณ์ (Event Streaming Backbone) ให้ทั้ง 3 ไซต์ โดยออกแบบตามแนวคิด Event Carried State Transfer — ทุกเหตุการณ์สำคัญบนสายการผลิต (เปลี่ยนรุ่นผลิต, หยุดไลน์, ผลิตครบ lot, อ่านค่า QC ผ่าน/ไม่ผ่าน) จะถูกแปลงเป็น "เหตุการณ์" ที่พกสถานะล่าสุดของตัวเองมาด้วยเสมอ เหตุการณ์ (Event) คือบันทึกที่เปลี่ยนแปลงไม่ได้ (immutable record) ว่า "เกิดอะไรขึ้น" ประกอบด้วย key ที่ระบุตัวตน, value ที่เก็บข้อมูลจริง, และ timestamp บอกเวลาที่เกิดเหตุการณ์ — นิยามตามเอกสารของ…









