PlusMagi's Blog By Pitt Phunsanit Cloud Computing,Database CI/CD: build java ใน Workspace

CI/CD: build java ใน Workspace

ในโลกของการพัฒนาซอฟต์แวร์สมัยใหม่ การที่แอปพลิเคชันจะทำงานได้อย่างเสถียรนั้น ไม่ได้ขึ้นอยู่กับโค้ดภาษาใดภาษาหนึ่งเท่านั้น แต่รวมถึงโครงสร้างของฐานข้อมูล (Database Schema) ด้วย การนำหลักการ Continuous Integration/Continuous Deployment (CI/CD) มาใช้กับฐานข้อมูลจึงเป็นสิ่งจำเป็นอย่างยิ่ง และเมื่อพูดถึงระบบฐานข้อมูลที่ทรงพลังอย่าง PostgreSQL การทำ Database as Code (DB as Code) คือหัวใจสำคัญของการพัฒนาที่ทันสมัย

🎯 CI/CD สำหรับ PostgreSQL: หลักการทำงานของ Database Migration

แทนที่จะปล่อยให้การเปลี่ยนแปลงโครงสร้างฐานข้อมูล (Schema) ถูกทำด้วยมือ (Manual) ซึ่งเสี่ยงต่อข้อผิดพลาดสูง เราต้องทำให้กระบวนการนี้เป็นไปโดยอัตโนมัติ การทำ CI/CD สำหรับ PostgreSQL คือการกำหนดให้ทุกการเปลี่ยนแปลงของ Schema หรือข้อมูลต้องถูกบันทึกในระบบ Version Control (เช่น Git) และมี Pipeline ที่พร้อมจะตรวจสอบ (Test) และนำไปใช้ (Deploy) ในสภาพแวดล้อมต่างๆ อย่างเป็นระบบ

ในทางปฏิบัติ ระบบ CI/CD จะรับผิดชอบในการรัน Migration Scripts ที่เป็นภาษา SQL ของ PostgreSQL โดยมีขั้นตอนหลักๆ คือ:

  1. Validation: ตรวจสอบว่า Script ใหม่สามารถรันได้โดยไม่มีข้อผิดพลาดทางไวยากรณ์
  2. Testing: รัน Script ในสภาพแวดล้อมจำลอง (Staging) เพื่อตรวจสอบผลกระทบต่อข้อมูลเดิม
  3. Deployment: หากผ่านการทดสอบทั้งหมด Script จะถูกรันเพื่ออัปเดต Schema ใน Production

💡 ตัวอย่างการใช้ PostgreSQL Function ใน Pipeline

สมมติว่าเราต้องการให้ Pipeline ของเราสามารถตรวจสอบและประมวลผลรายการข้อมูลที่ถูกส่งมาเป็นชุด (Batch Processing) โดยใช้ฟังก์ชันที่เขียนด้วย PostgreSQL เอง เพื่อจำลองการตรวจสอบความถูกต้องของข้อมูลก่อนการนำเข้า (Ingestion) นี่คือตัวอย่างการใช้ฟังก์ชันที่รับค่า CSV และทำการตรวจสอบความสมบูรณ์ของข้อมูล:

SQL

-- Migration Script: validate_data_batch.sql

-- สร้างฟังก์ชันเพื่อตรวจสอบรายการข้อมูลที่คั่นด้วย comma
CREATE OR REPLACE FUNCTION validate_data_batch(input_csv TEXT) RETURNS BOOLEAN AS $$
BEGIN
    -- แยกค่าและตรวจสอบว่ามีองค์ประกอบครบถ้วนหรือไม่
    IF input_csv LIKE '%,%' THEN
        -- ตัวอย่างการตรวจสอบข้อมูล: ต้องมี 3 ส่วนเสมอ
        SELECT count(regexp_split_to_table(input_csv, ',')) >= 3 INTO STRICT;
        RETURN TRUE;
    ELSE
        RAISE EXCEPTION 'Input data must contain at least 3 comma-separated values.';
    END IF;
END;
$$ LANGUAGE plpgsql;

-- ตัวอย่างการเรียกใช้ฟังก์ชันใน Pipeline
SELECT validate_data_batch('apple,banana,orange');

-- ตัวอย่างข้อมูลที่ไม่ถูกต้อง (จะทำให้เกิด Error ใน Pipeline)
-- SELECT validate_data_batch('apple,banana');

เมื่อ Pipeline รันคำสั่งนี้ หากข้อมูลมีรูปแบบถูกต้อง (เช่น ‘apple,banana,orange’) การ Migration ก็จะถือว่าสำเร็จและสามารถดำเนินการต่อได้ หากข้อมูลผิดพลาด (เช่น ‘apple,banana’) ระบบจะหยุดการทำงานและแจ้งเตือนให้แก้ไขทันที

✅ บทสรุป: การสร้างความมั่นใจด้วย Automation

การผสานรวมหลักการ CI/CD เข้ากับการจัดการ PostgreSQL Schema ไม่ใช่แค่ทางเลือก แต่คือมาตรฐานที่จำเป็นสำหรับระบบที่ต้องการความน่าเชื่อถือสูง การใช้เครื่องมือ Migration เฉพาะทาง (เช่น Flyway หรือ Liquibase) ควบคู่ไปกับการเขียน SQL ที่เป็นฟังก์ชันและมีการตรวจสอบความถูกต้องอย่างเข้มงวด จะช่วยให้ทีมพัฒนาสามารถ Deploy ฐานข้อมูลได้อย่างรวดเร็ว ปลอดภัย และลดความเสี่ยงของ Human Error ได้อย่างสมบูรณ์

Exit mobile version