PlusMagi's Blog By Pitt Phunsanit Database Test PlusMagi Blocks: PlantUML

Test PlusMagi Blocks: PlantUML

ในฐานะ System Architect การออกแบบระบบที่ซับซ้อนจำเป็นต้องมีการทำแผนภาพสถาปัตยกรรม (Architecture Diagram) อย่างชัดเจน เครื่องมืออย่าง PlantUML จึงเป็นที่นิยมในการสร้างแผนภาพเหล่านี้ อย่างไรก็ตาม การพึ่งพาเครื่องมือภาพเพียงอย่างเดียวอาจทำให้การทดสอบตรรกะ (Logic) ของระบบเป็นไปได้ยาก

บทความนี้จะนำเสนอแนวทางระดับ Senior Architect ในการใช้พลังของ PostgreSQL เพื่อไม่เพียงแค่สร้างข้อมูลที่รองรับการแสดงผลแผนภาพเท่านั้น แต่ยังใช้ PostgreSQL ในการ ‘ทดสอบ’ ความสัมพันธ์และขั้นตอนการทำงาน (Flow) ที่ควรปรากฏในแผนภาพเหล่านั้นด้วย ทำให้เราได้ระบบที่ทั้งสวยงามทางภาพและแข็งแกร่งทางตรรกะ

การใช้ PostgreSQL จำลองความสัมพันธ์เชิงสถาปัตยกรรม

แทนที่จะใช้ PlantUML เพื่อวาดความสัมพันธ์ (เช่น Sequence หรือ Use Case) เพียงอย่างเดียว เราสามารถใช้ PostgreSQL ในการกำหนดโครงสร้างความสัมพันธ์เหล่านั้นในรูปแบบของข้อมูล (Data Model) ซึ่งเป็นหลักการที่เรียกว่า Data-Driven Architecture Modeling

เราจะใช้ตารางเพื่อจำลองส่วนประกอบ (Components) และใช้ฟังก์ชันหรือ Common Table Expressions (CTE) เพื่อจำลองการไหลของข้อมูล (Flow) หรือขั้นตอนการสื่อสาร (Interaction) ซึ่งเป็นหัวใจสำคัญของแผนภาพประเภท Sequence Diagram

ตัวอย่างการสร้างแบบจำลองความสัมพันธ์ด้วย PostgreSQL

สมมติว่าเราต้องการจำลองปฏิสัมพันธ์ระหว่าง ‘User’ (ผู้ใช้), ‘API Gateway’, และ ‘Database Service’ ซึ่งเป็นองค์ประกอบหลักในแผนภาพ Sequence Diagram เราสามารถสร้างตารางเพื่อบันทึกลำดับการเรียกใช้ (Call Sequence) ได้ดังนี้:

SQL

-- 1. สร้างตารางเพื่อเก็บ Component และความสัมพันธ์ (Interaction) --
CREATE TABLE component_interaction (
    interaction_id SERIAL PRIMARY KEY,
    source_component VARCHAR(50) NOT NULL,
    target_component VARCHAR(50) NOT NULL,
    step_order INTEGER NOT NULL,
    action_description VARCHAR(255)
);

-- 2. ใส่ข้อมูลจำลองการเรียกใช้ (Simulating the Flow)
INSERT INTO component_interaction (source_component, target_component, step_order, action_description) VALUES
('User', 'API Gateway', 1, 'Authentication Request'),
('API Gateway', 'Database Service', 2, 'Query Execution'),
('Database Service', 'API Gateway', 3, 'Return Data');

-- 3. การ Query เพื่อจำลองการไหลของขั้นตอน (Testing the Flow)
SELECT 
    source_component, 
    target_component, 
    step_order, 
    action_description
FROM component_interaction
ORDER BY step_order;

การใช้คำสั่ง SQL นี้ทำให้เราสามารถ:

  • ตรวจสอบความสมบูรณ์ของข้อมูล (Data Integrity): หากขั้นตอนใดขาดหายไป (เช่น ไม่มีแถวที่ 2) ระบบจะแจ้งเตือนทันที
  • จำลองการเปลี่ยนแปลง (Version Control): สามารถใช้ `UPDATE` หรือ `DELETE` เพื่อจำลองการเปลี่ยนแปลงของขั้นตอนในสถาปัตยกรรมได้ง่ายกว่าการแก้ไขรูปภาพ
  • สร้างรายงาน (Reporting): สามารถดึงข้อมูลความสัมพันธ์ทั้งหมดเพื่อสร้างเอกสารประกอบสถาปัตยกรรมที่อัปเดตได้ตลอดเวลา

บทสรุป: การผสานพลังของ Data และ Diagram

การผสานรวม PostgreSQL เข้ากับการออกแบบสถาปัตยกรรมที่เคยใช้ PlantUML เป็นเครื่องมือหลัก ถือเป็นการยกระดับการออกแบบจากงานศิลปะ (Art) ให้เป็นงานวิศวกรรม (Engineering) อย่างแท้จริง การใช้ฐานข้อมูลเป็นแหล่งความจริง (Single Source of Truth) สำหรับความสัมพันธ์ของระบบ ทำให้มั่นใจได้ว่าแผนภาพสถาปัตยกรรมที่สร้างขึ้นนั้น ไม่เพียงแค่สวยงาม แต่ยังถูกต้องตามตรรกะทางธุรกิจและพร้อมสำหรับการทดสอบในระดับ Production เสมอ