PlusMagi's Blog By Pitt Phunsanit Backend Serverless / Function-as-a-Service (FaaS)

Serverless / Function-as-a-Service (FaaS)

ในยุคของการพัฒนาแอปพลิเคชันที่ต้องการความยืดหยุ่นและขยายขนาดได้อย่างรวดเร็ว (Scalability) แนวคิด Serverless Computing และ Function-as-a-Service (FaaS) ได้กลายเป็นสถาปัตยกรรมหลักที่นักพัฒนานิยมใช้ FaaS ช่วยให้เราสามารถรันโค้ดเฉพาะส่วน (Microservices) โดยไม่ต้องจัดการโครงสร้างพื้นฐาน (Infrastructure) ที่ซับซ้อนอีกต่อไป

สำหรับระบบฐานข้อมูลที่แข็งแกร่งและเชื่อถือได้อย่าง PostgreSQL การผสานรวม PostgreSQL เข้ากับ Serverless FaaS จึงเป็นทางเลือกที่ทรงพลังอย่างยิ่ง เพราะเราสามารถใช้ความสามารถของ PostgreSQL เช่น Stored Procedures, Functions, และ Triggers ในการกำหนดตรรกะทางธุรกิจ (Business Logic) ให้ทำงานได้โดยอัตโนมัติเมื่อมีเหตุการณ์ (Event) เกิดขึ้น

💡 PostgreSQL ในบริบทของ Serverless และ FaaS

เมื่อเราพูดถึงการใช้ PostgreSQL ในสถาปัตยกรรม Serverless เราไม่ได้หมายถึงการรัน PostgreSQL ทั้งระบบใน Serverless แต่หมายถึงการใช้ฟังก์ชันของ PostgreSQL เป็น ‘หน่วยประมวลผล’ (Processing Unit) ที่ถูกเรียกใช้งานจากภายนอก (เช่น จาก AWS Lambda, Google Cloud Functions หรือ API Gateway) เพื่อให้เกิดการประมวลผลที่รวดเร็วและมีประสิทธิภาพสูง

⚙️ การทำงานร่วมกันของ PostgreSQL และ FaaS

โดยทั่วไปแล้ว กระบวนการจะเป็นดังนี้:

  • Event Trigger: ระบบภายนอก (เช่น การอัปโหลดไฟล์, การส่งข้อความ) จะสร้าง Event ขึ้นมา
  • FaaS Execution: ฟังก์ชัน Serverless จะถูกเรียกใช้งานโดย Event นั้น
  • Database Interaction: ฟังก์ชัน Serverless จะส่งคำสั่ง (เช่น การเรียกใช้ฟังก์ชันที่สร้างไว้) ไปยัง PostgreSQL เพื่อให้ PostgreSQL ทำการประมวลผลข้อมูลที่ซับซ้อนภายในตัวมันเอง

ตัวอย่างการใช้งานที่พบบ่อยคือการสร้างฟังก์ชันที่รับข้อมูลดิบ (Raw Data) เข้ามา แล้วให้ PostgreSQL ทำการแยกวิเคราะห์ (Parsing) และจัดเก็บข้อมูลที่ผ่านการตรวจสอบแล้ว

💻 ตัวอย่างโค้ด: การประมวลผลรายการข้อมูลใน PostgreSQL Function

สมมติว่าเราต้องการฟังก์ชันที่รับสตริงที่คั่นด้วยเครื่องหมายคอมมา (CSV string) และทำการแยกข้อมูลเหล่านั้นเพื่อบันทึกเป็นรายการ (Array) ในตาราง:

SQL

-- สร้างฟังก์ชันที่รับสตริง CSV และคืนค่าเป็น Array ของ Text<br>CREATE OR REPLACE FUNCTION process_csv_data(csv_input TEXT) RETURNS TEXT[] AS $$<br>DECLARE<br>    result_array TEXT[];<br>BEGIN<br>    -- ใช้ฟังก์ชัน string_to_array เพื่อแยกสตริงตามเครื่องหมายคอมมา<br>    SELECT array_agg(unnest(string_to_array(csv_input, ',')))<br>    INTO result_array;<br>    RETURN result_array;<br>END;$$ LANGUAGE plpgsql;<br><br>-- การเรียกใช้ฟังก์ชัน (จำลองการเรียกจาก Serverless Endpoint)<br>SELECT process_csv_data('1,2,3');

ฟังก์ชันนี้แสดงให้เห็นว่า PostgreSQL สามารถจัดการตรรกะที่ซับซ้อน เช่น การแยกสตริง (String Splitting) ได้อย่างสมบูรณ์ ทำให้โค้ดที่อยู่ภายนอก (FaaS) ไม่จำเป็นต้องรับภาระในการจัดการข้อมูลที่ซับซ้อนเหล่านั้น

✅ บทสรุป: ประโยชน์ของการรวมกัน

การผสาน Serverless FaaS เข้ากับ PostgreSQL ทำให้เราได้ระบบ Backend ที่มีประสิทธิภาพสูงสุด คุณได้รับความยืดหยุ่นในการขยายขนาดของ FaaS และความน่าเชื่อถือในการจัดการข้อมูลของ PostgreSQL การออกแบบสถาปัตยกรรมเช่นนี้ช่วยลดภาระในการดูแลเซิร์ฟเวอร์ (Operational Overhead) และทำให้ทีมพัฒนาสามารถมุ่งเน้นไปที่การสร้างคุณค่าทางธุรกิจ (Business Value) ได้อย่างเต็มที่