Log-Based Architecture คืออะไร?


Log-Based Architecture คืออะไร?

Log-Based Architecture คือการออกแบบระบบโดยบันทึกเหตุการณ์หรือการเปลี่ยนแปลงของข้อมูลลงใน Log ตามลำดับ แล้วให้ระบบอื่นอ่านข้อมูลเหล่านั้นไปประมวลผลต่อได้

แนวคิดสำคัญคือ Log ไม่ได้เป็นเพียงไฟล์บันทึกข้อผิดพลาด แต่สามารถเป็นโครงสร้างพื้นฐานสำหรับการเชื่อมต่อระบบ การกระจายข้อมูล และการประมวลผลแบบ Real-time ได้ 

1. หลักการทำงาน

ตัวอย่างระบบสั่งซื้อสินค้าออนไลน์

Customer

   |

   v

Order Service

   |

   v

Event Log

   |

   +----> Payment Service

   |

   +----> Inventory Service

   |

   +----> Notification Service

   |

   +----> Analytics Service

เมื่อมีลูกค้าสั่งซื้อสินค้า ระบบจะบันทึกเหตุการณ์ เช่น OrderCreated ลงใน Log จากนั้นบริการต่าง ๆ สามารถอ่านเหตุการณ์ดังกล่าวไปทำงานตามหน้าที่ของตนได้

ตัวอย่างข้อมูลใน Log:

{

  "event_id": "evt_001",

  "event_type": "OrderCreated",

  "order_id": "ORD-1001",

  "customer_id": "CUS-001",

  "amount": 1500,

  "timestamp": "2026-10-14T12:00:00Z"

}

Payment Service นำข้อมูลไปดำเนินการชำระเงิน ส่วน Inventory Service ตรวจสอบและปรับปรุงสต็อกสินค้า

2. องค์ประกอบสำคัญ

องค์ประกอบ

หน้าที่

Event Producer

สร้างเหตุการณ์

Event Log

จัดเก็บเหตุการณ์ตามลำดับ

Event Consumer

อ่านเหตุการณ์ไปประมวลผล

Offset

ระบุตำแหน่งที่ Consumer อ่านข้อมูลถึง

Partition

แบ่งข้อมูลเพื่อรองรับการประมวลผลแบบขนาน

Retention

กำหนดระยะเวลาหรือเงื่อนไขการเก็บข้อมูล

Replay

อ่านเหตุการณ์เก่าเพื่อประมวลผลใหม่

3. เทคโนโลยีที่เกี่ยวข้อง

เทคโนโลยี

การใช้งาน

Apache Kafka

Event Streaming และ Distributed Log

Apache Pulsar

Messaging และ Event Streaming

Apache Spark

ประมวลผลข้อมูลแบบกระจาย

Apache Flink

ประมวลผลข้อมูลแบบ Stream

PostgreSQL

จัดเก็บข้อมูลและ Transaction Log

Grafana

แสดงผล Monitoring และ Observability

4. Log-Based Architecture ต่างจากการทำงานแบบเดิมอย่างไร?

หัวข้อ

Traditional Architecture

Log-Based Architecture

การส่งข้อมูล

ระบบเรียกใช้กันโดยตรง

ระบบอ่านเหตุการณ์จาก Log

การเชื่อมต่อ

อาจมีการพึ่งพากันสูง

แยก Producer และ Consumer ออกจากกันได้

การประมวลผล

มักผูกกับการเรียกใช้บริการ

รองรับการประมวลผลแบบ Asynchronous

การประมวลผลย้อนหลัง

ขึ้นกับการเก็บข้อมูลต้นทาง

Replay ได้หาก Log ยังเก็บข้อมูลไว้

การขยายระบบ

ต้องพิจารณาความสัมพันธ์ระหว่างบริการ

เพิ่ม Consumer ได้ตามรูปแบบการออกแบบ

Real-time

ทำได้

รองรับได้ดีเมื่อออกแบบระบบเหมาะสม

ทั้งนี้ Log-Based Architecture ไม่ได้ทำให้ระบบเป็น Real-time โดยอัตโนมัติ เพราะยังขึ้นอยู่กับความหน่วงของการส่งข้อมูล การประมวลผล และการจัดการคิวด้วย

5. ข้อดีและข้อจำกัด

ข้อดี

  • ลดการพึ่งพากันโดยตรงระหว่างบริการ
  • รองรับการกระจายข้อมูลไปหลายระบบ
  • รองรับ Event-Driven Architecture
  • สามารถประมวลผลข้อมูลย้อนหลังได้
  • เหมาะกับ Data Pipeline และระบบวิเคราะห์ข้อมูล

ข้อจำกัด

  • ต้องจัดการข้อมูลซ้ำและการประมวลผลซ้ำ
  • ต้องออกแบบการจัดลำดับเหตุการณ์ให้เหมาะสม
  • ต้องบริหารพื้นที่จัดเก็บและระยะเวลาเก็บ Log
  • ต้องจัดการความล้มเหลวและความล่าช้าของ Consumer
  • การรับประกันลำดับข้อมูลและความสอดคล้องของข้อมูลต้องออกแบบให้ถูกต้อง

สรุป

Log-Based Architecture เป็นแนวคิดสำคัญสำหรับการสร้างระบบกระจายศูนย์และระบบข้อมูลสมัยใหม่ โดยเฉพาะเมื่อหลายบริการต้องใช้ข้อมูลเหตุการณ์ชุดเดียวกัน

หากต้องการศึกษาเพิ่มเติม แนะนำบทความ The Log: What every software engineer should know about real-time data's unifying abstraction⁠ ซึ่งอธิบายบทบาทของ Log ในระบบกระจายศูนย์และการประมวลผลข้อมูลแบบ Real-time

คุณต้องการศึกษา Log-Based Architecture ในระดับใดต่อไปครับ?

  1. Software Architecture — ออกแบบโครงสร้างระบบโดยใช้ Log เป็นแกนหลัก
  2. Data Engineering — สร้าง Data Pipeline ด้วย Kafka, Spark และ Flink
  3. Database Internals — ทำความเข้าใจ Write-Ahead Log (WAL), Commit Log และ Storage Engine
  4. AI Agent Architecture — ใช้ Log จัดเก็บประวัติการทำงานของ Agent, Tool Calls และ Workflow
  5. Research & Development — ศึกษาหลักการออกแบบ Log-Based Systems ในเชิงลึก

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

อะไรคือ NPU (Neural Processing Unit) มีความสำคัญอย่างไร แนวคิดมาจากไหน

TomCat สำหรับติดตั้ง แก้ไข คอนฟิก ใช้งาน JSP

Micro SaaS "ขนาดพอดีคำ" สร้างธุรกิจเริ่มต้นอย่างง่ายด่าย จากไอเดียสู่สร้างรายได้ โดยใช้ AI Agent ตอบสนองความต้องการซอฟต์แวร์ที่เล็ก ง่าย และทรงพลัง