Log-Based Architecture: จากพื้นฐานสู่ระบบ Production


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

1.1 ความหมายของ Log-Based Architecture

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

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

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

แนวคิดสำคัญคือ การแยกการสร้างเหตุการณ์ออกจากการประมวลผลเหตุการณ์ ทำให้แต่ละบริการสามารถทำงานแยกจากกันได้มากขึ้น

1.2 หลักการสำคัญ

Log-Based Architecture มีแนวคิดหลัก 5 ประการ

  1. Append-Only: เพิ่มข้อมูลต่อท้าย Log ตามรูปแบบที่ระบบกำหนด
  2. Ordered Events: จัดลำดับเหตุการณ์เพื่อให้ติดตามการเปลี่ยนแปลงได้
  3. Decoupling: แยกผู้สร้างข้อมูลออกจากผู้บริโภคข้อมูล
  4. Replayability: เปิดโอกาสให้อ่านเหตุการณ์เดิมซ้ำได้ หากข้อมูลยังถูกเก็บไว้
  5. Distributed Processing: กระจายเหตุการณ์ไปประมวลผลในหลายบริการหรือหลายเครื่องได้

อย่างไรก็ตาม ความสามารถเหล่านี้ขึ้นอยู่กับการออกแบบระบบ การตั้งค่าโครงสร้างพื้นฐาน และนโยบายการเก็บข้อมูล

1.3 ตัวอย่างการทำงาน

สมมติว่าแพลตฟอร์มอีคอมเมิร์ซมีลูกค้าสั่งซื้อสินค้า 1 รายการ

ลำดับการทำงานมีดังนี้

  1. ลูกค้าส่งคำสั่งซื้อ
  2. Order Service ตรวจสอบข้อมูลและบันทึกคำสั่งซื้อ
  3. ระบบเผยแพร่เหตุการณ์ OrderCreated
  4. Payment Service อ่านเหตุการณ์และดำเนินการชำระเงิน
  5. Inventory Service อ่านเหตุการณ์และดำเนินการเกี่ยวกับสต็อก
  6. Notification Service แจ้งสถานะให้ลูกค้าทราบ
  7. Analytics Service นำเหตุการณ์ไปวิเคราะห์ยอดขาย

แต่ละบริการสามารถอ่านเหตุการณ์เดียวกันไปดำเนินงานตามหน้าที่ของตน โดยไม่จำเป็นต้องให้ Order Service เรียกทุกบริการโดยตรง

ข้อควรระวังคือ การรับเหตุการณ์ OrderCreated ไม่ได้หมายความว่าการชำระเงินสำเร็จหรือสินค้าถูกตัดสต็อกแล้ว ระบบต้องออกแบบการติดตามสถานะและการจัดการข้อผิดพลาดเพิ่มเติม


 องค์ประกอบของ Log-Based Architecture

2.1 Producer

Producer คือระบบที่สร้างและส่งเหตุการณ์เข้าสู่ Log

ตัวอย่าง:

  • Order Service สร้าง OrderCreated
  • Payment Service สร้าง PaymentCompleted
  • Inventory Service สร้าง InventoryUpdated

2.2 Event Log

Event Log คือพื้นที่จัดเก็บเหตุการณ์ตามลำดับ โดยระบบอาจกำหนดการแบ่ง Partition การทำ Replication และระยะเวลาเก็บข้อมูล

ในระบบขนาดใหญ่สามารถใช้ Apache Kafka เป็น Distributed Event Log ได้

2.3 Consumer

Consumer คือระบบที่อ่านเหตุการณ์จาก Log แล้วนำไปประมวลผล

ตัวอย่างเช่น Analytics Service อ่านเหตุการณ์คำสั่งซื้อเพื่อคำนวณยอดขาย ส่วน Notification Service ใช้เหตุการณ์เพื่อส่งการแจ้งเตือน

2.4 Offset

Offset ใช้ระบุตำแหน่งของข้อมูลที่ Consumer อ่านใน Partition ของ Log

Offset ช่วยให้ Consumer ติดตามความคืบหน้าและกลับมาอ่านต่อได้ตามกลไกของระบบ แต่ไม่ได้รับประกันด้วยตัวเองว่าการประมวลผลจะไม่เกิดซ้ำ

2.5 Partition และ Replication

Partition ช่วยแบ่งข้อมูลออกเป็นส่วน ๆ เพื่อรองรับการประมวลผลแบบขนาน ส่วน Replication ช่วยเก็บสำเนาข้อมูลเพื่อเพิ่มความทนทานต่อความล้มเหลว

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


 Log-Based Architecture แตกต่างจาก Event-Driven Architecture อย่างไร?

แนวคิดทั้งสองมีความเกี่ยวข้องกัน แต่ไม่ใช่สิ่งเดียวกัน

Event-Driven Architecture (EDA) เป็นรูปแบบการออกแบบระบบที่ใช้เหตุการณ์เป็นตัวกระตุ้นการทำงาน

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

ระบบ Event-Driven สามารถใช้ Message Broker หรือกลไกอื่นที่ไม่ใช่ Distributed Log ได้ ขณะที่ Log-Based Architecture สามารถเป็นรากฐานหนึ่งของระบบ Event-Driven ได้เช่นกัน


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

เทคโนโลยี

บทบาท

Apache Kafka

จัดเก็บและกระจาย Event Stream

Apache Pulsar

Messaging และ Event Streaming

PostgreSQL WAL

บันทึกการเปลี่ยนแปลงเพื่อรองรับความทนทานและการกู้คืนฐานข้อมูล

Debezium

จับการเปลี่ยนแปลงจากฐานข้อมูลผ่าน CDC

Apache Flink

ประมวลผล Stream

Apache Spark

ประมวลผลข้อมูลแบบกระจาย รวมถึงงาน Batch และ Streaming

Grafana

แสดงผล Metrics และข้อมูล Observability

เทคโนโลยีเหล่านี้มีหน้าที่แตกต่างกัน จึงไม่ควรนำมาเปรียบเทียบว่าเป็นเครื่องมือประเภทเดียวกันทั้งหมด

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

ข้อดี

  • ลดการพึ่งพากันโดยตรงระหว่างบริการ
  • รองรับการส่งข้อมูลไปยังผู้บริโภคหลายกลุ่ม
  • รองรับการประมวลผลแบบ Asynchronous
  • สามารถนำข้อมูลเก่ากลับมาประมวลผลได้เมื่อยังมีข้อมูลอยู่
  • สนับสนุนระบบ Data Pipeline และ Real-Time Analytics

ข้อจำกัด

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

บทสรุป

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

การเข้าใจหลักการของ Producer, Event Log, Consumer, Offset, Partition และ Replay จะช่วยให้สามารถต่อยอดไปสู่การออกแบบ Distributed Systems, Data Engineering Platform และ AI Agent Infrastructure ได้

ลำดับบทความถัดไปที่แนะนำ

ลำดับ

หัวข้อ

สิ่งที่จะได้เรียนรู้

1

Log-Based Architecture Fundamentals

หลักการและองค์ประกอบพื้นฐาน

2

Append-Only Log Engineering

การจัดเก็บข้อมูลแบบเพิ่มต่อท้าย

3

Distributed Log Internals

Partition, Replication และ Offset

4

Apache Kafka Architecture

โครงสร้างภายในและการทำงานของ Kafka

5

Event Sourcing

การสร้างสถานะจากเหตุการณ์

6

Change Data Capture

การส่งต่อการเปลี่ยนแปลงจากฐานข้อมูล

7

Stream Processing

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

8

Log-Based Data Engineering

การสร้าง Data Pipeline

9

Log-Based AI Agent Architecture

การติดตามเหตุการณ์และ Workflow ของ AI Agent

10

Production Architecture

การออกแบบระบบให้พร้อมใช้งานจริง

ความคิดเห็น

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

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

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

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