นักพัฒนาแชร์ประสบการณ์จริงกับระบบ Workflow ที่ใช้ Postgres

ทีมชุมชน BigGo
นักพัฒนาแชร์ประสบการณ์จริงกับระบบ Workflow ที่ใช้ Postgres

ชุมชนนักพัฒนากำลังพูดคุยกันอย่างกระตือรือร้นเกี่ยวกับประสบการณ์ของพวกเขากับระบบ workflow ที่ใช้ Postgres โดยเฉพาะ DBOS ซึ่งเป็นทางเลือกแทนแพลตฟอร์มการจัดการที่ซับซ้อนกว่าอย่าง Temporal การสนทนาเหล่านี้เผยให้เห็นข้อมูลเชิงลึกเชิงปฏิบัติเกี่ยวกับความท้าทายในการนำไปใช้งาน กลยุทธ์การย้ายระบบ และการแลกเปลี่ยนระหว่างแนวทางการจัดการ workflow ที่แตกต่างกัน

เครื่องมือ Workflow อื่นๆ ที่ใช้ Postgres:

  • DBOS - ไลบรารี่โอเพนซอร์สสำหรับแอปพลิเคชันที่มีอยู่แล้ว
  • pgflow.dev - สร้างบน pgmq ด้วยตรรกะที่เน้นฐานข้อมูลเป็นหลัก
  • Graphile Worker - ตัวประมวลผลงานเบื้องหลังที่กำลังถูกแทนที่ด้วยโซลูชันใหม่ๆ
  • Azure Durable Functions - โมเดลที่คล้ายกันโดยใช้บริการจัดเก็บข้อมูลของ Azure

เรื่องราวความสำเร็จในการย้ายระบบและความง่ายในการนำไปใช้

นักพัฒนารายงานการเปลี่ยนไปใช้ระบบ workflow ที่ใช้ Postgres ที่ราบรื่นอย่างน่าประหลาดใจ นักพัฒนาคนหนึ่งแชร์ประสบการณ์การย้ายจาก Graphile Worker ไปยัง DBOS โดยทำการย้ายระบบเสร็จสิ้นในเวลาเพียง 30 นาที เวลาในการนำไปใช้งานที่รวดเร็วนี้ตรงกันข้ามอย่างสิ้นเชิงกับระบบที่ซับซ้อนกว่าที่ต้องการการเปลี่ยนแปลงทางสถาปัตยกรรมอย่างมีนัยสำคัญ

จุดดึงดูดอยู่ที่แนวทางการนำไปใช้แบบค่อยเป็นค่อยไป ไม่เหมือนกับระบบที่ต้องการการปรับปรุงโครงสร้างพื้นฐานทั้งหมด โซลูชันที่ใช้ Postgres สามารถเสียบเข้ากับ codebase ที่มีอยู่ได้โดยมีการรบกวนน้อยที่สุด สิ่งนี้ได้พิสูจน์แล้วว่ามีคุณค่าเป็นพิเศษสำหรับทีมที่จัดการ AI agents และงานเบื้องหลังที่ต้องการความสามารถ checkpoint เพื่อลดต้นทุนและปรับปรุงความน่าเชื่อถือ

จุดเปรียบเทียบระบบ Workflow:

  • เวลาในการติดตั้ง: DBOS (30 นาที) เทียบกับ Temporal (ต้องการการออกแบบสถาปัตยกรรมใหม่)
  • โครงสร้างพื้นฐาน: ใช้ Postgres เป็นฐาน (ฐานข้อมูลที่มีอยู่) เทียบกับ External orchestrators (บริการเพิ่มเติม)
  • ความยากง่ายในการเรียนรู้: การสืบค้น SQL เทียบกับ Specialized workflow APIs
  • กลยุทธ์การย้ายข้อมูล: การปรับใช้แบบค่อยเป็นค่อยไป เทียบกับ การปรับปรุงระบบทั้งหมด
แผนผังขั้นตอนที่แสดงการปฏิสัมพันธ์ระหว่างผู้ปฏิบัติงานและขั้นตอนการทำงาน ซึ่งเป็นตัวแทนของกระบวนการย้ายข้อมูลอย่างรวดเร็วไปสู่ระบบที่ใช้ Postgres เป็นฐาน
แผนผังขั้นตอนที่แสดงการปฏิสัมพันธ์ระหว่างผู้ปฏิบัติงานและขั้นตอนการทำงาน ซึ่งเป็นตัวแทนของกระบวนการย้ายข้อมูลอย่างรวดเร็วไปสู่ระบบที่ใช้ Postgres เป็นฐาน

ข้อได้เปรียบทางเทคนิคที่ดึงดูดความสนใจของนักพัฒนา

การอภิปรายของชุมชนเน้นประโยชน์ทางเทคนิคหลายประการที่ทำให้ Postgres น่าสนใจสำหรับการจัดการ workflow กลไกการล็อกของฐานข้อมูล โดยเฉพาะคำสั่ง FOR UPDATE SKIP LOCKED ช่วยให้สามารถประมวลผลคิวแบบ scalable ได้โดยไม่มีปัญหาการแย่งชิงที่เกิดขึ้นกับการนำไปใช้งานแบบง่าย ๆ

นักพัฒนาชื่นชมความสามารถในการสังเกตการณ์ที่มีมาในตัวซึ่งมาพร้อมกับการจัดเก็บสถานะ workflow ในฐานข้อมูลเชิงสัมพันธ์ คิวรี SQL สามารถดึงข้อมูลเมตาของ workflow เพื่อการตรวจสอบและการแก้ไขข้อบกพร่องได้อย่างง่ายดาย ภาษาคิวรีที่คุ้นเคยช่วยขจัดเส้นโค้งการเรียนรู้ที่เกี่ยวข้องกับระบบ workflow เฉพาะทาง

เมื่อเร็ว ๆ นี้ย้ายงานเบื้องหลังบางส่วนจาก graphile worker ไปยัง DBOS แนะนำจริง ๆ เพราะความเรียบง่าย ใช้เวลาแค่ครึ่งชั่วโมง

คุณสมบัติหลักของ Postgres สำหรับ Workflows:

  • FOR UPDATE SKIP LOCKED - ช่วยให้สามารถประมวลผลคิวแบบพร้อมกันได้โดยไม่เกิดการแย่งชิงทรัพยากร
  • โมเดลข้อมูลเชิงสัมพันธ์พร้อม secondary indexes - รองรับการค้นหาข้อมูล metadata ของ workflow อย่างมีประสิทธิภาพ
  • ACID transactions - ให้การรับประกันการดำเนินงานแบบ exactly-once สำหรับการทำงานกับฐานข้อมูล
  • SQL observability ในตัว - ช่วยให้สามารถติดตามและแก้ไขปัญหาสถานะของ workflow ได้อย่างง่ายดาย
ตัวอย่างคำสั่ง SQL ที่แสดงการใช้งาน FOR UPDATE SKIP LOCKED clause เพื่อเน้นข้อได้เปรียบทางเทคนิคของ Postgres สำหรับการจัดการ workflow
ตัวอย่างคำสั่ง SQL ที่แสดงการใช้งาน FOR UPDATE SKIP LOCKED clause เพื่อเน้นข้อได้เปรียบทางเทคนิคของ Postgres สำหรับการจัดการ workflow

การเปรียบเทียบทางเลือกและการแลกเปลี่ยน

ชุมชนกำลังเปรียบเทียบโซลูชัน workflow ที่แตกต่างกันอย่างกระตือรือร้น โดยชั่งน้ำหนักปัจจัยต่าง ๆ เช่น ความซับซ้อน ข้อกำหนดโครงสร้างพื้นฐาน และความพยายามในการย้ายระบบ แม้ว่านักพัฒนาบางคนจะยอมรับว่าแพลตฟอร์มที่มีชื่อเสียงอย่าง Temporal เสนอความสามารถในการสังเกตการณ์และอินเทอร์เฟซผู้ใช้ที่เหนือกว่า แต่มักจะต้องการการเปลี่ยนแปลงทางสถาปัตยกรรมที่สำคัญกว่า

การพิจารณาเรื่อง latency ยังมีอิทธิพลต่อการตัดสินใจด้วย กรณีการใช้งานบางอย่างได้ประโยชน์จาก overhead ที่ลดลงของระบบที่ใช้ Postgres เมื่อเทียบกับ orchestrator ภายนอก อย่างไรก็ตาม นักพัฒนาสังเกตว่าการเลือกมักจะขึ้นอยู่กับข้อกำหนดเฉพาะและโครงสร้างพื้นฐานที่มีอยู่

ระบบนิเวศที่เกิดขึ้นใหม่และความเป็นไปได้ในการรวมระบบ

เธรดการอภิปรายเผยให้เห็นความสนใจในการรวมระบบ workflow ที่ใช้ Postgres กับเครื่องมืออื่น ๆ นักพัฒนากำลังสำรวจความเป็นไปได้ในการรวมระบบกับเฟรมเวิร์กการจัดการข้อมูลอย่าง Dagster โดยเห็นศักยภาพสำหรับฟังก์ชันการทำงานที่เสริมกันซึ่งจัดการกับแง่มุมที่แตกต่างกันของไปป์ไลน์การประมวลผลข้อมูลที่ซับซ้อน

ชุมชนยังค้นพบทางเลือกที่มีน้ำหนักเบาและสร้างเครื่องมือเพิ่มเติมรอบ ๆ Postgres workflows นักพัฒนาบางคนกำลังสร้างภาษาเฉพาะโดเมนและอแด็ปเตอร์เพื่อทำให้ระบบเหล่านี้ใช้งานได้ง่ายยิ่งขึ้นในสภาพแวดล้อมการเขียนโปรแกรมที่พวกเขาต้องการ

การอภิปรายที่กำลังดำเนินอยู่บ่งชี้ว่าระบบ workflow ที่ใช้ Postgres กำลังได้รับความนิยมในฐานะจุดกึ่งกลางระหว่างโปรเซสเซอร์งานเบื้องหลังแบบง่าย ๆ และแพลตฟอร์มการจัดการที่ซับซ้อน โดยเสนอจุดที่เหมาะสมของฟังก์ชันการทำงานและความเรียบง่ายสำหรับกรณีการใช้งานจำนวนมาก

อ้างอิง: Why You Should Build Durable Workflows With Postgres