top of page
ค้นหา

Hybrid ERP ตอน 4: เริ่มออกแบบจาก Event

  • รูปภาพนักเขียน: Sathit Jittanupat
    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

 
 
 

ความคิดเห็น


Post: Blog2_Post
  • Facebook

©2020 by Scraft On Cloud. Proudly created with Wix.com

bottom of page