top of page
ค้นหา

Hybrid ERP ตอน 6: Design Pattern

  • รูปภาพนักเขียน: Sathit Jittanupat
    Sathit Jittanupat
  • 17 ม.ค.
  • ยาว 1 นาที

Design Pattern สำหรับ Hybrid ERP: สิ่งที่ผมใช้จริง และสิ่งที่ผมเลี่ยง




หลังจากผมเปลี่ยนวิธีคิด

จาก ออกแบบ ERP จาก ledger


มาเป็น ออกแบบ ERP จาก event ที่ผู้ใช้เรียกว่า "เอกสาร"


คำถามที่ผมเจอบ่อยที่สุดจากทีมพัฒนาคือ

"สรุปแล้ว เราควรออกแบบระบบยังไงดี"

ผมไม่มีคำตอบสำเร็จรูป

แต่ผมมี pattern ที่ค่อย ๆ ก่อตัวขึ้นจากระบบที่ใช้งานจริง


และที่สำคัญพอ ๆ กัน

คือ anti-pattern ที่ผมไม่อยากกลับไปเจออีก



Pattern ที่ 1: Document-as-Event


เอกสารไม่ใช่ผลลัพธ์ แต่คือความจริง


ผมเลิกมองเอกสารว่าเป็น output เพื่อพิมพ์หรือส่งบัญชี


แต่เริ่มมองว่า ทุกเอกสารคือ event หนึ่งในชีวิตของธุรกิจ


เงื่อนไขสำคัญของ pattern นี้คือ

  • เอกสารต้อง immutable หลัง confirm

  • การแก้ไขคือการสร้างเอกสารใหม่

  • เอกสารต้องบอกได้ว่า "ใคร ทำอะไร เมื่อไหร่"


ถ้าเอกสารยังแก้ทับได้เรื่อย ๆ

มันยังไม่ใช่ event



Pattern ที่ 2: Flow-Based Stock


อย่าคุม stock ด้วยยอดรวม


แทนที่จะมี stock balance เดียว

ผมออกแบบให้ stock ถูกแยกตาม flow label


  • แต่ละ transaction ระบุ from-flow → to-flow

  • แต่ละ flow มียอดคงเหลือของตัวเอง

  • การย้ายสถานะ = การไหล ไม่ใช่การแก้ค่า


ผลที่ได้คือ


  • นิยาม "พร้อมขาย" ได้ชัด

  • ลด logic ซ้อนใน report

  • Debug ได้จากการไหล ไม่ใช่จากผลรวม



Pattern ที่ 3: Single Source of Event, Multiple Read Models


เขียนครั้งเดียว อ่านหลายแบบ


ผมยอมลงทุนกับ event ให้ชัด

แล้วปล่อยให้ระบบอื่น ๆ

"อ่านและเล่าเรื่อง" จาก event ชุดเดียวกัน


  • Realtime stock อ่านเพื่อความเร็ว

  • Daily stock อ่านเพื่อความนิ่ง

  • Ledger อ่านเพื่อการปิดงบ

  • Dashboard อ่านเพื่อการตัดสินใจ


ไม่มีใครแก้ event

ทุกคนตีความมันในบริบทของตัวเอง



Pattern ที่ 4: Event First, Accounting Later


อย่ารีบลงบัญชี


ทุกครั้งที่ผมพยายาม

map event → accounting ทันที

ผมมักจะเจอปัญหาเมื่อโลกจริงไม่ตรงตามตำรา


สิ่งที่ผมเลือกทำคือ


  • บันทึก event ให้ครบก่อน

  • ปล่อยให้ accounting เป็น consumer หนึ่ง

  • ยอมรับว่าบาง event อาจยังไม่ "ลงบัญชี" ทันที


บัญชีได้ความถูกต้อง

ระบบได้ความยืดหยุ่น



Pattern ที่ 5: Explicit Document Flow


ความสัมพันธ์ต้องถูกบันทึก ไม่ใช่เดา


เอกสารในระบบของผม

ไม่ควรถูกปล่อยให้ลอยเดี่ยว


  • ใบจัดส่ง ต้องรู้ว่าอ้างถึงใบไหน

  • ใบรับคืน ต้องรู้ว่าคืนจากเหตุการณ์ใด

  • ใบปรับปรุง ต้องรู้ว่าปรับเพราะอะไร


เมื่อเอกสารเชื่อมกัน

audit trail จะเกิดขึ้นเอง

โดยไม่ต้องสร้าง report พิเศษ



สิ่งที่ผม "เลี่ยง" อย่างตั้งใจ


Anti-pattern 1: Smart Balance Table


ตารางยอดคงเหลือที่


  • update หลายจุด

  • มี logic ซ่อน

  • ไม่มีที่มาที่ไป


มันเร็วในช่วงแรก

แต่จะทำให้คุณไม่รู้ว่า

ตัวเลขนั้นเกิดจากอะไร



Anti-pattern 2: Editable History


การอนุญาตให้

แก้เอกสารย้อนหลัง

เพื่อให้ตัวเลข "ดูดี"


ผมเคยทำ

และผมเสียใจทุกครั้งที่ต้อง debug


ถ้าความจริงเปลี่ยน

ให้บันทึกความจริงใหม่

อย่าลบความจริงเก่า



Anti-pattern 3: One Report to Rule Them All


รายงานเดียว

พยายามตอบทุกฝ่าย


สุดท้ายจะไม่มีใครเชื่อมัน

เพราะมันไม่พูดภาษาใครเลย



สิ่งที่ผมได้เรียนรู้จากการใช้ pattern เหล่านี้


Hybrid ERP

ไม่ใช่เรื่องของเทคโนโลยี

แต่เป็นเรื่องของ


การเคารพความจริงหลายมิติของธุรกิจ

ถ้าคุณออกแบบระบบ

ที่

  • เหตุการณ์ถูกบันทึกชัด

  • ความรับผิดชอบถูกแยก

  • การสรุปถูกเลื่อนเวลาอย่างมีสติ


ระบบจะไม่ต้องฉลาดมาก

แต่จะ ซื่อสัตย์ กับสิ่งที่เกิดขึ้น



ตอนถัดไป (ตอนสุดท้าย)


ตอนที่ 7: สิ่งที่ผมน่าจะรู้ตั้งแต่วันแรกที่เริ่มเขียน ERP


ผมจะสรุปซีรีส์นี้

ด้วยบทเรียนแบบไม่เทคนิค

แต่กระทบวิธีคิดของคนพัฒนาระบบระยะยาว


 
 
 

ความคิดเห็น


Post: Blog2_Post
  • Facebook

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

bottom of page