Hybrid ERP ตอน 4: เริ่มออกแบบจาก Event
- Sathit Jittanupat
- 6 วันที่ผ่านมา
- ยาว 1 นาที
วันที่ผมเลิกเริ่มออกแบบ ERP จาก Ledger และหันมาเริ่มจาก Event

หลังจากผมแยก
Realtime stock
Daily stock
และเพิ่มแนวคิดเรื่อง flow label เข้าไปใน transaction
ระบบ Inventory ของผมเริ่ม "ตอบคำถามได้ตรงคำถาม" มากขึ้น
แต่ปัญหาใหม่ก็เริ่มโผล่มา
ปัญหาที่ไม่ได้อยู่แค่ใน IC
แต่มันลากไปทั้งระบบ ERP
จุดที่ผมเริ่มอึดอัดกับ Ledger
ทุกครั้งที่ผมออกแบบรายงานบัญชี
หรือ logic ปิดงวด
ผมต้องย้อนกลับไปถามตัวเองเสมอว่า
"ยอดนี้ควรไปลงบัญชีอะไร"
ซึ่งฟังดูปกติมาก
เพราะ ERP ส่วนใหญ่ก็เริ่มจากตรงนี้
แต่ยิ่งทำไป
ผมยิ่งรู้สึกว่า
ผมกำลังใช้ Ledger เป็นศูนย์กลางของความจริง
ทั้งที่ความจริงมันเกิดขึ้น ก่อน ledger เสมอ
Ledger ไม่ได้โกหก แต่มันมาช้า
Ledger เก่งมากในสิ่งหนึ่ง
คือ
สรุป
รวม
ตรวจสอบย้อนหลัง
แต่ ledger ไม่เคยเล่าว่า
"อะไรเกิดขึ้นก่อน อะไรเกิดขึ้นหลัง" "เหตุการณ์นี้เกิดจากอะไร"
มันบอกได้แค่ว่า
สุดท้ายแล้ว
ตัวเลขไปอยู่ตรงไหน
และนั่นเริ่มเป็นปัญหา
ในระบบที่ผมอยากให้ตอบคำถามแบบ realtime
ปัญหาที่ Ledger แก้ไม่ได้ในชีวิตจริง
ผมเจอเหตุการณ์แบบนี้บ่อยมาก
ของถูกจัดส่งไปแล้ว
แต่ invoice ยังไม่มา
ของถูกขายก่อน
แล้วค่อยรับของทีหลัง
เอกสารจากภายนอก
มาช้ากว่าเหตุการณ์จริงหน้างาน
ถ้าผมยึด ledger เป็นหลัก
ผมต้องเลือกอย่างใดอย่างหนึ่งเสมอ
ระหว่าง
ความถูกต้องทางบัญชี กับ ความจริงที่เกิดขึ้นในธุรกิจ
และผมไม่อยากเลือก
วันที่ผมเริ่มตั้งคำถามใหม่
แทนที่จะถามว่า
"รายการนี้จะลงบัญชีอะไร"
ผมเริ่มถามว่า
"เหตุการณ์นี้คืออะไร"
นี่คือการยืนยันขาย
นี่คือการจัดส่ง
นี่คือการรับของจริง
นี่คือการคืนสินค้า
และผมเริ่มออกแบบระบบจาก Event เหล่านี้
ไม่ใช่จากผลลัพธ์ทางบัญชีของมัน
Event-Driven ERP ในแบบที่ผมเข้าใจ
สำหรับผม
Event ไม่ใช่ buzzword
และไม่ใช่เรื่อง message queue
Event คือ
บันทึกความจริงว่า อะไรเกิดขึ้น โดยไม่รีบตัดสินว่า มันควรถูกสรุปอย่างไร
Transaction ในระบบของผม
จึงไม่ใช่ "รายการบัญชี"
แต่เป็น
บันทึกเหตุการณ์ทางธุรกิจที่มีความหมาย
เช่น
SalesConfirmed
GoodsAllocated
GoodsShipped
GoodsReturned
Ledger กลายเป็น "ผลลัพธ์"
ไม่ใช่ "จุดเริ่มต้น"
วันที่ Realtime Stock กับ Ledger เลิกทะเลาะกัน
เมื่อผมเปลี่ยนมุมคิดเป็น event-driven
สิ่งหนึ่งที่เกิดขึ้นแบบไม่คาดคิดคือ
Realtime stock
กับ
Daily stock / Ledger
เริ่มอยู่ร่วมกันได้
เพราะทั้งสองฝั่ง
อ่าน event ชุดเดียวกัน
แต่ตีความคนละแบบ
Realtime stock สนใจ ทันที
Ledger สนใจ ความครบถ้วนและงวดเวลา
ไม่มีใครต้องชนะใคร
เพราะไม่มีใครแย่งบทบาทกันอีก
บทเรียนสำคัญที่ผมได้
ผมไม่ได้เลิกใช้ ledger
และผมไม่ได้ดูถูกบัญชี
แต่ผมเลิก "ออกแบบจากบัญชี"
เพราะในโลกของ ERP
ธุรกิจไม่ได้เกิดขึ้นเพื่อให้ ledger สมดุล ledger เกิดขึ้นเพื่ออธิบายธุรกิจ
เมื่อผมยอมรับตรงนี้
สถาปัตยกรรมทั้งระบบ
เริ่มเรียงตัวเองใหม่
สัญญาณเตือนสำหรับคนออกแบบ ERP
ถ้าคุณเจออาการเหล่านี้
ต้องมี flag แปลก ๆ เพื่อ reconcile ย้อนหลัง
ต้องมี report พิเศษอธิบาย report อีกที
ต้องแก้ logic เพราะ "เอกสารมาช้า"
อาจไม่ใช่เพราะผู้ใช้ทำงานผิด
แต่อาจเป็นเพราะ
คุณกำลังเริ่มออกแบบจากจุดที่มาช้าเกินไป
ตอนถัดไป
ตอนที่ 5: Hybrid ERP Architecture - อยู่กึ่งกลางอย่างมีสติ
ผมจะเล่าต่อว่า
ทำไมผมไม่เลือกสุดโต่งไปทาง
Event-Driven 100%
และทำไม ERP ในโลกจริง
จำเป็นต้องอยู่กึ่งกลาง
ระหว่าง Event กับ Ledger



ความคิดเห็น